生产环境双机部署方案 - 快速指南
📁 文件结构
生产环境双机部署方案/
├── README.md # 本文件
├── 部署脚本/
│ ├── init-machine2.sh # 机器2初始化脚本
│ ├── init-mysql-slave-data.sh # MySQL从库数据初始化(重要!)
│ ├── setup-mysql-replication.sh # MySQL主从复制配置
│ ├── setup-redis-replication.sh # Redis主从复制配置
│ ├── setup-minio-replication.sh # MinIO主从同步配置(新增)
│ ├── minio-sync-cron.sh # MinIO定时同步脚本(新增)
│ └── health-check.sh # 健康检查脚本
└── 配置文件/
├── nginx-load-balance.conf # Nginx负载均衡配置
├── docker-compose-minio-cluster.yml # MinIO集群配置
├── 67 机器的minio-start.sh # 67机器MinIO启动脚本
└── 68 机器的minio-start.sh # 68机器MinIO启动脚本
🚀 快速部署步骤
第一步:机器2初始化
# 在机器2 (172.16.0.68) 上执行
chmod +x 部署脚本/init-machine2.sh
./部署脚本/init-machine2.sh
第二步:初始化从库数据(重要!)
⚠️ 必须先初始化从库数据,再配置主从复制!
# 步骤1:在主库(67)导出数据
cd 部署脚本/
chmod +x init-mysql-slave-data.sh
./init-mysql-slave-data.sh
# 步骤2:在从库(68)导入数据
./init-mysql-slave-data.sh
第三步:配置MySQL主从复制
💡 系统数据库说明:系统自带的数据库(
information_schema、mysql、performance_schema、sys)不需要复制,每个MySQL实例的系统数据库都是独立管理的。详细说明请参考:MySQL系统数据库说明.md
# 步骤1:在主库(67)配置主库
chmod +x 部署脚本/setup-mysql-replication.sh
./部署脚本/setup-mysql-replication.sh
# 记录输出的 MASTER_LOG_FILE 和 MASTER_LOG_POS
# 步骤2:在从库(68)配置从库
./部署脚本/setup-mysql-replication.sh
# 输入步骤1记录的 MASTER_LOG_FILE 和 MASTER_LOG_POS
第四步:配置Redis主从复制
# 在机器1 (172.16.0.67) 上执行
chmod +x 部署脚本/setup-redis-replication.sh
./部署脚本/setup-redis-replication.sh
# 在机器2 (172.16.0.68) 上执行
chmod +x 部署脚本/setup-redis-replication.sh
./部署脚本/setup-redis-replication.sh
第五步:配置Nginx负载均衡
# 在两台机器上分别执行
cp 配置文件/nginx-load-balance.conf /etc/nginx/nginx.conf
nginx -t
systemctl reload nginx
第六步:配置MinIO主从同步(可选)
💡 MinIO 高可用说明:MinIO 不需要传统的主从配置,而是使用集群模式或主从同步。详细配置请参考:
- 基于现有启动脚本的MinIO主从配置.md - 基于现有启动脚本的配置(推荐)
- MinIO高可用配置指南.md - MinIO高可用方案对比
# 方案A:基于现有启动脚本的主从同步(推荐)
# 在68机器上执行配置脚本
cd 部署脚本/
chmod +x setup-minio-replication.sh
./setup-minio-replication.sh
# 执行初始同步
mc mirror --remove --overwrite minio-master/ minio-slave/
# 启动同步服务
systemctl start minio-sync
systemctl enable minio-sync
# 方案B:MinIO集群模式(Docker部署)
# 在两台机器上分别执行
docker-compose -f 配置文件/docker-compose-minio-cluster.yml up -d
第七步:健康检查
# 定期执行健康检查
chmod +x 部署脚本/health-check.sh
./部署脚本/health-check.sh
# 可以配置crontab定时执行
# 0 */6 * * * /path/to/health-check.sh >> /var/log/health-check.log 2>&1
📋 配置说明
密码配置
所有脚本中的默认密码:
- MySQL root密码:
Hzdyjs@Root@123456 - Redis密码:
Hzdyjs@123456 - MySQL复制用户密码:
Repl@123456 - MinIO用户名/密码:
ruoyi/ruoyi123
⚠️ 生产环境请务必修改这些密码!
IP地址配置
- 机器1: 172.16.0.67
- 机器2: 172.16.0.68
- 虚拟IP (Keepalived): 172.16.0.100 (可选)
端口规划
| 服务 | 端口 | 说明 |
|---|---|---|
| Nginx | 80/443 | Web服务 |
| 后端服务 | 8080/8081 | 应用服务 |
| MySQL | 3306 | 数据库 |
| Redis | 6379 | 缓存 |
| MinIO | 9000/9001 | 对象存储 |
🔧 常用命令
MySQL主从管理
# 查看主从状态
mysql -u root -p -e "SHOW SLAVE STATUS\G"
# 停止/启动从库复制
mysql -u root -p -e "STOP SLAVE;"
mysql -u root -p -e "START SLAVE;"
Redis主从管理
# 查看主从信息
redis-cli -a Hzdyjs@123456 INFO replication
# 手动切换主从
redis-cli -a Hzdyjs@123456 SLAVEOF NO ONE
服务管理
# 查看服务状态
systemctl status nginx
systemctl status mysqld
systemctl status redis
# 查看后端服务
ps aux | grep ruoyi-admin
netstat -tlnp | grep 8080
⚠️ 注意事项
- 执行脚本前请仔细阅读脚本内容
- 生产环境务必修改所有默认密码
- 确保两台机器网络互通
- 配置防火墙规则允许必要端口
- 定期执行健康检查
- 做好数据备份
📞 故障排查
MySQL主从复制失败
# 检查从库状态
mysql -u root -p -e "SHOW SLAVE STATUS\G" | grep -i error
# 常见问题:
# 1. 网络不通 - 检查防火墙和网络
# 2. 密码错误 - 检查复制用户密码
# 3. 日志位置错误 - 重新配置MASTER_LOG_FILE和MASTER_LOG_POS
Redis主从复制失败
# 检查从库状态
redis-cli -a Hzdyjs@123456 INFO replication
# 常见问题:
# 1. 密码不匹配 - 检查masterauth配置
# 2. 网络不通 - 检查防火墙
# 3. 主库未设置密码 - 主库必须设置requirepass
后端服务无法访问
# 检查服务是否运行
ps aux | grep ruoyi-admin
# 检查端口是否监听
netstat -tlnp | grep 8080
# 检查日志
tail -f /root/app/logs/ruoyi-admin.log
# 检查健康端点
curl http://127.0.0.1:8080/health
📚 相关文档
- 生产环境双机部署方案.md - 完整部署方案
- 基于现有my.cnf的主从配置指南.md - 针对67/68机器my.cnf的配置指南(推荐)
- 快速配置主从复制.md - 3步快速配置指南
- MySQL主从复制配置步骤.md - 主从复制详细配置步骤(数据已一致场景)
- MySQL主从复制性能影响分析.md - 性能影响详细分析
- MySQL系统数据库说明.md - 系统数据库处理说明
- MySQL数据库重命名指南.md - 数据库重命名方法
- 基于现有启动脚本的MinIO主从配置.md - 基于现有启动脚本的配置(推荐)
- MinIO高可用配置指南.md - MinIO集群模式和主从同步配置(重要!)
- 多实例部署说明.md - 多实例部署指南
- nginx配置 - Nginx配置文档
⚡ 性能优化说明
MySQL主从复制性能影响
核心结论:MySQL主从复制对主库性能影响通常为 1-5%,通过优化可降至 1-2%。
快速优化方案:
- ✅ 使用ROW格式binlog(已配置)
- ✅ 设置
sync_binlog=0(性能优先,已配置) - ✅ 增大binlog缓存(已配置)
详细分析:请查看 MySQL主从复制性能影响分析.md
📝 文档版本: v1.0
🔄 最后更新: 2025-01-27