首页 > 数据库技术 > 详细

MySQL Replication--修复从库上单个数据库的数据

时间:2019-05-05 20:18:56      阅读:137      评论:0      收藏:0      [点我收藏+]

问题描述

由于运维失误,从库未及时设置read_only,导致从库上某库数据被修改,由于整个实例数据量较大,重做成本较高,而该数据库数据较少,因此考虑如何修复该数据库的数据。

 

操作前提

1、复制使用位点同步,未使用MASTER_AUTO_POSITION=1选项

2、程序对数据库操作不存在跨库事务,保证过滤该库的复制事件后不会丢失其他库的事件。

 

处理步骤

1、停止该从库上复制(实际复制已停止)

STOP SLAVE;

 

2、在主库上备份整表数据(注意记录主库位点)

/export/servers/mysql/bin/mysqldump --socket="/export/data/mysql/tmp/mysql.sock" --host="127.0.0.1" --port=3358 --user=mysql_root --password="mysql_root_pws" --default-character-set="utf8" --single-transaction --databases demodb --hex-blob --opt --quick --events --routines --triggers --master-data=2 --set-gtid-purged=OFF > /export/data/mysql/dumps/demodb.sql

 

3、修改从库复制属性,跳过该库相关复制

CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB=(test,demodb)

 

4、将主库上mysqldump出来的文件复制到从库,并查看位点信息

head -n 100 /export/data/mysql/dumps/demodb.sql |grep CHANGE MASTER

输出结果为:
CHANGE MASTER TO MASTER_LOG_FILE=mysql-bin.003001, MASTER_LOG_POS=749489338;

 

5、使用START SLAVE UNTIL将复制执行到备份位点

START SLAVE UNTIL  MASTER_LOG_FILE=mysql-bin.003001, MASTER_LOG_POS=749489338;

 

6、将备份位点的数据更新到从库中

/export/servers/mysql/bin/mysql --host="127.0.0.1" --port=3358 --user=mysql_root --password="mysql_root_pws" --database="mysql" --verbose --batch -vvv </export/data/mysql/dumps/demodb.sql 1>/export/data/mysql/dumps/demodb.log 2>/export/data/mysql/dumps/demodb.err

 

7、修改从库复制属性,去除对该库的过滤复制

CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB=(test)

 

8、开启复制,复制恢复正常

START SLAVE;

 

MySQL Replication--修复从库上单个数据库的数据

原文:https://www.cnblogs.com/gaogao67/p/10815839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!