2台MySQL 8.0快速配置主从同步

在MySQL 8.0中设置主从同步,并启用GTID(全局事务标识符),可以按照以下详细步骤进行:

1. 准备主服务器

  1. 编辑MySQL配置文件(通常是my.cnfmy.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模式兼容。
  2. 重启MySQL服务:重启MySQL以使配置生效。

  3. 创建复制用户

    CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
    
    • 创建一个用于复制的用户,并授予必要的权限。
  4. 记录当前的GTID位置:使用以下命令:

    SHOW MASTER STATUS;
    
    • 记录输出中的FilePosition,以便在从服务器上使用。

2. 准备从服务器

  1. 编辑MySQL配置文件

    [mysqld]
    server-id = 2
    relay_log = mysql-relay-bin
    read_only = ON
    gtid_mode = ON
    enforce_gtid_consistency = ON
    
    • server-id:为从服务器设置一个唯一的ID,不同于主服务器。
    • 其他设置应与主服务器相同。
  2. 重启MySQL服务:重启MySQL以使配置生效。

3. 设置复制

  1. 在从服务器上配置复制

    CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='replica',
    MASTER_PASSWORD='password',
    MASTER_AUTO_POSITION = 1;
    
    • 使用MASTER_AUTO_POSITION = 1来启用基于GTID的复制。
    • 替换master_ipreplicapassword为实际的值。
  2. 启动复制进程

    START SLAVE;
    
  3. 检查复制状态

    SHOW SLAVE STATUS\G
    
    • 确保Slave_IO_RunningSlave_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.cnfmy.ini),设置read_onlyON。这样做会阻止非超级用户(如root)对数据库进行写操作。只有具有SUPER权限的用户可以进行写操作。

[mysqld]
read_only = ON

重启MySQL服务以使更改生效。

2. 超级用户注意事项

在配置了read_only后,任何具有SUPER权限的账户仍然能够进行写操作。因此,要确保只有受信任的用户拥有此权限,并且在日常操作中避免使用具有SUPER权限的账户进行数据库操作。

3. 监控和维护

  • 监控日志:定期检查MySQL日志以确保没有不期望的写入操作发生。
  • 备份和恢复:即使是只读的从服务器,也应定期备份,以防万一需要恢复数据。
  • 性能优化:由于从服务器仅用于读取操作,可以针对读取性能进行优化。

4. 保持数据同步

  • 即使从服务器设置为只读,它仍会从主服务器接收数据更新。确保主从同步正常运行,定期检查复制状态。

5. 安全性

  • 考虑实施网络安全措施,例如使用防火墙和加密连接来保护数据。

通过上述设置,您的从服务器将作为一个只读实例运行,适用于查询操作、报告生成或者作为主服务器的热备份。这有助于提高读取性能,同时保持数据的一致性和完整性。

你可能感兴趣的:(MySQL,mysql,android,数据库)