
搭建MySQL多从复制(一主多从)能提升读性能和数据冗余能力。核心思路是:一个主库(Master)负责写操作,多个从库(Slave)同步主库数据用于读操作。以下是具体步骤。
1. 配置主库(Master)主库需要开启二进制日志(binlog),并设置唯一的server-id。
编辑主库配置文件 my.cnf(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf):[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
expire_logs_days = 7
binlog-do-db = your_database_name
修改后重启MySQL服务:
systemctl restart mysqld
登录MySQL创建用于复制的账号:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
查看主库状态,记录File和Position:
SHOW MASTER STATUS;
2. 配置各个从库(Slave1、Slave2...)每个从库也需要设置唯一的server-id(不能与主库或其他从库重复),并启用中继日志。
编辑每个从库的my.cnf:[mysqld]
server-id = 2
relay-log = mysql-relay-bin
log-slave-updates = 1
read-only = 1
重启从库MySQL服务:
systemctl restart mysqld
在每个从库上执行CHANGE MASTER命令,连接到主库:
CHANGE MASTER TO
MASTER_HOST='主库IP地址',
MASTER_USER='repl',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 154;
启动复制:
Post AI
博客文章AI生成器
50
查看详情
START SLAVE;
检查复制状态:
SHOW SLAVE STATUS\G
重点关注以下两项:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
如果有错误,查看Last_Error字段排查问题。
3. 验证复制效果在主库执行建表或插入操作:
USE your_database_name;
CREATE TABLE test_rep (id INT, name VARCHAR(20));
INSERT INTO test_rep VALUES (1, 'from master');
分别登录各个从库,执行:
SELECT * FROM test_rep;
如果能看到相同数据,说明复制成功。
4. 常见注意事项- 确保主从之间网络互通,防火墙开放3306端口
- server-id在整个复制集群中必须唯一
- 从库设置read-only防止误写
- 建议使用ROW格式binlog,更安全
- 定期监控SHOW SLAVE STATUS中的延迟(Seconds_Behind_Master)
基本上就这些。一主多从结构清晰,维护简单,适合读多写少的场景。只要主从配置正确,各从库独立运行,互不影响。不复杂但容易忽略细节,比如server-id重复或权限不足。配置完成后保持监控即可稳定运行。
以上就是mysql如何搭建多从复制的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: mysql word 防火墙 端口 ssl 配置文件 sql创建 mysql select format int position table 大家都在看: mysql如何配置master服务器 mysql如何删除用户账户 mysql安装后如何配置默认字符集 mysql删除数据时delete语句如何写 mysql迁移后如何监控服务状态






发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。