select,reload,lock tables,replication client,show view,event,process# 给管理员授权
grant select,reload,lock tables,replication client,show view,event,process on *.* to ‘backup’@’localhost’;
sql 文件恢复之全量恢复只要将备份的 sql 文件直接导入数据库即可
sql 文件恢复之基于时间点的恢复
# 然后查看备份的sql文件的 CHANGE MASTER 值,基于该值进行二进制日志的还原
CHANGE MASTER TO MASTER_LOG_FILE=’binlog.000007′, MASTER_LOG_POS=154;
# 查看二进制日志,根据时间点找到误操作前一段时间的二进制日志
cd /var/lib/mysql
mysqlbinlog –base64-output=decode-rows -vv –start-position=154 –database=数据库名 binlog.000008 | grep -B3 DELETE | more
# 记录最早删除记录的节点值,执行日志导出
mysqlbinlog –start-position=开始节点 –stop-position=结束节点 –database=数据库 二进制日志名 > 导出的sql文件名
mysqlbinlog –start-position=154 –stop-position=26158 –database=laravel binlog.000007 > laravel.sql
# 对导出的sql文件进行全量的还原
mysql -uroot -p 数据库 < sql文件
mysqldump逻辑备份:
--single-transaction:开启事务保证备份数据的完整性,innodb 特有-l或--lock-tables:依次锁定备份数据库所有表保证备份数据的完整性-x或--lock-all-table:一次性锁定整个数据库实例所有数据表保证数据完整性--master-data=[1/2]:CHANGE MASTER TO 语句会被写成一个 sql 注释;1不会被写成注释,2写成注释,默认1-R或--routines:备份数据库存储过程--triggers:备份数据库触发器-E或--events:备份数据库调度事件--hex-blob:16进制导出bit列和blob列数据 避免数据文本不可见--tab=path:指定路径下为每个数据库生成两个文件:数据结构、数据-w或--where=过滤条件:过滤指定数据,仅支持单表导出注意:--single-transaction,--lock-tables 参数是互斥的,所以,如果同一个数据库下同时存在 innodb 表和myisam表只能使用 --lock-tables 来保证备份数据的一致性,但是 --lock-tables 只能保证某一备份数据库的完整性,不能保证整个实例备份的完整性
XtraBackup备份:
yum list | grep percona# 安装 libev软件包
yum install percona-xtrabackup-24
# 全量恢复,建议恢复前停止mysql服务,且清空mysql数据文件
innobackupex –datadir=mysql数据路径 –copy-back 备份路径
innobackupex –datadir=/var/lib/mysql –copy-back /home/db_backup/2018-04-21_10-44-22/
# 修改mysql数据路径的权限为777
chmod -R 777 /var/lib/mysql
show plugins;ALTER TABLE 表名 DROP PARTITION 分表名称;范围分区、哈希分区、时间分区# 哈希分区
create table `表名`(
— 数据字段
)engine=INNODB
PARTITION BY HASH(UNIX TIMESTAMP(`字段名称`)) PATITIONS 4;
# 时间分区
create table `表名`(
— 数据字段
)engine=INNODB
PARTITION BY RANGE(YEAR(`字段名称`))(
PARTITION p0 VALUES LESS THAN(2017),
PARTITION p1 VALUES LESS THAN(2018),
PARTITION p2 VALUES LESS THAN(2019)
);
# 查看分区情况
SELECT
table_name,partition_name,partition_description,table_rows
FROM
information_schema.`PARTITIONS`
WHERE table_name = ‘表名’;
# 归档分区数据,mysql数据库版本需要大于等于5.7
— 分区归档操作步骤
— 1.新建和分区表字段一致的数据表 归档表前缀为 arch_
CREATE TABLE `归档表表名`(
)engine=INNODB
— 2.进行数据交换 p0为分区名
ALTER TABLE `原数据表表名` exchange PARTITION p0 WITH TABLE `归档表表名`;
— 3.删除分区,避免对数据的再次写入
ALTER TABLE `原数据表表名` DROP PARTITION p0;
— 4.将归档表引擎设置为 archive在检表语句中mysql引擎必须和原数据表引擎一致,否则无法进行数据交换
ALTER TABLE `归档表表名` ENGINE=ARCHIVE;
配置mysql主服务器:
master 服务器和 slave 服务器都建立一个同名的数据(备份数据库)binlog 日志和设置要发生主从同步数据库,使用 vim 打开 /etc/my.cnf 文件,修改配置如下service mysqld restart;检查配置:登录 mysql 查看 binlog 日志相关参数是否正确
配置mysql从服务器:
binlog 日志和设置要发生主从同步数据库,使用 vim 打开 /etc/my.cnf 文件,修改配置如下检测主从复制配置是否成功:
— 如果结果包含如下参数,则证明主从已经配置成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
到此这篇关于mysql 中的备份恢复,分区分表,主从复制,读写分离的文章就介绍到这了,更多相关mysql 备份恢复内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!