实时数据的MySql复制问题
我目前有一个mysql 5.1.45的主控(比如a和B,其中a是主控)复制设置。数据超过15GB。每当我看到重复密钥错误时,我总是将sql_slave_skip_计数器设置为1,然后重新启动slave。在过去的几个月里,这项工作已经完成,现在a和B之间存在很多差异,由于数据量巨大,我无法解决不一致的问题 这就给了我一个重新创建服务器B的选项,我就是这么做的。我从a取了一个垃圾并复制到B。a是生产,我不能承受停机时间。A的二进制日志文件位于bin.001115附近,其中转储后的二进制日志为bin.000012 在这一步之后,我对如何更改这两台服务器上的主日志位置感到困惑。我已经设置了A的主日志文件和位置(从B的显示主状态)和B的主日志文件和位置(从A的显示主状态) 有人能告诉我我是否遵循了正确的方法吗 即使在这之后,我仍然看到重复键错误?是否有任何方法,我可以遵循,以避免这种重复的关键错误。或者是否有任何机制使我可以执行原始数据复制实时数据的MySql复制问题,mysql,Mysql,我目前有一个mysql 5.1.45的主控(比如a和B,其中a是主控)复制设置。数据超过15GB。每当我看到重复密钥错误时,我总是将sql_slave_skip_计数器设置为1,然后重新启动slave。在过去的几个月里,这项工作已经完成,现在a和B之间存在很多差异,由于数据量巨大,我无法解决不一致的问题 这就给了我一个重新创建服务器B的选项,我就是这么做的。我从a取了一个垃圾并复制到B。a是生产,我不能承受停机时间。A的二进制日志文件位于bin.001115附近,其中转储后的二进制日志为bin.
非常感谢您的回复。关于日志位置和将服务器B与a同步的问题:不幸的是,在服务器处于活动状态时进行SQL转储最终不会为您提供一个干净的快照,因为某些表可能在添加到转储之后,转储完成之前就被写入了。您已经声明无法执行完全锁定或停止服务器以复制数据文件,因此可以尝试以下方法: 1) 停止B上的复制/日志记录 2) 在一个平面上获取日志位置 3) 进行SQL转储 4) 从转储还原B 5) 使用配置选项slave\u skip\u errors=all启动B(请参阅:) 6) 在2)中的位置开始B的复制 7) 让B赶上A 8) 阅读注意事项re:防止将来出现重复的密钥错误,如果适用,请更改设置 9) 重新启动B而不出现从属\u跳过\u错误 10) 启动B到A的日志记录 要帮助避免将来出现重复的密钥错误,请执行以下操作: 以您拥有的服务器数量为例(在本例中为2) 设置每个服务器的自动增量=[该数字] 设置每台服务器的自动增量偏移量,从1开始,每台服务器递增1 例如: A的配置
auto_increment_increment=2
auto_increment_offset=1
B的配置
auto_increment_increment=2
auto_increment_offset=2
A将生成自动增量ID,如1,3,5,7,。。。
B将生成2,4,6,8
请记住,如果A和B都在插入可能重复且不是自动增量的密钥(即由代码生成的主键),则从属\u skip\u errors=all或自定义自动增量都不会帮助您保持数据一致.对于日志位置和将服务器B与A同步:不幸的是,在服务器处于活动状态时进行SQL转储最终不会为您提供一个干净的快照,因为某些表可能在添加到转储后、转储完成之前被写入。您已经声明无法执行完全锁定或停止服务器以复制数据文件,因此可以尝试以下方法: 1) 停止B上的复制/日志记录 2) 在一个平面上获取日志位置 3) 进行SQL转储 4) 从转储还原B 5) 使用配置选项slave\u skip\u errors=all启动B(请参阅:) 6) 在2)中的位置开始B的复制 7) 让B赶上A 8) 阅读注意事项re:防止将来出现重复的密钥错误,如果适用,请更改设置 9) 重新启动B而不出现从属\u跳过\u错误 10) 启动B到A的日志记录 要帮助避免将来出现重复的密钥错误,请执行以下操作: 以您拥有的服务器数量为例(在本例中为2) 设置每个服务器的自动增量=[该数字] 设置每台服务器的自动增量偏移量,从1开始,每台服务器递增1 例如: A的配置
auto_increment_increment=2
auto_increment_offset=1
B的配置
auto_increment_increment=2
auto_increment_offset=2
A将生成自动增量ID,如1,3,5,7,。。。
B将生成2,4,6,8
请记住,如果A和B都在插入可能重复且不是自动增量的密钥(即,由代码生成的主键),则从属\u skip\u errors=all和自定义自动增量都不会帮助您保持数据的一致性。在这里附加我的过程 在(主服务器)上:
--主数据进行转储
--跳过从机启动
选项重新安装并重新启动mysqld--跳过从属启动选项
我同意
auto\u increment\u increment
选项。我的两台服务器都是这样设置的。在此附加我的过程
在(主服务器)上:
--主数据进行转储
--跳过从机启动
选项重新安装并重新启动mysqld--跳过从属启动选项