mysql 主从复制的配置步骤如下:1. 准备主从库环境,启用 binlog,创建复制用户并授予权限;2. 锁定主库表并导出数据,记录 binlog 文件和位置;3. 配置从库 server-id,导入数据并设置主库连接信息;4. 启动复制进程并检查状态,确保 slave_io 和 slave_sql 状态为 yes。整个过程需注意 server-id 唯一、binlog 正确开启及网络权限配置,以确保复制正常运行。
安装完 mysql 后,如果你想要复制数据,最常见的做法是使用 MySQL 自带的主从复制(Replication)功能。这不仅能实现数据备份、负载均衡,还能提高系统可用性。下面我们就来一步步看看怎么操作。
1. 确保主库和从库环境准备就绪
在开始配置复制之前,需要确认几个前提条件:
- 主库和从库都已安装并运行 MySQL。
- 主库开启了二进制日志(binlog),这是复制的基础。
- 主库和从库之间网络互通,能通过 IP 和端口连接。
- 创建一个专门用于复制的用户,并授予 REPLICATION SLAVE 权限。
修改主库配置文件 my.cnf 或 my.ini:
server-id=1 log-bin=mysql-bin
重启 MySQL 生效配置。然后创建复制账号:
CREATE USER 'replica'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;
2. 获取主库当前状态并导出数据
为了保证主从数据一致性,在导出数据前最好锁住主库表(如果是生产环境建议选低峰期):
FLUSH TABLES WITH READ LOCK;
然后查看当前 binlog 文件名和位置:
SHOW MASTER STATUS;
记录下 File 和 position 的值。接下来使用 mysqldump 导出数据库:
mysqldump -u root -p --all-databases --master-data > backup.sql
导出完成后解锁:
UNLOCK TABLES;
3. 配置从库并导入数据
同样编辑从库的配置文件,设置不同的 server-id:
server-id=2
重启 MySQL 后导入主库的数据:
mysql -u root -p < backup.sql
然后告诉从库如何连接主库进行复制:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='replica', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='记录下来的File名', MASTER_LOG_POS=记录下来的Position值;
最后启动复制进程:
START SLAVE;
4. 检查复制状态是否正常
执行以下命令查看从库复制状态:
SHOW SLAVE STATUSG
重点关注两个字段:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
如果都是 Yes,说明复制正常。如果有错误,可以根据 Last_Error 字段排查问题。
常见问题包括:
- 网络不通或防火墙限制
- 用户权限不对
- binlog 文件或位置写错
- server-id 冲突
基本上就这些步骤了。看起来有点多,但只要一步一步来,配置起来并不复杂,只是有些细节容易忽略,比如 server-id 要唯一、主库必须有 binlog 等。只要注意这些点,一般都能顺利搭建好主从复制结构。