MySQL用GTID方式恢复数据

MySQL用GTID方式恢复数据

1、先登录MySQL系统查看当前的binlog日志
# 找到binlog文件路径
mysql> show master status;
# 查看gtid号,每个gtid号都在执行语句之前生成(切记)
mysql> show binlog events in 'mysql-bin.000004'  
2、开始导出数据
[root@test ~]# mysqlbinlog  --skip-gtids --include-gtids='b09afa63-11d5-11eb-89c4-000c29f7a041:1:1-3' /opt/app/mysql/data/mysql-bin.000004 >/tmp/restore.sql# SET @@SESSION.GTID_NEXT= 'b09afa63-11d5-11eb-89c4-000c29f7a041:1'/*!*/; gtid
# --skip-gtids  表示导出忽略原因的gtid号,恢复时生成新的gtid号。不然导入的时候报错,幂等性问题
# b09afa63-11d5-11eb-89c4-000c29f7a041:1:1-3   b09afa63-11d5-11eb-89c4-000c29f7a041:1是uuid号,1-3是uuid后面的数字,表示哪个段开始导出到结束。
3、开始恢复数据
mysql> set sql_log_bin=0;  # 本次恢复不记录日志
mysql> source /tmp/restore.sql;
mysql> set sql_log_bin=1;  # 开启记录,切记需要打开
其他知识点一
mysqlbinlog  --skip-gtids --include-gtids='xxxx-xxx-xxx-xxx--xxx:1-3' --exclude-gtids='b09afa63-11d5-11eb-89c4-000c29f7a046:6','b09afa63-11d5-11eb-89c4-000c29f7a047:7'   /databases/mysql-3306/binlog/mysql-bin.000004 >/tmp/restore.sql#  --exclude-gtids='','' 排除不导出的数据,多个的话逗号隔开
其他知识点二
1、gtid组成(server_uudi:tid,server__uuid?)
2、tid是一个自动增长的数据,从1开始(每个binlog会自动从1开始)
3、gtid幂等性:如果有gtid的日志恢复时,检查当前系统中是否有相同的gtid号,如果有相同则自动跳过,会影响主从复制
开启gtid
# 找到MySQL的配置文件my.cnf,添加如下两行
vim /opt/app/mysql-3306/etc/my.cnf
gtid-mode = on  # 开启gtid模式
enforce-gtid-consistency = true  # 强制gtid一致性


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部