首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法修改binlog_format的pt表同步

无法修改binlog_format的pt表同步
EN

Stack Overflow用户
提问于 2014-11-21 12:57:11
回答 1查看 1.2K关注 0票数 1

我有一个生产percona的主-主集群。辅助母版有一个复制错误,并且使用pt-table- sync,我正在尝试同步主程序.看起来binlog_format=“语句”对于任何同步操作都是必需的。下面是pt表同步错误。

pt-表-同步-详细-干式-同步-主h=,u=root,p=,D=,t=

失败的/!50108 SET @@binlog_format :=‘语句’/:DBD::mysql::DBD失败:访问被拒绝;对于语句"/!50108 SET @@binlog_format :=‘语句’/“at /usr/local/bin/pt表-同步行10827,您需要(至少一个)超级特权。

此工具需要binlog_format=STATEMENT,但当前binlog_format设置为混合,并且在试图更改该工具时发生错误。如果运行MySQL 5.1.29或更高版本,设置binlog_format需要超级特权。在运行此工具之前,您需要手动将binlog_format设置为“语句”。发出rollback()是由于没有显式断开DBD::mysql::db的销毁而在/usr/local/bin/pt表同步行10830处处理empowern_aws;host=...;mysql_read_default_group=client。

由于这是生产集群,是否有办法使pt-表扫描工作,而不完全制动复制?手动更新两个主服务器上的binlog_format是否会影响相应的从服务器上的复制?

感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-05-21 02:01:24

由于这是生产集群,是否有办法使pt-表扫描工作,而不完全制动复制?

我想你的意思是pt-table-sync,是的,您将能够使它工作(如果您还没有)。我不会使用根用户,我通常创建一个临时用户来执行表同步操作:

代码语言:javascript
复制
GRANT ALL ON *.* TO 'tablesync'@'%' IDENTIFIED BY 'tablesync';

这个用户应该出现在两个主服务器上,并允许pt-table同步在继续之前设置binlog_format=STATEMENT (仅用于该会话,而不是全局的)。

手动更新两个主服务器上的binlog_format是否会影响相应的从服务器上的复制?

见- https://dev.mysql.com/doc/refman/5.1/en/binary-log-setting.html

每个MySQL服务器都可以设置自己的二进制日志格式,而且只能设置自己的二进制日志格式(无论binlog_format设置为全局还是会话范围)。这意味着更改复制母版上的日志记录格式并不会导致从节点更改其日志记录格式以匹配。(当使用语句模式时,binlog_format系统变量不会被复制;当使用混合或行日志记录模式时,它会被复制,但会被从服务器忽略。)在复制过程中更改主服务器上的二进制日志记录格式,或者在从服务器上不对其进行更改,都会导致复制失败,导致错误执行行事件:“无法执行语句:不可能写入二进制日志,因为语句是行格式和BINLOG_FORMAT = statement”。

在您的情况下,如果从/副本有binlog_format=MIXED,并且您已经将主程序更改为binlog_format=STATEMENT,那么从/副本应该能够处理任何基于语句的复制。

编辑:完成后不要忘记删除临时用户!

代码语言:javascript
复制
DROP USER 'tablesync'@'%';
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27061962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档