在MySQL中启用GTID(全局事务标识符)模式进行主从复制涉及几个步骤。GTID为每个事务赋予一个唯一的标识符,从而简化了复制过程和故障恢复。以下是启用GTID模式的基本步骤:

首先确保两台数据库目前数据保持一致

1. 准备工作
确保您使用的MySQL版本支持GTID。GTID从MySQL 5.6版本开始支持。

2. 配置主服务器
在主服务器的my.cnf(或my.ini)配置文件中,添加以下配置项:

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

这里的server_id应该是唯一的。

3. 配置从服务器
在从服务器的配置文件中,添加类似的配置:

[mysqld]
gtid_mode = ON
enforce_gtid_consistency = ON
read_only = ON
log-bin=mysql-bin
log_slave_updates
binlog_format = ROW
server_id = 2

确保每个从服务器有一个唯一的server_id。

4. 重启MySQL服务器
更改配置后,需要重启MySQL服务器以使更改生效。
2台都需要重启MySQL
systemctl restart mysqld

5. 在主服务器上创建复制用户
登录到主服务器,然后创建一个用于复制的用户:

CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';

 

6. 设置从服务器
在从服务器上,配置复制:

CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='replica',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION = 1;

这里的MASTER_AUTO_POSITION = 1表示使用GTID模式。

7. 启动从服务器上的复制

START SLAVE;

8. 验证复制状态
在从服务器上执行以下命令,检查复制状态:

SHOW SLAVE STATUS\G

查看Slave_IO_Running和Slave_SQL_Running两个字段,确保它们都是Yes。

注意事项
在启用GTID之前,确保主从服务器的数据是一致的。
执行这些步骤时,建议有数据库管理的经验,因为不正确的操作可能会导致数据丢失或服务中断。
在生产环境中更改配置之前,建议在测试环境中进行尝试。
以上步骤提供了一个基本的指南,但具体的操作可能会根据您的具体环境和需求有所不同。

在MySQL数据库使用GTID(全局事务标识符)进行主从同步时,如果出现问题导致同步出错,您可以通过以下步骤来重新同步从库:

确认主从状态:

确认主库和从库的状态,特别是GTID的执行和复制情况。
使用 SHOW MASTER STATUS; 在主库上查看当前的二进制日志文件和位置。
使用 SHOW SLAVE STATUS\G; 在从库上查看复制状态,特别注意 Last_IO_Errno, Last_IO_Error, Last_SQL_Errno, 和 Last_SQL_Error 字段。
备份从库数据(可选,但推荐):

在进行任何重大操作之前,建议备份从库的数据。
停止从库的复制线程:

在从库上执行以下命令来停止复制:

STOP SLAVE;

 

重置从库的GTID信息:

在从库上重置GTID信息,准备重新同步:

RESET SLAVE ALL;

获取主库的GTID信息:

在主库上执行 SHOW MASTER STATUS; 获取当前的GTID集合。
配置从库指向主库:

在从库上配置主库的连接信息,包括主库的IP地址、端口、用户和密码,以及主库的GTID集合。例如:

CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='复制用户',
MASTER_PASSWORD='复制密码',
MASTER_AUTO_POSITION = 1;

启动从库复制:

在从库上执行以下命令来启动复制:

START SLAVE;

检查复制状态:

再次在从库上执行 SHOW SLAVE STATUS\G; 来确认复制状态。特别关注 Slave_IO_Running 和 Slave_SQL_Running 是否都是 Yes,以及 Seconds_Behind_Master 的值。
请注意,重新同步可能涉及复杂的步骤,尤其是在生产环境中。在执行这些操作之前,请确保您对当前的系统状态有充分的了解,并考虑在数据库管理员或专家的指导下进行。如果对数据的一致性和完整性有特别的要求,务必先进行适当的备份和测试。

当然也可以不用GTID

CHANGE MASTER TO
MASTER_HOST='192.168.145.2',
MASTER_USER='replication',
MASTER_PASSWORD='P@ssw0rd',
MASTER_AUTO_POSITION = 0,
MASTER_LOG_FILE='mysql-bin.004909',MASTER_LOG_POS=20518821;