MySQL 主从模式设置
封面图
•
2025-10-07
•
MySQL
152
0
0
0
MySQL 的主从(Master-Slave)模式是一种常见的高可用和负载均衡方案,通过将主库的数据同步到一个或多个从库,实现数据的复制和备份。以下是设置 MySQL 主从模式的基本步骤: --- ## 一、环境准备 - **主库(Master)**:IP 地址为 `192.168.1.100` - **从库(Slave)**:IP 地址为 `192.168.1.101` 确保两台服务器都安装了 MySQL,并且可以互相通信。 --- ## 二、配置主库(Master) ### 1. 修改 MySQL 配置文件(`my.cnf` 或 `my.ini`) ```ini [mysqld] server-id=1 # 主库的唯一标识 log-bin=mysql-bin # 启用二进制日志 binlog-format=ROW # 推荐使用 ROW 模式,保证数据一致性 ``` > 注意:不同系统下配置文件路径可能不同,例如: > - Linux: `/etc/my.cnf` 或 `/etc/mysql/my.cnf` > - Windows: `C:\ProgramData\MySQL\MySQL Server X.X\my.ini` ### 2. 重启 MySQL 服务 ```bash sudo systemctl restart mysql ``` ### 3. 创建用于复制的用户 登录 MySQL: ```sql CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` > `repl` 是复制使用的用户名,`%` 表示允许从任意 IP 连接,也可以指定从库 IP。 ### 4. 查看主库状态 ```sql SHOW MASTER STATUS; ``` 输出类似: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 154 | | | +------------------+----------+--------------+------------------+ ``` 记录 `File` 和 `Position`,后面会用到。 --- ## 三、配置从库(Slave) ### 1. 修改 MySQL 配置文件(`my.cnf` 或 `my.ini`) ```ini [mysqld] server-id=2 # 从库的唯一标识,不能与主库相同 relay-log=relay-bin # 中继日志 ``` ### 2. 重启 MySQL 服务 ```bash sudo systemctl restart mysql ``` ### 3. 配置主从连接 登录 MySQL: ```sql CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; ``` > 注意:`MASTER_LOG_FILE` 和 `MASTER_LOG_POS` 要和主库上 `SHOW MASTER STATUS;` 的结果一致。 ### 4. 启动从库复制 ```sql START SLAVE; ``` ### 5. 检查从库状态 ```sql SHOW SLAVE STATUS\G ``` 查看以下两个字段是否为 `Yes`: ``` Slave_IO_Running: Yes Slave_SQL_Running: Yes ``` 如果出现错误,可以根据 `Last_Error` 字段进行排查。 --- ## 四、验证主从同步 在主库执行一些操作,比如插入数据: ```sql USE test; CREATE TABLE t1 (id INT); INSERT INTO t1 VALUES (1); ``` 然后在从库查询: ```sql USE test; SELECT * FROM t1; ``` 如果能看到数据,说明主从同步成功。 --- ## 五、常见问题排查 | 问题 | 解决方法 | |------|----------| | 无法连接主库 | 检查防火墙、用户权限、密码是否正确 | | 复制失败 | 查看 `SHOW SLAVE STATUS\G` 中的 `Last_Error` | | 数据不一致 | 可以使用 `mysqldump` 导出主库数据,导入从库后重新配置 | --- ## 六、可选:使用 GTID(全局事务标识符) GTID 是 MySQL 5.6 引入的新特性,可以简化主从切换和故障恢复。如需启用,可在主从配置中添加: ```ini gtid_mode=ON enforce_gtid_consistency=ON ``` --- ## 七、总结 | 步骤 | 内容 | |------|------| | 配置主库 | 设置 server-id、开启 binlog | | 配置从库 | 设置 server-id、配置主从连接 | | 启动复制 | 使用 `START SLAVE` 命令 | | 验证 | 插入数据并检查从库是否同步 | --- 如果你需要更详细的配置(如使用 Docker、SSL 加密、多级主从等),欢迎继续提问!
上一篇:
MySQL 出现 Could not initialize master info structure, more error messages can be found in the MySQL error log
下一篇:
MySQL主从失败 错误Got fatal error 1236解决方法
标题录入,一次不能超过6条
返回顶部
留言
留言
评论