介绍
恢复完整备份后,您需要还原二进制日志以获取时间点恢复。 备份提供备份可用的二进制日志位置。
操作
1 mysqldump or mysqlpump
binary log信息根据传递给mysqldump/mysqlpump的选项作为CHANGE MASTER TO命令存储在SQL文件中。
1.1 如果使用–master-data参数导出的备份集,则应使用slave的二进制日志
在slave数据库执行备份远程数据库
mysqldump -h <master_host> \
-u backup_user \
--password=<pass> \
--all-databases \
--routines --events \
--single-transaction \
--master-data > dump.sql
在slave数据库恢复数据库
mysql -u<user> -p -h <host> -f < dump.sql
查看备份脚本的信息
shell> head -30 /backups/dump.sql
根据图片显示,现在在master服务器应该使用mysql-bin.000002位置3012恢复
shell> mysqlbinlog --start-position=3012 --disable-log-bin /app/mysql/mysqldata/3306/binlog/mysql-bin.000002 | mysql -u<user> -p -h <host> -f
- : slave服务器
报错
ERROR 1782 (HY000) at line 19: @@SESSION.GTID_NEXT cannot be set to ANONYMOUS when @@GLOBAL.GTID_MODE = ON.
在slave服务器执行
set @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
1.2 如果使用–dump-slave参数导出备份集,则应该使用master日志的位置
在slave数据库执行备份远程数据库
mysqldump -h <master_host> \
-u backup_user \
--password=<pass> \
--all-databases \
--routines --events \
--single-transaction \
--dump-slave > dump.sql
在slave数据库恢复数据库
mysql -u<user> -p -h <host> -f < dump.sql
推演binlog
shell> mysqlbinlog --start-position=463 --disable-log-bin /backups/binlogs/centos7-bin.000001 | mysql -u<user> -p -h <host> -f
注:
1.3 mydumper
通过mydumper在slave服务器备份数据库
mysql> mydumper -h 192.168.200.101 \
-u root \
--password=root \
--use-savepoints \
--trx-consistency-only \
--kill-long-queries \
--outputdir /app/mysql/mysqldata/backup
在slave服务器恢复数据库
mysql> myloader \
--directory=/app/mysql/mysqldata/backup \
--user=root \
--password=root \
--queries-per-transaction=5000 \
--threads=8 \
--overwrite-tables
查看metadata
shell> cat /app/mysql/mysqldata/backup/metadata
如果已从slave属服务器获取二进制日志备份,则应从位置392处的mysql-bin.000004文件开始还原
mysql> SHOW MASTER STATUS
shell> mysqlbinlog --start-position=392 --disable-log-bin /app/mysql/mysqldata/3306/binlog/mysql-bin.000004 | mysql -u<user> -p -h <host> -f