MySQL 主从复制及 InnoDB 引擎实现指南

在本篇文章中,我们将学习如何在 MySQL 中设置主从复制,并使用 InnoDB 存储引擎。主从复制能提高数据库的可用性及负载均衡,而 InnoDB 是支持事务、行级锁和外键的高性能存储引擎。以下是整个流程的概述。

整体流程

步骤 描述
1. 配置主服务器 修改主服务器的配置文件,设置唯一 ID 和启用二进制日志。
2. 创建复制用户 在主服务器上创建用于复制的专用用户。
3. 记录主服务器状态 使用 SHOW MASTER STATUS 命令记录当前状态。
4. 配置从服务器 修改从服务器的配置文件,设置唯一 ID 和连接主服务器的信息。
5. 启动复制进程 在从服务器上执行命令来启动复制。

详细步骤

1. 配置主服务器

在主服务器上,打开 MySQL 配置文件 my.cnf,通常位于 /etc/my.cnf/etc/mysql/my.cnf,并做如下修改:

[mysqld]
server-id=1                       # 设置主服务器的唯一 ID
log-bin=mysql-bin                  # 启用二进制日志

重启 MySQL 服务以使配置生效:

sudo service mysql restart         # 重启 MySQL 服务

2. 创建复制用户

登录到 MySQL :

mysql -u root -p                   # 使用 root 用户登录

创建一个复制用户并授权:

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

3. 记录主服务器状态

在 MySQL 中执行以下命令,以获取当前主服务器的状态:

SHOW MASTER STATUS;                                  -- 显示当前的二进制日志文件和位置

记住结果,例如:

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

4. 配置从服务器

同样,打开从服务器的 MySQL 配置文件 my.cnf,进行如下设置:

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

重启 MySQL 服务:

sudo service mysql restart         # 重启 MySQL 服务

5. 启动复制进程

登录到从服务器的 MySQL:

mysql -u root -p                   # 使用 root 用户登录

执行以下命令来配置复制:

CHANGE MASTER TO
    MASTER_HOST='主服务器IP',        -- 输入主服务器的 IP 地址
    MASTER_USER='replicator',      -- 使用前面创建的用户
    MASTER_PASSWORD='your_password',-- 密码
    MASTER_LOG_FILE='mysql-bin.000001',  -- 传入主服务器的日志文件
    MASTER_LOG_POS=154;               -- 传入日志位置

启动复制:

START SLAVE;                        -- 启动从服务器的复制进程

检查从服务器的状态:

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

序列图与旅行图

序列图

使用 Mermaid 描述主从复制过程的序列图:

sequenceDiagram
    participant M as 主服务器
    participant S as 从服务器
    S->>M: 连接并请求复制
    M-->>S: 返回复制数据
    S-->>S: 应用数据到本地

旅行图

使用 Mermaid 表示用户的操作旅程:

journey
    title MySQL 主从复制实现旅程
    section 设置主服务器
      配置 my.cnf: 5: 配置
      重启服务: 5: 过程
    section 创建复制用户
      登录 MySQL: 4: 操作
      创建与授权用户: 5: 过程
    section 记录主服务器状态
      执行 SHOW MASTER STATUS: 5: 过程
    section 配置从服务器
      配置 my.cnf: 5: 配置
      重启服务: 5: 过程
    section 启动复制
      修改复制设置: 5: 过程
      启动从服务器: 5: 过程

结尾

通过以上步骤,我们成功实现了 MySQL 的主从复制,采用了 InnoDB 存储引擎。现在你可以利用这种架构来提高数据的可靠性和扩展性。希望你能通过这一过程加深对 MySQL 主从复制的理解,今后在项目中大展宏图!