实现 MySQL 主主备的步骤指南

在数据库架构中,“主主备”(Multi-Master Replication)是一种配置,允许两个或多个数据库实例相互同步,通常用于提高可用性和负载均衡。以下是实现 MySQL 主主备的基本流程以及每一步的详细解析。

流程概览

以下是实现 MySQL 主主备的步骤:

步骤 描述
1 安装 MySQL 服务器
2 配置 MySQL 主机
3 设置复制用户
4 启动主主备复制
5 测试复制是否成功

步骤详解

1. 安装 MySQL 服务器

首先,您需要确保在两个服务器上安装 MySQL。您可以使用以下命令在 Ubuntu 上安装 MySQL:

sudo apt update
sudo apt install mysql-server

2. 配置 MySQL 主机

分别在两台 MySQL 服务器(我们这里称之为 Master1Master2)上进行配置。

在 Master1 上:
  1. 编辑配置文件 /etc/mysql/my.cnf/etc/my.cnf

    [mysqld]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    binlog-do-db = your_database
    
  2. 重启 MySQL 服务:

    sudo systemctl restart mysql
    
在 Master2 上:
  1. 编辑配置文件 /etc/mysql/my.cnf

    [mysqld]
    server-id = 2
    log_bin = /var/log/mysql/mysql-bin.log
    binlog-do-db = your_database
    
  2. 重启 MySQL 服务:

    sudo systemctl restart mysql
    

3. 设置复制用户

在两台服务器中,都需要创建一个用于复制的用户。

在 Master1 上:
CREATE USER 'replica'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;
在 Master2 上:
CREATE USER 'replica'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;

4. 启动主主备复制

在 Master1 上:
CHANGE MASTER TO
    MASTER_HOST='ip_of_Master2',
    MASTER_USER='replica',
    MASTER_PASSWORD='your_password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=  154;  -- 您可以从 Master2 的 SHOW MASTER STATUS 获取这些信息
START SLAVE;
在 Master2 上:
CHANGE MASTER TO
    MASTER_HOST='ip_of_Master1',
    MASTER_USER='replica',
    MASTER_PASSWORD='your_password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=  154;  -- 同样从 Master1 的 SHOW MASTER STATUS 获取
START SLAVE;

5. 测试复制是否成功

在 Master1 和 Master2 上都输入以下命令以检查复制状态:

SHOW SLAVE STATUS\G;

确保 Slave_IO_RunningSlave_SQL_Running 都显示为 Yes

项目进度甘特图

gantt
    title MySQL 主主备设置进度
    dateFormat  YYYY-MM-DD
    section 安装和配置
    安装 MySQL :a1, 2023-10-01, 1d
    配置主机 :after a1, 2d
    section 设置复制
    创建复制用户 : 2023-10-04, 1d
    启动复制 : 2023-10-05, 1d
    测试复制 : 2023-10-06, 1d

结尾

通过以上步骤,您应该能够成功设置和运行 MySQL 主主备环境。在进行数据库配置时时常备份您的数据,并在生产环境中进行更改前进行充分的测试。希望这篇文章能够帮助到您,祝您在数据库开发的旅程中一切顺利!