在 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 主从复制的基本步骤。根据具体需要,可能还需要进行额外的配置和优化。