理解多源复制架构
在多源复制中,每个主库对应一个独立的复制通道(Channel),每个通道有自己的一组中继日志、IO线程和SQL线程。这意味着:
每个通道可以独立运行、停止或出错 升级时必须考虑所有通道的状态 版本兼容性需覆盖所有主库与从库之间的通信 因此,升级前要确认当前拓扑结构、各主库 MySQL 版本、从库版本以及 GTID 使用情况。制定升级策略
推荐采用“先主后从”或“逐级滚动”的方式,避免服务中断:
优先升级从库:由于多源复制的从库接收多个主库的数据,建议先将从库升级到目标版本,前提是新版本兼容旧主库的协议 再依次升级各个主库 若主库之间也存在复制关系,需按拓扑顺序升级 注意:MySQL 官方建议主库版本不低于从库版本,因此从库升级前必须确认其支持与当前主库版本的复制兼容性。执行升级步骤
以下是安全升级多源复制从库的操作流程:
-
备份所有节点数据:包括所有主库和从库,使用 mysqldump 或物理备份工具(如 Percona XtraBackup)
检查 GTID 兼容性:如果启用了 GTID,确保新版本支持原有 GTID 格式。MySQL 5.7+ 到 8.0+ 需特别注意 gtid_executed 表结构变化
停止从库复制通道:
STOP SLAVE;此命令会停止所有通道。也可指定通道:
STOP SLAVE FOR CHANNEL 'source1';关闭 MySQL 服务:
mysqladmin shutdown执行软件升级:替换二进制文件或使用包管理器升级(yum/dpkg),注意保留原配置文件 启动 MySQL 并运行 mysql_upgrade:
mysqld --upgrade=FORCE或在启动后执行:
mysql_upgrade此步更新系统表,修复元数据不一致问题 验证复制状态:逐个启动通道并检查是否正常:
START SLAVE FOR CHANNEL 'source1';使用 SHOW REPLICA STATUS FOR CHANNEL 'source1'\G 查看 Seconds_Behind_Master 和错误信息
