Code Bye

主从数据不一致,需要重新关联

情况是这样的:目前的库是一主两从,大部分的修改和读操作都是在主库上完成的,两个从库基本只做热备之用。前段时间由于重启主库,所以业务人员临时启用了其中一台从库做为主库,并对从库进行了写入操作。后来主库重启好后,他们又让原来的主库恢复了主库的职能,之前暂时做从的数据库就断开了与主库的主从关系。现在他们需要本人把断开的从库跟主库重新关联上,并表示一切的数据都以原来的主库为准,所以可以把从库上的东西都删掉,然后导入主库的数据。
目前有几个问题,一个是需要整个导出的库很大,光表数据大小就有61G,数据库目录的大小有100多G,其中ibdata1文件就占了85G;
第二个是数据库里的表只有一张用的是MYISAM引擎,其他都用的是INNODB引擎,所以不能使用xtrabackup工具来导出。
然后本人想到了四种方案:
一是使用Innobackupex+binlog日志还原从库数据;
二是使用mysqldump+binlong日志来还原从库;
三是直接拷贝从库上的数据然后scp到需要重新关联的从库;
四是使用percona-toolkit工具来重构数据,使主从数据库数据一致。

本人是倾向于mysqldump+binlong,但是本身数据库就很大,估计光导出就要很久了。
然后本人又看网上说用Innobackupex导出大数据更快,但是毕竟要在正式环境上安装工具,怕对现网环境造成影响
第三种方案需要期间停止全部从库,然后转移数据,这对空间和时间都有很大的要求,恐怕不容易满足。而且不知道把从库都先停止了会不会让原本没有问题的从库出现新问题
第四种方案貌似需要在主库上进行操作,而且会重构主库上的数据,本人觉得风险更大。所以正在纠结中,不知道该怎么办
不知各位有何意见,或有什么新的方案能够一起分享下呢?

解决方案

30

本人记得xtrabackup备份MyISAM的条件是锁库,另外官网也是这么说的“In the case of MyISAM a “read lock” is needed.”。
其实假如主库有一段时间没人用,而且全部binlog又都在,可以考虑从库从头开始同步,不过这时主从库压力都比较大,所以需要主库有一段时间没人用或压力很小。

10

既然从库没有使用  那肯定第三种方法   停止第二个从库进程   拷贝第二个从库数据目录到第一个从库  然后启动第二个从库  在启动第一个从库

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明主从数据不一致,需要重新关联