mysql中如何启用GTID复制_mysql GTID复制配置

来源:这里教程网 时间:2026-02-28 20:28:56 作者:

在MySQL中启用GTID(Global Transaction Identifier)复制可以简化主从复制的管理,避免因binlog位置不一致导致的问题。GTID为每个事务分配唯一标识,使故障切换和节点重建更可靠。以下是配置MySQL GTID复制的详细步骤。

1. 确保MySQL版本支持GTID

GTID功能从MySQL 5.6开始引入,在MySQL 5.7和8.0中更加稳定。建议使用MySQL 5.7及以上版本进行配置。

2. 配置主库(Master)

编辑主库的my.cnfmy.ini配置文件,在[mysqld]部分添加以下参数:

enforce_gtid_consistency = ON:确保所有事务符合GTID要求 gtid_mode = ON:启用GTID模式 log_bin = mysql-bin:开启二进制日志 log_slave_updates = ON:从库也将自己的更新写入binlog(在级联复制中需要) binlog_format = ROW:推荐使用ROW格式以保证事务安全 server_id = 1:设置唯一的服务器ID(主从不能重复)

示例配置:

[mysqld]
server_id = 1
log_bin = mysql-bin
log_slave_updates = ON
binlog_format = ROW
enforce_gtid_consistency = ON
gtid_mode = ON

重启MySQL服务使配置生效。

3. 配置从库(Slave)

同样修改从库的配置文件,设置如下参数:

server_id = 2:必须与主库不同 relay_log = relay-bin:启用中继日志 log_slave_updates = ON(可选) enforce_gtid_consistency = ON gtid_mode = ON binlog_format = ROW

重启从库MySQL服务。

4. 创建复制账号

在主库上创建用于复制的用户:

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

5. 导出主库数据并导入从库

如果从库没有数据,需从主库导出当前状态:

mysqldump --all-databases --master-data=2 --single-transaction --routines --triggers --host=localhost > backup.sql

将备份文件传到从库并导入:

mysql -u root -p

注意:--master-data=2会在dump文件中生成CHANGE MASTER语句,包含binlog位置信息,但在GTID复制中我们不依赖它。

6. 启动GTID复制

登录从库MySQL,执行CHANGE MASTER命令:

CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='your_password',
MASTER_PORT=3306,
MASTER_AUTO_POSITION = 1;

START SLAVE;

MASTER_AUTO_POSITION = 1是关键,表示使用GTID自动定位同步位置。

7. 检查复制状态

运行以下命令查看从库状态:

SHOW SLAVE STATUS\G

关注以下字段:

Slave_IO_Running: Yes Slave_SQL_Running: Yes Retrieved_Gtid_Set:已接收的GTID集合 Executed_Gtid_Set:已执行的GTID集合 Auto_Position: 1:确认启用了自动定位

若出现错误,检查错误信息并根据提示调整配置。

8. 验证GTID复制

在主库执行一个写操作:

CREATE DATABASE test_gtid;
USE test_gtid;
CREATE TABLE t1 (id INT);
INSERT INTO t1 VALUES (1);

登录从库,检查是否同步:

SHOW DATABASES; -- 应看到 test_gtid
SELECT * FROM test_gtid.t1; -- 应看到插入的数据

基本上就这些。只要主从配置正确、网络通畅、账号权限无误,GTID复制就能正常运行。相比传统基于binlog文件+position的复制方式,GTID更易维护,尤其适合高可用架构中的主从切换场景。

相关推荐