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

MariaDB+MaxScale复制报错:Slave I/O线程因@master_binlog_checksum查询失败终止

解决MariaDB 10.0 + MaxScale CDC复制报错:The slave I/O thread stops because a fatal error is encountered when it tried to SELECT @master_binlog_checksum

这个错误的核心原因是MariaDB 10.0引入的binlog校验和特性与MaxScale Binlog Router的配置不兼容,从库尝试查询主端(这里是MaxScale代理的主库)的@master_binlog_checksum变量时失败,导致I/O线程停止。咱们一步步来修复:

一、问题根源拆解

MariaDB 10.0开始默认启用binlog_checksum=CRC32,但MaxScale的Binlog Router如果没有正确开启MariaDB 10兼容模式,或者主库、从库的校验和配置未对齐,就会触发这个查询失败的错误。

二、分步解决方案

1. 调整MariaDB主库的binlog校验和配置

先临时关闭主库的binlog校验和(后续如需开启,需确保全链路配置一致):

-- 临时全局生效(无需重启主库)
SET GLOBAL binlog_checksum = 'NONE';

然后编辑主库的my.cnf(或my.ini),添加以下配置确保重启后生效:

binlog_checksum = NONE

2. 修正MaxScale的Binlog Router配置

检查你的maxscale.cnf,确保Replication服务的配置正确适配MariaDB 10.0:

[Replication]
type=service
router=binlogrouter
version_string=10.0.27-log
user=myuser
passwd=mypwd
server_id=3
binlogdir=/var/lib/maxscale
# 明确开启MariaDB 10兼容模式,这是解决问题的关键
mariadb10-compatibility=1

注意:你之前的配置把mariadb10-compatibility=1写在router_options里,单独拎出来配置更清晰,避免解析问题。修改后重启MaxScale服务:

systemctl restart maxscale

3. 重新配置从库复制

先停止当前的复制线程:

STOP SLAVE;

然后重新执行CHANGE MASTER TO,明确指定主库的binlog校验和为NONE,和主库配置对齐:

CHANGE MASTER TO 
MASTER_HOST='192.168.56.102', 
MASTER_PORT=5308, 
MASTER_USER='myuser', 
MASTER_PASSWORD='mypwd', 
MASTER_LOG_POS=328, 
MASTER_LOG_FILE='mariadb-bin.000018',
MASTER_BINLOG_CHECKSUM = 'NONE';

最后启动复制线程:

START SLAVE;

4. 验证修复结果

执行以下命令检查复制状态:

SHOW SLAVE STATUS\G

重点关注两个关键指标:

  • Slave_IO_Running: Yes(I/O线程恢复正常运行)
  • Last_IO_Error: (无错误信息)

三、额外注意事项

  • 如果后续需要开启binlog校验和,必须确保MariaDB主库、MaxScale、从库三者的binlog_checksum配置完全一致(建议统一设为CRC32)。
  • 确保myuser账号拥有足够的权限:REPLICATION SLAVE、REPLICATION CLIENT、SELECT(读取系统变量需要)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:45:32