在MySQL主从复制中启用GTID(全局事务标识符)模式

在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_RunningSlave_SQL_Running两个字段,确保它们都是Yes

注意事项

  • 在启用GTID之前,确保主从服务器的数据是一致的。
  • 执行这些步骤时,建议有数据库管理的经验,因为不正确的操作可能会导致数据丢失或服务中断。
  • 在生产环境中更改配置之前,建议在测试环境中进行尝试。

以上步骤提供了一个基本的指南,但具体的操作可能会根据您的具体环境和需求有所不同。

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

  1. 确认主从状态

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

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

    • 在从库上执行以下命令来停止复制:
      STOP SLAVE;
      
  4. 重置从库的GTID信息

    • 在从库上重置GTID信息,准备重新同步:
      RESET SLAVE ALL;
      
  5. 获取主库的GTID信息

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

    • 在从库上配置主库的连接信息,包括主库的IP地址、端口、用户和密码,以及主库的GTID集合。例如:
      CHANGE MASTER TO
      MASTER_HOST='主库IP',
      MASTER_USER='复制用户',
      MASTER_PASSWORD='复制密码',
      MASTER_AUTO_POSITION = 1;
      
  7. 启动从库复制

    • 在从库上执行以下命令来启动复制:
      START SLAVE;
      
  8. 检查复制状态

    • 再次在从库上执行 SHOW SLAVE STATUS\G; 来确认复制状态。特别关注 Slave_IO_RunningSlave_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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ascarl2010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值