centos下mysql主从复制设置详解


在 CentOS 系统上设置 MySQL 主从复制涉及多个步骤,包括配置主服务器(Master)和从服务器(Slave)。这里提供一个基本的步骤指南,但请注意,具体细节可能因 MySQL 版本和 CentOS 发行版的不同而有所变化。

### 步骤 1: 确保 MySQL 已安装

在两台服务器上安装 MySQL。你可以使用 YUM 包管理器来安装:


sudo yum install mysql-server mysql
sudo systemctl start mysqld
sudo systemctl enable mysqld

### 步骤 2: 配置主服务器(Master)

1. **编辑主服务器的配置文件**(通常位于 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`):


    [mysqld]
    server-id = 1
    log-bin = /var/log/mysql/mysql-bin.log
    expire_logs_days = 10
    max_binlog_size = 100M
    

- `server-id` 必须是唯一的。

- `log-bin` 启用二进制日志。

2. **重启 MySQL 服务**:


    sudo systemctl restart mysqld
    

3. **创建复制用户**:


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

- `'replica'@'%'` 中的 `%` 表示可以从任何主机连接。根据需要,可以指定具体的 IP 地址。

4. **记录二进制日志文件名和位置**:


    SHOW MASTER STATUS;
    

记下 `File` 和 `Position` 的值。

### 步骤 3: 配置从服务器(Slave)

1. **编辑从服务器的配置文件**:


    [mysqld]
    server-id = 2
    relay-log = /var/log/mysql/mysql-relay-bin.log
    read_only = 1
    

- `server-id` 也必须是唯一的,并且与主服务器不同。

2. **重启 MySQL 服务**:


    sudo systemctl restart mysqld
    

3. **配置从服务器以连接到主服务器**:


    CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='replica',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='recorded_log_file_name',
    MASTER_LOG_POS=recorded_log_position;
    

- 替换 `'master_ip'`, `'recorded_log_file_name'`, 和 `recorded_log_position` 为实际的值。

4. **启动复制**:


    START SLAVE;
    

5. **检查从服务器状态**:


    SHOW SLAVE STATUS\G
    

查看 `Slave_IO_Running` 和 `Slave_SQL_Running` 是否都是 `Yes`。

### 注意事项

- 确保防火墙和网络设置允许两台服务器之间的 MySQL 端口(默认是 3306)通信。

- 在生产环境中,避免使用 root 用户进行复制,并限制连接来源 IP。

- 定期检查和清理二进制日志,避免占用过多磁盘空间。

这就是在 CentOS 系统上设置 MySQL 主从复制的基本步骤。根据具体需要,可能还需要进行额外的配置和优化。