插件窝 干货文章 在MySQL中设置主从复制入门实例

在MySQL中设置主从复制入门实例

服务器 主从 复制 MySQL 215    来源:    2025-05-22

MySQL 主从复制入门实例

主从复制简介

MySQL主从复制(Replication)是一种数据复制技术,允许从一个MySQL服务器(主服务器)复制数据到一个或多个MySQL服务器(从服务器)。主从复制的主要用途包括:

  • 读写分离
  • 数据备份
  • 高可用性和故障转移
  • 数据分析

环境准备

假设我们有两台服务器: - 主服务器(Master): 192.168.1.100 - 从服务器(Slave): 192.168.1.101

两台服务器都已安装MySQL(建议5.6以上版本)。

配置步骤

1. 主服务器配置

1.1 修改主服务器配置文件(my.cnf/my.ini)

[mysqld]
server-id = 1               # 必须唯一,主从不能相同
log_bin = mysql-bin         # 开启二进制日志
binlog_format = ROW         # 推荐使用ROW格式
binlog_do_db = mydb         # 可选,指定要复制的数据库

1.2 重启MySQL服务

# Linux
service mysql restart

# Windows
net stop mysql
net start mysql

1.3 创建复制专用用户

CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

1.4 获取主服务器二进制日志状态

SHOW MASTER STATUS;

记录下File和Position的值,例如:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 | mydb         |                  |
+------------------+----------+--------------+------------------+

2. 从服务器配置

2.1 修改从服务器配置文件(my.cnf/my.ini)

[mysqld]
server-id = 2               # 必须唯一,不能与主服务器相同
relay-log = mysql-relay-bin # 中继日志
read_only = 1               # 从服务器只读(可选)

2.2 重启MySQL服务

# Linux
service mysql restart

# Windows
net stop mysql
net start mysql

2.3 配置从服务器连接主服务器

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

2.4 启动复制

START SLAVE;

2.5 检查复制状态

SHOW SLAVE STATUS\G

查看以下两个字段是否为"Yes": - Slave_IO_Running: Yes - Slave_SQL_Running: Yes

如果有错误,可以在错误日志中查看详细信息。

验证主从复制

在主服务器上执行:

CREATE DATABASE test_repl;
USE test_repl;
CREATE TABLE test_table (id INT, name VARCHAR(20));
INSERT INTO test_table VALUES (1, 'test data');

在从服务器上检查:

SELECT * FROM test_repl.test_table;

应该能看到主服务器上插入的数据。

常见问题解决

  1. Slave_IO_Running: Connecting

    • 检查网络连接
    • 确认主服务器IP、端口、用户名密码正确
    • 检查主服务器防火墙设置
  2. Slave_SQL_Running: No

    • 查看Last_Error字段获取具体错误
    • 常见原因是主从数据不一致
  3. 跳过错误

    STOP SLAVE;
    SET GLOBAL sql_slave_skip_counter = 1;
    START SLAVE;
    

高级配置选项

  1. 半同步复制

    • 确保至少一个从服务器接收到数据
    • 需要安装插件
  2. GTID复制

    • 使用全局事务ID而非文件名和位置
    • 简化故障转移和主从切换
  3. 多线程复制

    • 提高从服务器复制性能

注意事项

  1. 主从服务器时间同步很重要
  2. 主从服务器MySQL版本最好一致或从服务器版本高于主服务器
  3. 定期检查复制状态
  4. 对于大型数据库,初始数据同步可能需要较长时间

通过以上步骤,您应该已经成功设置了MySQL主从复制环境。