centos7 MySQL5.7主从设置
时间: 2025-05-22 15:28:45 浏览: 20
<think>好的,我现在需要帮助用户在CentOS 7上配置MySQL 5.7的主从复制。首先,我得回顾一下用户提供的引用内容,确保步骤正确。用户已经给出了一些引用,主要涉及安装MySQL、配置二进制日志、服务器ID以及主从同步的相关设置。
首先,安装MySQL 5.7。根据引用[1],用户可能已经通过通用二进制文件安装了MySQL,但可能需要确认安装步骤是否正确。不过CentOS通常使用YUM仓库,所以可能需要调整安装方法。确保安装完成后服务正常启动,如引用[2]中的systemctl status检查。
接下来是主库配置。根据引用[4],需要编辑my.cnf文件,设置server-id和启用二进制日志。这里要注意server-id必须是唯一的,主库设为1,从库设为其他值。同时,引用[5]提到了binlog忽略数据库的选项,但用户可能不需要这个,除非有特定需求。需要确保主库的配置正确,重启MySQL服务生效。
然后创建主库的复制用户,并授权REPLICATION SLAVE权限。这部分用户可能了解,但需要明确步骤,比如使用CREATE USER和GRANT语句。
备份主库数据,使用mysqldump导出,并传输到从库。这里需要注意锁表或者使用事务一致性备份,尤其是对于InnoDB引擎,可以使用--single-transaction选项。
配置从库时同样需要修改my.cnf,设置不同的server-id,可能启用中继日志。然后导入主库的备份数据,配置CHANGE MASTER TO命令,指定主库的IP、端口、用户和密码,以及二进制日志文件和位置。
最后启动从库复制进程,检查Slave_IO_Running和Slave_SQL_Running的状态是否为Yes,确保同步正常。
可能遇到的问题包括防火墙未开放3306端口,server-id冲突,或者主从库数据不一致。需要提醒用户检查这些点,并验证同步状态。
现在需要将这些步骤整理成清晰的教程,确保用户能够一步步跟随操作,并解决常见问题。同时,根据用户要求生成相关问题,比如主从复制的监控方法、故障处理等。</think>### CentOS 7 MySQL 5.7 主从同步配置教程
#### 一、环境准备
1. 两台CentOS 7服务器(主库IP: 192.168.1.100,从库IP: 192.168.1.101)
2. 已安装MySQL 5.7,可通过以下命令验证:
```bash
systemctl status mysqld.service # 检查服务状态[^2]
```
---
#### 二、主库配置
1. **修改配置文件**
编辑`/etc/my.cnf`,在`[mysqld]`段添加:
```ini
server-id = 1 # 唯一标识主库[^4]
log-bin = mysql-bin # 开启二进制日志
binlog-format = ROW # 推荐使用ROW格式
expire_logs_days = 7 # 自动清理7天前的日志
```
重启服务生效:
```bash
systemctl restart mysqld
```
2. **创建复制账户**
登录MySQL执行:
```sql
CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@1234';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
```
3. **锁定数据库并获取状态**
```sql
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS; # 记录File(mysql-bin.000001)和Position(154)
```
---
#### 三、从库配置
1. **修改配置文件**
编辑`/etc/my.cnf`,添加:
```ini
server-id = 2 # 区别于主库的ID
relay-log = mysql-relay-bin # 开启中继日志
read_only = ON # 从库设为只读模式
```
2. **恢复数据同步**
使用`mysqldump`导出主库数据:
```bash
mysqldump -uroot -p --all-databases --master-data > master_db.sql
```
传输到从库并导入:
```bash
mysql -uroot -p < master_db.sql
```
3. **启动复制进程**
登录从库MySQL执行:
```sql
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='Repl@1234',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
```
---
#### 四、验证同步状态
```sql
SHOW SLAVE STATUS\G
```
检查以下两个字段:
- `Slave_IO_Running: Yes`
- `Slave_SQL_Running: Yes`
---
#### 五、常见问题解决
1. **连接失败**
- 检查防火墙:`firewall-cmd --zone=public --add-port=3306/tcp --permanent`
- 确认主库`bind-address = 0.0.0.0`
2. **同步位置错误**
重置同步:
```sql
STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO ... # 重新指定正确binlog位置
```
---
阅读全文
相关推荐


















