配置mysql GTID复制需主从库启用GTID模式,设置唯一server-id,开启binlog与log-slave-updates,主库创建复制账号,从库使用MASTER_AUTO_POSITION=1自动同步,确保数据一致后启动复制并验证状态。

MySQL的GTID(Global Transaction Identifier)复制是一种基于事务标识符的复制方式,能够简化主从复制的管理,避免重复执行事务,提升故障切换的可靠性。配置GTID复制需要在主库和从库上进行一系列设置,以下是完整的配置方法。
启用GTID复制的前提条件
确保主从服务器使用相同版本的MySQL(建议5.7及以上),且数据一致性已同步。GTID复制要求binlog格式为ROW,并开启log_slave_updates。
- 主从节点必须启用二进制日志(log-bin)
- 每个实例需设置唯一的server-id
- 建议关闭自动提交前的旧风格复制相关参数
主库配置步骤
修改主库的my.cnf配置文件,在[mysqld]段中添加以下内容:
server-id = 1 log-bin = mysql-bin binlog-format = ROW gtid-mode = ON enforce-gtid-consistency = ON
重启MySQL服务使配置生效。登录MySQL,创建用于复制的账号:
CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘password‘;
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;
FLUSH PRIVILEGES;
查看主库状态获取GTID信息:
SHOW MASTER STATUS;
从库配置步骤
修改从库的my.cnf文件,配置如下:
server-id = 2 log-bin = mysql-bin binlog-format = ROW relay-log = relay-log gtid-mode = ON enforce-gtid-consistency = ON log-slave-updates = ON read-only = ON
重启从库MySQL服务。进入MySQL客户端,执行CHANGE MASTER命令:
CHANGE MASTER TO
MASTER_HOST=’主库IP’,
MASTER_USER=’repl’,
MASTER_PASSword=’password’,
MASTER_PORT=3306,
MASTER_AUTO_POSITION = 1;
注意:MASTER_AUTO_POSITION = 1 表示启用基于GTID的自动定位,无需手动指定binlog文件和位置。
启动并验证复制
启动复制线程:
START SLAVE;
查看复制状态:
SHOW SLAVE STATUSG
重点关注以下字段:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Retrieved_Gtid_Set:接收到的GTID集合
- Executed_Gtid_Set:已执行的GTID集合
如果两个线程均为Yes,且无错误信息,说明GTID复制已正常运行。
基本上就这些。只要配置正确,GTID能自动处理事务一致性,主从切换时也更方便。注意备份关键数据,避免误操作影响服务。不复杂但容易忽略细节。