一主多从配置通过主库处理写入、从库分担读取提升性能与冗余。1. 主库启用binlog并创建复制用户,记录MASTER STATUS的File和position;2. 各从库设置唯一server-id,启动中继日志与只读模式,执行CHANGE MASTER指向主库并开启复制;3. 在主库创建表或插入数据,从库查询验证数据一致性;4. 确保网络互通、防火墙开放3306端口,避免server-id冲突,监控Seconds_Behind_Master延迟。正确配置后结构稳定,适用于读多写少场景。
搭建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;
启动复制:
START SLAVE;
检查复制状态:
SHOW SLAVE STATUSG
重点关注以下两项:
- 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 word 防火墙 端口 ssl 配置文件 sql创建 mysql select format int position table
暂无评论内容