MySQL 三种主从复制模式设置指南

在学习 MySQL 的主从复制模式之前,首先要了解主从复制是 MySQL 中的一种数据复制技术,主要应用于负载均衡、数据备份等场景。本文将教你如何设置 MySQL 的三种主从复制模式:异步复制、半同步复制和全同步复制。我们将逐步解析整个流程。

流程概述

以下是设置 MySQL 主从复制的基本步骤:

步骤 操作内容
1 配置主服务器
2 创建复制用户
3 配置从服务器
4 启动复制
5 检查复制状态
6 配置复制模式

具体步骤详解

1. 配置主服务器

在主服务器的 MySQL 配置文件(通常为 my.cnf)中设置以下参数:

[mysqld]
server-id=1   # 设置服务器 ID,主服务器的 ID 为 1
log-bin=mysql-bin  # 启用二进制日志,便于从服务器读取

保存并重启 MySQL 服务:

sudo service mysql restart  # 重启 MySQL 服务

此步骤确保 MySQL 记录数据更改,供从服务器使用。

2. 创建复制用户

连接到主服务器,并创建一个用于复制的用户账号:

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';  -- 创建复制用户
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';  -- 授权复制权限
FLUSH PRIVILEGES;  -- 刷新权限

确保从服务器能够使用该用户连接到主服务器。

3. 配置从服务器

在从服务器的 my.cnf 中进行如下设置:

[mysqld]
server-id=2   # 设置从服务器 ID,需唯一

保存并重启 MySQL 服务:

sudo service mysql restart  # 重启 MySQL 服务

该步骤是为了确保每个 MySQL 实例有一个唯一的服务器 ID。

4. 启动复制

连接主服务器,获取复制所需的二进制日志位置:

SHOW MASTER STATUS;  -- 查看主服务器的二进制日志位置

假设输出显示如下:

+---------------------+----------+--------------+------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| mysql-bin.000001    | 154      |              |                  |
+---------------------+----------+--------------+------------------+

在从服务器上执行以下命令以启动复制:

CHANGE MASTER TO
    MASTER_HOST='主服务器IP',       -- 替换为主服务器的 IP 地址
    MASTER_USER='replica_user',     -- 上面创建的复制用户
    MASTER_PASSWORD='password',      -- 复制用户密码
    MASTER_LOG_FILE='mysql-bin.000001', -- 二进制日志文件名
    MASTER_LOG_POS=154;              -- 日志位置
START SLAVE;                        -- 启动复制

上述命令告诉从服务器从哪个主服务器及其位置开始复制数据。

5. 检查复制状态

确保复制工作正常,连接到从服务器并执行:

SHOW SLAVE STATUS\G;  -- 显示从服务器的复制状态

检查 Slave_IO_RunningSlave_SQL_Running 是否为 Yes,表示复制正常。

通过监控状态,可以及时了解到复制是否正常工作。

6. 配置复制模式
  • 异步复制:默认模式,数据写入主服务器后不等待从服务器确认。

  • 半同步复制

    配置主服务器:

    SET GLOBAL rpl_semi_sync_master_enabled=1;  -- 启用半同步复制
    

    配置从服务器:

    SET GLOBAL rpl_semi_sync_slave_enabled=1;  -- 启用半同步复制
    
  • 全同步复制:需要使用外部工具实现(如 Galera Cluster),复杂度较高,通常不鼓励初学者使用。

总结

通过以上步骤,你已经成功配置了 MySQL 的主从复制功能。这有助于提高数据库的可用性和性能。请注意,随着数据量的增加,你可能需要考虑更复杂的复制架构和优化措施。同时,也要定期备份数据,确保数据安全。继续学习和实验,将有助于你成为一名优秀的数据库管理员!