在Linux系统中搭建MySQL主从服务器可以提升数据库的读写性能和数据安全性,主库负责处理写请求,从库同步主库数据承担读请求,下文将一步步讲解完整搭建流程。

环境准备
首先需要准备两台运行Linux系统的服务器,本文以CentOS 7系统为例,两台服务器均已安装相同版本的MySQL,建议MySQL版本为5.7及以上,避免版本差异导致同步异常。主库服务器IP假设为192.168.0.10,从库服务器IP假设为192.168.0.11,确保两台服务器之间网络互通,3306端口可以相互访问。
主库配置步骤
修改主库配置文件
编辑MySQL主配置文件my.cnf,一般路径为/etc/my.cnf,在[mysqld]模块下添加以下配置:
# 启用二进制日志,主从同步必须开启 log-bin=mysql-bin # 设置服务器唯一ID,主从不能相同 server-id=1 # 二进制日志格式,建议设置为row binlog_format=row # 需要同步的数据库,不设置则同步所有库 binlog-do-db=test_db
修改完成后重启MySQL服务使配置生效:
systemctl restart mysqld
创建同步账号并授权
登录主库MySQL,创建一个用于从库连接的同步账号,并授予复制权限:
-- 创建同步用户,密码设置为sync_pwd CREATE USER 'sync_user'@'192.168.0.11' IDENTIFIED BY 'sync_pwd'; -- 授予复制权限 GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'192.168.0.11'; -- 刷新权限 FLUSH PRIVILEGES;
查看主库状态
执行以下命令查看主库的二进制日志信息,记录下File和Position的值,后续从库配置需要用到:
SHOW MASTER STATUS;
正常输出类似如下内容,其中mysql-bin.000001是日志文件名,154是日志位置:
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
|---|---|---|---|
| mysql-bin.000001 | 154 | test_db |
从库配置步骤
修改从库配置文件
编辑从库的my.cnf配置文件,在[mysqld]模块下添加以下配置:
# 设置从库服务器唯一ID,和主库不能相同 server-id=2 # 开启中继日志 relay-log=mysql-relay # 设置只读,避免从库被误写入数据 read-only=1
修改完成后同样重启MySQL服务:
systemctl restart mysqld
配置从库连接主库
登录从库MySQL,执行以下命令配置主库连接信息,将对应的IP、端口、账号、密码、日志文件名、日志位置替换为实际的值:
CHANGE MASTER TO MASTER_HOST='192.168.0.10', MASTER_PORT=3306, MASTER_USER='sync_user', MASTER_PASSWORD='sync_pwd', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
启动从库同步进程
执行以下命令启动从库的同步进程:
START SLAVE;
接着查看从库同步状态,确认两个关键参数是否为Yes:
SHOW SLAVE STATUS\G
重点查看Slave_IO_Running和Slave_SQL_Running两个字段,都为Yes则表示主从同步搭建成功。如果其中某个为No,可以查看Last_IO_Error或Last_SQL_Error字段查看具体错误原因。
验证主从同步
在主库的test_db数据库中创建一张测试表并插入数据:
USE test_db;
CREATE TABLE test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
INSERT INTO test_table(name) VALUES('测试数据');然后登录从库的test_db数据库,查询test_table表,如果能看到刚才插入的数据,说明主从同步正常工作。
常见问题排查
- 如果从库
Slave_IO_Running为Connecting,检查主从服务器网络是否互通,主库同步账号是否授权正确,防火墙是否放行3306端口。 - 如果
Slave_SQL_Running为No,一般是主从数据不一致导致,可以查看错误日志,跳过错误或者重新同步数据。 - 主从版本不一致可能导致同步异常,建议主从使用相同版本的MySQL。
注意:从库默认只能读取数据,不建议手动修改从库数据,避免主从数据不一致导致同步异常。
以上就是Linux系统中搭建MySQL主从服务器的完整流程,按照步骤操作即可快速实现数据同步,提升数据库服务的稳定性和性能。