/ 文档备忘 / 21浏览

Mysql 主从复制 GTID

使用 GTID 复制有很多优点,特别是在高可用性和数据一致性方面。以下是 GTID 的一些主要优点和缺点,可以根据这些信息决定是否使用 GTID 复制:

优点

  1. 简单的故障恢复
    • 在 GTID 模式下,从服务器能够自动检测并跳过已经执行的事务,使得从一个主服务器切换到另一个主服务器变得更加容易和可靠。
  2. 更好的数据一致性
    • 每个事务都有一个唯一的标识符,确保所有的从服务器按相同顺序执行相同的事务,从而避免数据不一致的问题。
  3. 简化管理
    • GTID 复制消除了手动跟踪二进制日志文件和位置的需求,使复制管理变得更加简单。
  4. 支持多源复制
    • GTID 支持从一个从服务器接收多个主服务器的事务,适合复杂的复制拓扑结构。

缺点

  1. 额外的配置
    • 启用 GTID 需要额外的配置步骤,并且需要在主服务器和从服务器上同时进行更改。
  2. 可能的性能影响
    • 在某些高负载环境中,GTID 复制可能会引入额外的性能开销,需要进行性能测试以确保其适应你的环境。
  3. 不兼容性
    • 如果你的现有系统使用了某些不兼容的特性,可能需要进行一些调整。例如,GTID 模式要求启用一致性事务(enforce-gtid-consistency=ON),这可能需要修改某些应用程序的行为。

适用场景

GTID 复制特别适用于以下场景:

  1. 高可用性架构
    • 需要快速故障切换和最小停机时间的环境,例如主服务器故障时从服务器可以迅速接管。
  2. 复杂复制拓扑
    • 需要管理多个从服务器或者进行多源复制的环境。
  3. 严格数据一致性要求
    • 需要确保所有从服务器和主服务器数据完全一致的场景。

配置 GTID 复制的步骤

如果你决定使用 GTID 复制,以下是详细的配置步骤:

1. 主服务器配置

在主服务器的 MySQL 配置文件中添加以下设置:

[mysqld]
server-id = 1
log-bin = mysql-bin
gtid_mode = ON
enforce-gtid-consistency = ON

2. 从服务器配置

在从服务器的 MySQL 配置文件中添加以下设置:

[mysqld]
server-id = 2
relay-log = relay-log
gtid_mode = ON
enforce-gtid-consistency = ON

3. 重启 MySQL 服务

在主服务器和从服务器上重启 MySQL 服务以使配置生效:

sudo systemctl restart mysql

4. 设置从服务器的复制

在从服务器上,使用 CHANGE MASTER TO 命令设置主服务器的连接信息,并启用 GTID:

CHANGE MASTER TO
    MASTER_HOST='主服务器的IP地址',
    MASTER_USER='replica_user',
    MASTER_PASSWORD='password',
    MASTER_AUTO_POSITION=1;

# mysql 高版本
CHANGE REPLICATION SOURCE TO 
   SOURCE_HOST='192.168.1.2',
   SOURCE_USER='replica_user',
   SOURCE_PASSWORD='your_password',
   SOURCE_AUTO_POSITION = 1, 
   GET_SOURCE_PUBLIC_KEY = 1;

然后,启动复制进程:

START REPLICA;

5. 检查复制状态

使用以下命令检查从服务器上的复制状态:

SHOW REPLICA STATUS\G;

结论

如果你的环境需要高可用性、数据一致性和简化的复制管理,使用 GTID 复制是一个很好的选择。尽管需要一些额外的配置,但它提供的优点通常值得这点额外的工作。你可以根据你的具体需求和环境进行评估,并进行适当的性能测试以确保 GTID 复制能够满足你的要求。