You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL开启多线程复制时如何获取最新的SQL复制错误?

解决方案

方法1:无需修改配置,直接通过SQL查询错误日志

MySQL 8.0内置了performance_schema.error_log表,默认会持久化存储所有错误日志内容,直接查询该表即可获取复制相关的具体错误,参考查询语句:

SELECT LOGGED, THREAD_ID, PRIO, DATA 
FROM performance_schema.error_log 
WHERE DATA REGEXP 'replica|replication|Slave'
ORDER BY LOGGED DESC LIMIT 20;

查询结果中的DATA字段就包含你在错误日志文件中看到的完整报错内容,比如主键冲突、表结构不一致等具体错误。

方法2:调整配置让错误信息直接展示在系统表和show replica status结果中

8.0.26版本后MySQL新增了replica_preserve_worker_errors系统变量,默认值为OFF,会导致多线程复制模式下worker线程的错误信息被自动清空,只要开启该参数即可保留错误信息:

  • 临时生效(重启MySQL后失效):执行SQL SET GLOBAL replica_preserve_worker_errors = ON;
  • 永久生效:在MySQL配置文件(my.cnf/my.ini)的[mysqld]段添加以下配置,之后重启服务即可:
replica_preserve_worker_errors = ON

开启后:

  • performance_schema.replication_applier_status_by_worker表的LAST_ERROR_NUMBER、LAST_ERROR_MESSAGE字段会保留最近的worker线程报错
  • show replica status\G返回结果的Last_Error字段会同步显示具体的复制错误内容,和8.0.27之前单线程复制的行为一致。

可选降级方案

如果不需要多线程复制的性能收益,也可以直接关闭多线程复制回到旧版本行为:
执行SQL SET GLOBAL replica_parallel_workers = 0;,同时在配置文件添加对应配置永久生效即可。


内容的提问来源于stack exchange,提问作者Nicolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:54:08