文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  从复制权限检查失败中恢复

19.3.3.3 从复制权限检查失败中恢复

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

  1. 识别导致错误的复制事件,并验证该事件是否预期以及是否来自可信来源。您可以使用 mysqlbinlog 检索和显示在错误发生时间周围记录的事件。有关如何执行此操作的说明,请参阅 第 9.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_counter 语句来跳过该事件。有关使用此备用方法的说明以及有关跳过事务的更多详细信息,请参阅 第 19.1.7.3 节,“跳过事务”