【问题标题】:pt-table-sync unable to modify binlog_formatpt-table-sync 无法修改 binlog_format
【发布时间】:2015-01-19 15:13:34
【问题描述】:

我有一个生产 percona master-master 集群。辅助主服务器出现复制错误,并且使用 pt-table-sync,我正在尝试同步主服务器。看起来 binlog_format="STATEMENT" 对于任何同步操作都是必需的。以下是 pt-table-sync 错误

pt-table-sync --verbose --dry-run --sync-to-master h=,u=root,p=,D=,t=

失败 /!50108 SET @@binlog_format := 'STATEMENT'/: DBD::mysql::db do failed: Access denied;在 /usr/local/bin 的此操作 [for Statement "/!50108 SET @@binlog_format := 'STATEMENT'/"] 您需要(至少一个)超级权限/pt-table-sync 第 10827 行。

此工具需要 binlog_format=STATEMENT,但当前 binlog_format 设置为 MIXED,尝试更改时出错。如果运行 MySQL 5.1.29 或更新版本,设置 binlog_format 需要 SUPER 权限。在运行此工具之前,您需要手动将 binlog_format 设置为“STATEMENT”。 由于 DESTROY 没有明确的 disconnect() DBD::mysql::db 句柄 enablen_aws;host=...;mysql_read_default_group=client at /usr/ 发出回滚() local/bin/pt-table-sync 第 10830 行。

由于这是生产集群,有没有办法让 pt-table-scan 在不完全中断复制的情况下工作?手动更新两个master上的binlog_format会影响对应slave上的复制吗?

感谢您的帮助。

【问题讨论】:

    标签: percona multi-master-replication


    【解决方案1】:

    由于这是生产集群,有没有办法让 pt-table-scan 工作而不会完全停止复制?

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

    GRANT ALL ON *.* TO 'tablesync'@'%' IDENTIFIED BY 'tablesync';
    

    此用户应同时存在于两台主服务器上,并允许 pt-table-sync 在继续之前设置 binlog_format=STATEMENT(仅用于该会话,而不是全局)。

    在两个 master 上手动更新 binlog_format 会影响相应 slave 上的复制吗?

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

    每个 MySQL 服务器都可以设置自己的并且只能设置自己的二进制日志记录格式(无论 binlog_format 设置为全局范围还是会话范围都是如此)。这意味着更改复制主服务器上的日志格式不会导致从服务器更改其日志格式以匹配。 (当使用 STATEMENT 模式时,binlog_format 系统变量不会被复制;当使用 MIXED 或 ROW 日志模式时,它会被复制,但会被从站忽略。)在复制进行时更改主站上的二进制日志记录格式,或者同时不更改它在从属设备上可能会导致复制失败,并出现错误,例如执行行事件时出错:'无法执行语句:无法写入二进制日志,因为语句是行格式并且 BINLOG_FORMAT = STATEMENT。'

    在您的情况下,如果从属服务器/副本具有 binlog_format=MIXED 并且您已将主服务器更改为 binlog_format=STATEMENT,则从属服务器/副本应该能够处理任何基于 STATEMENT 的复制。

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

    DROP USER 'tablesync'@'%';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      相关资源
      最近更新 更多