在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;
标签:主库,主从复制,复制,MASTER,MySQL,服务器,从库,GTID From: https://www.cnblogs.com/shujuyr/p/18428316