MySQL 两台服务器复制教程

在现代应用中,数据库的高可用性和数据冗余备份是至关重要的。MySQL 提供了主从复制功能,使得一台主数据库服务器(Master)能够将数据实时复制到一台或多台从数据库服务器(Slave)。本文将为您详细讲解如何在两台 MySQL 服务器间设置复制。

复制过程概述

下面是设置 MySQL 复制的基本流程步骤:

步骤 描述
1 配置主服务器
2 创建复制用户
3 导出主服务器数据
4 配置从服务器
5 导入数据到从服务器
6 启动从服务器复制
flowchart TD
    A[开始] --> B[配置主服务器]
    B --> C[创建复制用户]
    C --> D[导出主服务器数据]
    D --> E[配置从服务器]
    E --> F[导入数据到从服务器]
    F --> G[启动从服务器复制]
    G --> H[结束]

每一步详细说明

1. 配置主服务器

在主服务器上,我们需要修改 my.cnf 配置文件来启用二进制日志(Binary Log),并设置 server-id。

  • 打开主服务器的配置文件:
sudo nano /etc/mysql/my.cnf
  • 添加或修改如下参数:
[mysqld]
server-id = 1                     # 设置服务器ID, 主服务器要为1
log_bin = /var/log/mysql/mysql-bin # 启用二进制日志

2. 创建复制用户

我们需要在主服务器上创建一个用户专门用于复制。这是为了安全起见。

  • 登录 MySQL:
mysql -u root -p
  • 创建复制用户并授予权限:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password'; -- 创建replicator用户
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';  -- 授予复制权限
FLUSH PRIVILEGES; -- 刷新权限

3. 导出主服务器数据

在设置从服务器之前,你需要将主服务器的数据导出来。

  • 使用 mysqldump 进行导出:
mysqldump -u root -p --all-databases --master-data > alldatabases.sql

4. 配置从服务器

在从服务器上,我们需要进行相应的配置。

  • 修改从服务器的配置文件:
sudo nano /etc/mysql/my.cnf
  • 添加或修改如下参数:
[mysqld]
server-id = 2                     # 设置服务器ID, 从服务器设置为2

5. 导入数据到从服务器

将之前导出的数据导入到从服务器上。

  • 登录从服务器的 MySQL:
mysql -u root -p
  • 导入数据:
mysql> SOURCE /path/to/alldatabases.sql; -- 导入数据

6. 启动从服务器复制

现在我们需要告诉从服务器连接到主服务器并开始复制。

首先,您需要找到主服务器的二进制日志文件和位置。在主服务器的 MySQL 中运行以下命令:

SHOW MASTER STATUS; -- 获取主服务器的二进制日志文件名和位置

假设输出如下:

+---------------+----------+------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+------------+------------------+
| mysql-bin.000001 | 107      |              |                  |
  • 然后在从服务器上运行以下命令:
CHANGE MASTER TO
    MASTER_HOST='master_ip',               -- 主服务器IP
    MASTER_USER='replicator',              -- 复制用户
    MASTER_PASSWORD='password',             -- 复制用户密码
    MASTER_LOG_FILE='mysql-bin.000001',    -- 主服务器的二进制日志文件
    MASTER_LOG_POS=107;                     -- 位置
  • 启动复制:
START SLAVE;                               -- 启动从服务器复制

旅行图

下面的旅行图展示了学习设置 MySQL 复制的过程及其感受:

journey
    title MySQL 复制设置之旅
    section 初识
      了解 MySQL 复制概念: 5: 初学者
    section 配置过程
      主服务器配置: 4: 初学者
      创建复制用户: 4: 初学者
      导出数据: 3: 初学者
    section 逐步深入
      从服务器配置: 4: 初学者
      导入数据: 3: 初学者
      启动复制: 5: 初学者

结尾

通过上述步骤,您可以成功创建一个 MySQL 主从复制环境。掌握这些技能不仅有利于数据的安全性与备份,也为后续的数据库扩展提供了可能性。如果您在过程中遇到任何问题,建议查看 MySQL 的官方文档,或向社区寻求帮助。希望本教程能对您有所帮助,祝您的数据库管理事半功倍!