MySQL 8中引入的全局事务标识(GTID)具有以下优点:
- 简化配置和管理:使用GTID复制可以简化复制配置和管理过程。不再需要手动设置和管理复制位点,只需将备库链接到主库并开始复制。
- 自动故障恢复:GTID复制使得在主备切换或故障恢复时更加简单。备库可以通过记录已经应用的GTID来确定从哪个点开始恢复。这样可以快速恢复到故障发生前的状态。
- 避免数据重复复制:GTID复制确保每个事务只被复制一次,避免了数据重复复制的问题。这可以提高复制的效率和可靠性。
- 跨版本兼容性:GTID复制在MySQL 5.6和MySQL 5.7之间是兼容的,这意味着可以将一个5.6版本的主库切换到一个5.7版本的备库,而无需重新同步整个数据库。
- 简化拓扑变更:GTID复制简化了复制拓扑的变更过程。当添加或删除备库时,只需将备库链接到主库并开始复制,不再需要手动设置和管理复制位点。
总之,GTID复制为MySQL的复制提供了更简单、更可靠的解决方案,减少了管理和维护的工作量,并提高了故障恢复的速度和可靠性。它是MySQL 8中一个重要的改进和升级。
当配置 MySQL GTID 复制时,需要进行以下步骤:
1)在主服务器上配置 GTID 复制:
打开主服务器的配置文件 my.cnf(Linux)或 my.ini(Windows)。
确保以下配置项存在或添加:
server_id=1
enforce_gtid_consistency=1
保存并关闭配置文件。
重启主服务器使配置生效。
2)在从服务器上配置 GTID 复制:
打开从服务器的配置文件 my.cnf(Linux)或 my.ini(Windows)。
确保以下配置项存在或添加:
server_id=2
enforce_gtid_consistency=1
保存并关闭配置文件。
重启从服务器使配置生效。
3)在主服务器上创建复制用户并设置密码:
打开主服务器的 MySQL 命令行客户端。
使用以下命令创建一个新的复制用户:
CREATE USER '复制用户'@'从服务器IP' IDENTIFIED BY '复制用户密码';
授予复制用户复制权限:
GRANT REPLICATION SLAVE ON *.* TO '复制用户'@'从服务器IP';
刷新权限使更改生效:
FLUSH PRIVILEGES;
关闭 MySQL 命令行客户端。
4)在从服务器上设置主服务器信息并启动复制:
打开从服务器的 MySQL 命令行客户端。
执行以下语句设置主服务器信息:
CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_PORT=主服务器端口, MASTER_USER='复制用户', MASTER_PASSWORD='复制用户密码', MASTER_AUTO_POSITION=1;
执行以下命令开启复制:
START SLAVE;Plain Text
5)检查 GTID 复制状态:
在从服务器上执行以下命令,查看主服务器和复制状态:
SHOW MASTER STATUS;
SHOW SLAVE STATUS;
SHOW MASTER STATUS 显示主服务器的 GTID 信息和二进制日志位置。
SHOW SLAVE STATUS 显示从服务器的 GTID 复制状态,包括复制是否运行和延迟等信息。
通过完成以上步骤,配置了 MySQL GTID 复制。这将确保复制的可靠性、简化配置,并提供自动故障切换和数据一致性。