mysql.rds_skip_repl_error
跳过并删除 MySQL 数据库只读副本上的复制错误。
语法
CALL mysql.rds_skip_repl_error;
使用说明
主用户必须对只读副本运行 mysql.rds_skip_repl_error
过程。有关此过程的更多信息,请参阅 调用 mysql.rds_skip_repl_error 过程。
要确定是否存在错误,请运行 MySQL SHOW REPLICA STATUS\G
命令。如果复制错误不太严重,您可以运行 mysql.rds_skip_repl_error
以跳过该错误。如果有多个错误,mysql.rds_skip_repl_error
会删除第一个错误,并警告存在其他错误。然后,您可以使用 SHOW REPLICA STATUS\G
确定要对下一个错误采取的适当操作。有关返回值的信息,请参阅 MySQL 文档
以前的 MySQL 版本使用的是 SHOW SLAVE STATUS
,而不是 SHOW REPLICA STATUS
。如果您使用的 MySQL 版本低于 8.0.23,那么请使用 SHOW SLAVE STATUS
。
想要了解更多有关解决 Amazon RDS 的复制错误的信息,请参阅 排查 MySQL 只读副本问题。
复制已停止错误
调用 mysql.rds_skip_repl_error
过程时,您可能会收到一条错误消息,指出副本已关闭或禁用。
如果您对于主实例而不是只读副本运行该过程,则会出现此错误消息。您必须对只读副本运行此过程,该过程才能正常运行。
如果您对只读副本运行该过程,但无法成功重新启动复制,也可能会出现此错误消息。
如果您需要跳过大量错误,复制滞后时间可能会超出二进制日志 (binlog) 文件的默认保留期。在这种情况下,您可能会遇到一个严重错误,这是由于在只读副本上重放之前清除 binlog 文件而造成的。此清除会导致复制停止,而您将无法再调用 mysql.rds_skip_repl_error
命令以跳过复制错误。
您可以增加在源数据库实例上保留 binlog 文件的小时数以缓解该问题。在增加二进制日志保留时间后,您可以重新启动复制进程,并根据需要调用 mysql.rds_skip_repl_error
命令。
要设置 binlog 保留时间,请使用 mysql.rds_set_configuration 过程,并指定 'binlog retention hours'
配置参数以及在数据库集群上保留 binlog 文件的小时数。以下示例将 binlog 文件的保留期设置为 48 个小时。
CALL mysql.rds_set_configuration('binlog retention hours', 48);