2台MySQL 8.0快速配置主从同步
在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. 安全性
- 考虑实施网络安全措施,例如使用防火墙和加密连接来保护数据。
通过上述设置,您的从服务器将作为一个只读实例运行,适用于查询操作、报告生成或者作为主服务器的热备份。这有助于提高读取性能,同时保持数据的一致性和完整性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!