在MySQL 8.0中设置主从同步,并启用GTID(全局事务标识符),可以按照以下详细步骤进行:
1. 准备主服务器
编辑MySQL配置文件(通常是my.cnf或my.ini): [mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = row
gtid_mode = ON
enforce_gtid_consistency = ON
server-id:为主服务器设置一个唯一的ID。log_bin:启用二进制日志。binlog_format = row:使用行格式的二进制日志。gtid_mode = ON:启用GTID模式。enforce_gtid_consistency = ON:确保所有事务都与GTID模式兼容。 重启MySQL服务:重启MySQL以使配置生效。 创建复制用户: CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
创建一个用于复制的用户,并授予必要的权限。 记录当前的GTID位置:使用以下命令: SHOW MASTER STATUS;
记录输出中的File和Position,以便在从服务器上使用。
2. 准备从服务器
编辑MySQL配置文件: [mysqld]
server-id = 2
relay_log = mysql-relay-bin
read_only = ON
gtid_mode = ON
enforce_gtid_consistency = ON
server-id:为从服务器设置一个唯一的ID,不同于主服务器。其他设置应与主服务器相同。 重启MySQL服务:重启MySQL以使配置生效。
3. 设置复制
在从服务器上配置复制: CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replica',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION = 1;
使用MASTER_AUTO_POSITION = 1来启用基于GTID的复制。替换master_ip、replica和password为实际的值。 启动复制进程: START SLAVE;
检查复制状态: SHOW SLAVE STATUS\G
确保Slave_IO_Running和Slave_SQL_Running都是Yes。
注意事项
确保主从服务器间网络畅通。时间同步:确保主从服务器的时间同步。安全措施:配置防火墙和加密连接以保护数据。在开始复制之前,确保从服务器的数据与主服务器同步(如果是新设置,从服务器应该是空的或者是主服务器数据的快照)。
完成以上步骤后,你将成功在MySQL 8.0中设置主从同步,并启用了GTID。这样的设置可以提供更稳定和可靠的数据复制机制。
您提到的非常正确。在使用GTID进行MySQL主从同步时,SHOW MASTER STATUS; 的结果确实不像在传统的基于二进制日志位置的复制中那样重要。在GTID模式下,主要关注点是GTID集合,而不是特定的二进制日志文件和位置。
GTID模式下的复制设置
在GTID模式下设置主从复制时,从服务器自动选择正确的事务来复制,而不需要手动指定二进制日志文件和位置。这是因为每个事务都有一个全局唯一的标识符(GTID),从服务器可以使用这些标识符来确定哪些事务需要被复制。
SHOW MASTER STATUS; 的作用
在GTID模式下,执行SHOW MASTER STATUS; 仍然会显示一些有用的信息,如当前的二进制日志文件名和位置,但这些信息在设置和维护GTID复制时不是必须的。主要的目的可能是为了监控和日志管理,而不是复制设置。
设置复制的关键步骤
在GTID模式下,关键步骤在于确保GTID模式被正确开启并在从服务器上配置CHANGE MASTER TO命令时使用MASTER_AUTO_POSITION = 1;。这告诉从服务器自动根据GTID定位并同步数据,而无需手动指定日志文件和位置。
因此,确实,按照GTID模式进行复制时,SHOW MASTER STATUS; 命令的作用并不像在传统复制中那样关键。主要关注点转移到了确保GTID的正确配置和使用上。
如果您希望MySQL的从服务器仅用于读取操作,确保它不会接收写入(插入、更新或删除等)操作,可以通过以下步骤实现:
1. 设置read_only参数
在从服务器的MySQL配置文件中(通常是my.cnf或my.ini),设置read_only为ON。这样做会阻止非超级用户(如root)对数据库进行写操作。只有具有SUPER权限的用户可以进行写操作。
[mysqld]
read_only = ON
重启MySQL服务以使更改生效。
2. 超级用户注意事项
在配置了read_only后,任何具有SUPER权限的账户仍然能够进行写操作。因此,要确保只有受信任的用户拥有此权限,并且在日常操作中避免使用具有SUPER权限的账户进行数据库操作。
3. 监控和维护
监控日志:定期检查MySQL日志以确保没有不期望的写入操作发生。备份和恢复:即使是只读的从服务器,也应定期备份,以防万一需要恢复数据。性能优化:由于从服务器仅用于读取操作,可以针对读取性能进行优化。
4. 保持数据同步
即使从服务器设置为只读,它仍会从主服务器接收数据更新。确保主从同步正常运行,定期检查复制状态。
5. 安全性
考虑实施网络安全措施,例如使用防火墙和加密连接来保护数据。
通过上述设置,您的从服务器将作为一个只读实例运行,适用于查询操作、报告生成或者作为主服务器的热备份。这有助于提高读取性能,同时保持数据的一致性和完整性。