如何实现 MySQL 8 双主复制

在高可用性和负载平衡的环境中,MySQL 双主复制(又称双主架构)是一种有效的解决方案。本文将指导你如何在 MySQL 8 中配置双主复制,从而使服务器一方面可以相互备份,另一方面可以处理读写请求。

双主复制实现流程

下面是实现 MySQL 快速双主复制的主要步骤:

步骤描述相关命令
1安装并启动 MySQL确保 MySQL 8 已安装并运行
2配置主机A在主机A中设置服务器ID和复制设置
3创建复制用户在主机A中创建用于复制的用户
4配置主机B在主机B中设置服务器ID和复制设置
5创建复制用户在主机B中创建用于复制的用户
6启动复制启动主机A和主机B的复制功能
7测试复制验证双主复制是否正常工作

详细步骤解析

1. 安装并启动 MySQL

确保 MySQL 8 已安装并运行。如果没有安装,使用包管理器进行安装。

sudo apt-get update
sudo apt-get install mysql-server
sudo systemctl start mysql
  • 1.
  • 2.
  • 3.
2. 配置主机A

编辑 MySQL 配置文件 /etc/mysql/my.cnf/etc/my.cnf,确保以下设置:

[mysqld]
server-id=1                    # 设置主机A的服务器ID为1
log_bin=mysql-bin              # 启用二进制日志
binlog-format=row              # 设置二进制日志格式为行
  • 1.
  • 2.
  • 3.
  • 4.

重启 MySQL 服务使配置生效:

sudo systemctl restart mysql
  • 1.
3. 创建复制用户(主机A)

在 MySQL 中创建用于复制的用户和权限:

CREATE USER 'replicaUser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';  # 创建用户
GRANT REPLICATION SLAVE ON *.* TO 'replicaUser'@'%';  # 授权复制权限
FLUSH PRIVILEGES;                                  # 刷新权限
  • 1.
  • 2.
  • 3.
4. 配置主机B

同样地,在主机B中进行设置。修改配置文件,确保如下设置:

[mysqld]
server-id=2                    # 设置主机B的服务器ID为2
log_bin=mysql-bin              # 启用二进制日志
binlog-format=row              # 设置二进制日志格式为行
  • 1.
  • 2.
  • 3.
  • 4.

重启 MySQL 服务使配置生效:

sudo systemctl restart mysql
  • 1.
5. 创建复制用户(主机B)

在主机B中同样创建用于复制的用户和相应权限:

CREATE USER 'replicaUser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';  # 创建用户
GRANT REPLICATION SLAVE ON *.* TO 'replicaUser'@'%';  # 授权复制权限
FLUSH PRIVILEGES;                                  # 刷新权限
  • 1.
  • 2.
  • 3.
6. 启动复制

在主机A上,记录当前的二进制日志文件和位置:

SHOW MASTER STATUS;  # 输出当前的二进制日志减少位置
  • 1.

记下“File”和“Position”字段的值。然后在主机B上运行以下命令:

CHANGE MASTER TO
    MASTER_HOST='主机A的IP地址',
    MASTER_USER='replicaUser',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='记录的File',
    MASTER_LOG_POS=记录的Position;  # 设置主机B复制主机A
START SLAVE;  # 启动从服务器
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

在主机A上执行相同操作,以启动主机A 对主机B 的复制:

CHANGE MASTER TO
    MASTER_HOST='主机B的IP地址',
    MASTER_USER='replicaUser',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='记录的File',
    MASTER_LOG_POS=记录的Position;  # 设置主机A复制主机B
START SLAVE;  # 启动从服务器
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
7. 测试复制

可以在任一主机上插入数据,使用以下命令检查复制状态:

SHOW SLAVE STATUS\G;  # 检查复制状态
  • 1.
甘特图表示工作流程
MySQL 8 双主复制配置流程 2023-10-01 2023-10-01 2023-10-01 2023-10-01 2023-10-02 2023-10-02 2023-10-02 2023-10-02 2023-10-03 安装并启动 MySQL 配置主机A 创建复制用户 配置主机B 创建复制用户 启动复制 测试复制 步骤 MySQL 8 双主复制配置流程

结论

通过以上步骤,你已经成功配置了 MySQL 8 的双主复制。这种配置可以提高系统的可用性和负载处理能力。在使用过程中,务必定期检查复制的状态,以确保系统健康。希望本指南对你有所帮助,祝你在开发之路上越来越顺利!