Chinaunix
标题:
【已解决】有没有办法让从msyql主动从零开始在主mysql那里同步数据
[打印本页]
作者:
ssshenan2008
时间:
2013-08-12 16:02
标题:
【已解决】有没有办法让从msyql主动从零开始在主mysql那里同步数据
本帖最后由 ssshenan2008 于 2013-08-22 09:40 编辑
当时做主从的时候,我是直接复制mysqldata目录和binlog目录到从mysql
结果等我把主mysql的数据导完了,才发现有错误
导致现在N多表的数据都跟主不一致
现在可行的解决方法是:导出主mysql的数据,再恢复到从mysql,再开启同步
但是这样的话就必须停止生产环境,而且因为数据量很大,时间也比较久
我就想,有没有办法让从msyql主动从零开始在主mysql那里同步数据
这样就主mysql就不用停止了,也不会影响生产环境
因为是生产环境,最终还是停机后 复制主mysql的data目录到从的data目录
感谢各位
作者:
chinafenghao
时间:
2013-08-13 11:05
@ssshenan2008
这个问题网上很多关于主从复制搭建的文章。你数据不一致可能的原因是你主获取binlog pos的时候和你拷贝数据的时机没对。
1、先锁住主库所有的表,禁止写入和修改
2、去主库binlog和pos号
3、备份主库数据
4、取消锁
作者:
tiankafeiwu
时间:
2013-08-13 15:48
这个你可以试下,在change master的时候用主上第一个binglog文件和第一个位置,不过如果后来清理过主上的binglog文件,这样操作肯定不行的。
作者:
tiankafeiwu
时间:
2013-08-13 15:50
回复
2#
chinafenghao
2楼的方法也是我常用的,不过得锁库,得短暂只读
作者:
RogerZhuo
时间:
2013-08-13 16:13
@Linuxer
看你的场景,如果只有一个Master没有Slave,那么你要克隆一个具有致性的镜像(全备份+当时的binlog file+binlog位置信息),就只能从Master获取。
1、只有一个Master,尽量减少对业务的影响,建议使用xtrabackup, 如果你库中较大的myisam表,可以添加--rsync参数,以减少flush tables with read lock的锁定时间,最终备份的binlog信息会放在xtrabackup_binlog_info文本文件中;把备份在Slave上还原,指定此binlog和位置就可以了。
2、如果有其他完整slave要克隆一个新的Slave,那就好做很多
1)也使用xtrabackup添加上--slave-info参数,就会在全备份目录下xtrabackup_slave_info文件中保存备份时,它的Master的binlog和位置信息。
2)使用@chinafenghao的备份步骤,mysqldump+show slave status的Relay_Master_Log_File和Exec_Master_Log_Pos
作者:
ssshenan2008
时间:
2013-08-13 17:52
回复
2#
chinafenghao
嗯,这个是常规的处理办法了,THX
回复
3#
tiankafeiwu
MASTER里面的数据是刚刚导入进去的,不知道可以使用你的方法不
回复
5#
RogerZhuo
嗯 目前只有一个MASTER, 我去看看xtrabackup这个工具,谢谢
作者:
飞鸿无痕
时间:
2013-08-16 00:13
回复
1#
ssshenan2008
看引擎,如果是innodb就好高,MYISAM就会稍微麻烦一点。
作者:
a.a
时间:
2013-08-16 10:08
建议lz,将整个过程贴出来。
这样助于也会遇到同样的问题的朋友们。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2