MySQL 主从复制实现指南

在数据库管理中,实现主从复制可以帮助你提高数据的可用性、负载均衡以及备份的便捷性。本文将详细介绍如何在 MySQL 中实现不停库的主从复制。

流程概述

实现主从复制的基本流程如下:

步骤 描述
1. 准备主库 配置主库以支持复制
2. 创建用户 在主库上创建用于复制的用户
3. 记录日志 记录主库的二进制日志
4. 准备从库 安装并配置从库
5. 启动复制 在从库上配置主库信息并启动复制
6. 监控状态 检查主从复制的状态

详细步骤

1. 准备主库

修改主库的 MySQL 配置文件 (my.cnf),使其支持复制。

以下是主要的配置项:

[mysqld]
server-id = 1          # 主库的唯一 ID
log-bin = mysql-bin    # 开启二进制日志
binlog-do-db = your_db # 需要复制的数据库
执行修改和重启服务
sudo systemctl restart mysqld  # 重启 MySQL 服务

2. 创建复制用户

在主库上创建一个专用于复制的用户。

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

3. 记录日志位置

在主库中,获取当前二进制日志的文件名和位置。

SHOW MASTER STATUS;  -- 查看主库的日志状态

记下返回结果中的 FilePosition,例如:File: mysql-bin.000001Position: 120

4. 准备从库

在从库上,修改 MySQL 配置文件。

[mysqld]
server-id = 2          # 从库的唯一 ID
启动从库服务
sudo systemctl restart mysqld  # 重启从库 MySQL 服务

5. 启动复制

在从库上执行以下步骤,以将主库的日志信息导入到从库。

设置主库信息
CHANGE MASTER TO
MASTER_HOST='主库IP地址',                      -- 替换为主库的 IP 地址
MASTER_USER='replicator',                     -- 使用复制用户
MASTER_PASSWORD='your_password',              -- 使用复制用户的密码
MASTER_LOG_FILE='mysql-bin.000001',          -- 主库的日志文件
MASTER_LOG_POS=120;                           -- 主库的日志位置
启动复制线程
START SLAVE;   -- 启动从库的复制线程

6. 监控状态

检查主从复制的状态,确保一切正常。

SHOW SLAVE STATUS\G;  -- 查看从库的状态

重点关注 Slave_IO_RunningSlave_SQL_Running,它们均应为 Yes

状态图

以下是主从复制的状态图,展示了主库和从库之间的交互过程。

stateDiagram
    [*] --> 主库
    主库 --> 从库 : 复制数据
    从库 --> 主库 : 确认接收
    主库 --> [*]

甘特图

下面的甘特图展示了整个复制配置的时间线。

gantt
    title MySQL 主从复制配置
    section 准备主库
    修改配置           :a1, 2023-10-01, 1d
    重启服务           :a2, after a1, 1d
    section 创建用户
    创建复制用户      :b1, after a2, 1d
    授权复制权限       :b2, after b1, 1d
    section 准备从库
    修改从库配置      :c1, 2023-10-04, 1d
    重启从库服务      :c2, after c1, 1d
    section 启动复制
    设置主库信息      :d1, 2023-10-06, 1d
    启动复制线程      :d2, after d1, 1d
    section 监控状态
    检查复制状态      :e1, 2023-10-08, 1d

结尾

通过本文步骤,你应该掌握了 MySQL 不停库主从复制的基本流程与配置方法。主从复制不仅提高了数据库的可用性,同时也能为你的系统带来更强的负载均衡能力。确保在配置完成后,定期检查复制状态,以维护数据的一致性和完整性。希望你在后续的开发中能灵活运用这些知识!