暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU翻译] MySQL 17.3.3.3 从失败的复制权限检查中恢复

原创 由迪 2022-10-11
339

如果针对 PRIVILEGE_CHECKS_USER帐户的权限检查失败,则不会执行事务并且通道的复制将停止。错误的详细信息和最后应用的事务记录在 Performance Schema replication_applier_status_by_worker 表中。请按照以下过程从错误中恢复:

  1. 识别导致错误的复制事件并验证该事件是否是预期的以及是否来自受信任的来源。您可以使用mysqlbinlog 检索和显示在错误发生时记录的事件。有关执行此操作的说明,请参阅 第 7.5 节,“时间点(增量)恢复”
  2. 如果复制的事件不是预期的或不是来自已知和可信的来源,请调查原因。如果您可以确定事件发生的原因并且没有安全考虑,请按照如下所述继续修复错误。
  3. 如果该PRIVILEGE_CHECKS_USER帐户本应被允许执行事务,但配置错误,则授予该帐户缺少的权限,使用FLUSH PRIVILEGES语句或执行 mysqladmin flush-privilegesmysqladmin reload命令重新加载授权表,然后重新启动复制渠道。
  4. 如果需要执行交易,并且您已经验证了它是可信的,但该 账户通常不应该有这个权限,您可以 暂时PRIVILEGE_CHECKS_USER授予该账户所需的权限。PRIVILEGE_CHECKS_USER应用复制的事件后,从帐户中删除权限,并采取任何必要的步骤确保事件不会再次发生(如果可以避免的话)。
  5. 如果事务是一个管理操作,应该只发生在源而不应该发生在副本上,或者应该只发生在单个复制组成员上,跳过它停止复制的服务器上的事务,然后发出 START REPLICA重新启动通道上的复制。为了避免以后出现这种情况,您可以SET sql_log_bin = 0在它们之前和SET sql_log_bin = 1之后发出这样的管理语句,这样它们就不会登录到源上。
  6. 如果事务是不应在源或副本上发生的 DDL 或 DML 语句,则跳过停止复制的服务器上的事务,在最初发生的服务器上手动撤消事务,然后START REPLICA重新启动复制的 问题 。

要跳过事务,如果 GTID 正在使用中,请提交具有失败事务的 GTID 的空事务,例如:

SET GTID_NEXT='aaa-bbb-ccc-ddd:N'; BEGIN; COMMIT; SET GTID_NEXT='AUTOMATIC';

如果 GTID 未使用,请发出SET GLOBAL sql_replica_skip_counterorSET GLOBAL sql_slave_skip_counter语句以跳过该事件。有关使用此替代方法的说明以及有关跳过事务的更多详细信息,请参阅 第 17.1.7.3 节,“跳过事务”

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论