MySQL 主从配置指南

本文最后更新于 1 分钟前,文中所描述的信息可能已发生改变。

MySQL 主从复制是一种常见的数据复制技术,它允许数据从一个 MySQL 数据库服务器(主服务器)复制到一个或多个 MySQL 数据库服务器(从服务器)。本文将详细介绍如何配置 MySQL 主从复制。

环境准备

  • 主服务器:MySQL 8.0
  • 从服务器:MySQL 8.0
  • 操作系统:Linux/Unix

主服务器配置

  1. 修改主服务器配置文件 my.cnf
ini
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_do_db = your_database_name
  1. 重启 MySQL 服务:
bash
sudo systemctl restart mysql
  1. 创建用于复制的用户:
sql
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
  1. 查看主服务器状态:
sql
SHOW MASTER STATUS;

记录下 File 和 Position 的值,这些将在配置从服务器时使用。

从服务器配置

  1. 修改从服务器配置文件 my.cnf
ini
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
log_bin = mysql-bin
  1. 重启 MySQL 服务:
bash
sudo systemctl restart mysql
  1. 配置从服务器连接到主服务器:
sql
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=position;
  1. 启动从服务器复制:
sql
START SLAVE;
  1. 检查从服务器状态:
sql
SHOW SLAVE STATUS;

验证配置

  1. 在主服务器上创建测试数据:
sql
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table VALUES (1, 'test');
  1. 在从服务器上验证数据是否同步:
sql
USE test_db;
SELECT * FROM test_table;

常见问题解决

  1. 如果从服务器状态显示错误,检查:

    • 网络连接是否正常
    • 主从服务器的 server-id 是否唯一
    • 用户名和密码是否正确
    • 主服务器的防火墙设置
  2. 如果需要重新配置从服务器:

    sql
    STOP SLAVE;
    RESET SLAVE;

注意事项

  1. 确保主从服务器的 MySQL 版本兼容
  2. 定期监控主从复制状态
  3. 建议使用 GTID 模式进行复制
  4. 配置适当的备份策略

总结

MySQL 主从复制是一个强大的功能,可以用于:

  • 数据备份
  • 负载均衡
  • 高可用性
  • 数据分析

通过本文的配置步骤,您可以成功搭建 MySQL 主从复制环境。记得定期监控复制状态,确保数据同步正常。

为已有 MySQL 数据库添加从库
Nginx 安装与配置指南