MySQL主从复制高可用实战:GTID复制模式与故障自动切换方案

主从复制是MySQL高可用架构的基础。相比传统的基于日志文件位置的复制,GTID(全局事务标识符)模式自动记录事务位置,故障切换时不需人工比对日志坐标,运维成本低一个量级。本文介绍基于GTID的MySQL主从复制部署流程,以及配合MHA实现自动故障切换的完整方案。

MySQL主从复制模式选型:GTID与传统模式对比

传统复制模式下,从库通过master_log_file和master_log_pos定位同步位置,一旦主库切换或日志轮转,位置容易错位。GTID模式为每个事务分配全局唯一标识,从库只需记录已执行的GTID集合,天然支持多主与级联拓扑,切换时从库自动从断点续传,无需人工定位。新部署环境直接选择GTID模式。

基于GTID的主从复制部署步骤

以MySQL 8.0为例,主库与从库的my.cnf配置如下:

# 主库 my.cnf
[mysqld]
server-id = 1
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = mysql-bin
binlog_format = ROW

# 从库 my.cnf
[mysqld]
server-id = 2
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = mysql-bin
binlog_format = ROW
relay_log = mysql-relay-bin

重启主从实例后,主库创建复制账号并授权:

CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@2026';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

从库初始化数据并建立复制关系。数据量小时直接使用mysqldump备份导入,量大时用xtrabackup做物理备份更快。在从库执行:

CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='192.168.1.10',
  SOURCE_PORT=3306,
  SOURCE_USER='repl',
  SOURCE_PASSWORD='Repl@2026',
  SOURCE_AUTO_POSITION=1;
START REPLICA;

SOURCE_AUTO_POSITION=1即启用GTID自动定位,之后从库通过SHOW REPLICA STATUS的Retrieved_Gtid_Set与Executed_Gtid_Set确认同步进度。

主从复制监控与常见故障处理

主从复制最常遇到的故障是SQL线程停止,原因一般是数据冲突或从库只读限制。排查步骤:SHOW REPLICA STATUS查看Last_SQL_Error字段;定位冲突事务后用sql_slave_skip_counter跳过单条(仅限可接受丢失事务的场景);确认无冲突后START REPLICA恢复。监控脚本应每分钟采集Seconds_Behind_Master,超过阈值触发告警。

基于自动切换的高可用方案落地

主从搭建完成后,单点问题依然存在——主库宕机时读写都要切换到从库。轻量方案是使用MySQL官方配套的MHA或成熟组件MGR(MySQL Group Replication)。MGR在组内通过投票自动选举主节点,应用通过VIP访问,切换期间对业务无感知。生产实践中建议保留每日全量备份,并把binlog按天归档到对象存储,用于误操作后的时间点恢复。整套GTID主从加自动切换方案部署后,数据库可用性可以从单机99.9%提升到99.99%以上。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/mysql-zhu-cong-fu-zhi-gao-ke-yong-shi-zhan-gtid-fu-zhi-mo/

(0)
小编小编
上一篇 21小时前
下一篇 21小时前

相关推荐