# 生产环境双机部署方案 - 快速指南 ## 📁 文件结构 ``` 生产环境双机部署方案/ ├── 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初始化 ```bash # 在机器2 (172.16.0.68) 上执行 chmod +x 部署脚本/init-machine2.sh ./部署脚本/init-machine2.sh ``` ### 第二步:初始化从库数据(重要!) **⚠️ 必须先初始化从库数据,再配置主从复制!** ```bash # 步骤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](./MySQL系统数据库说明.md) ```bash # 步骤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主从复制 ```bash # 在机器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负载均衡 ```bash # 在两台机器上分别执行 cp 配置文件/nginx-load-balance.conf /etc/nginx/nginx.conf nginx -t systemctl reload nginx ``` ### 第六步:配置MinIO主从同步(可选) > **💡 MinIO 高可用说明**:MinIO **不需要**传统的主从配置,而是使用**集群模式**或**主从同步**。详细配置请参考: > - [基于现有启动脚本的MinIO主从配置.md](./基于现有启动脚本的MinIO主从配置.md) - **基于现有启动脚本的配置(推荐)** > - [MinIO高可用配置指南.md](./MinIO高可用配置指南.md) - MinIO高可用方案对比 ```bash # 方案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 ``` ### 第七步:健康检查 ```bash # 定期执行健康检查 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主从管理 ```bash # 查看主从状态 mysql -u root -p -e "SHOW SLAVE STATUS\G" # 停止/启动从库复制 mysql -u root -p -e "STOP SLAVE;" mysql -u root -p -e "START SLAVE;" ``` ### Redis主从管理 ```bash # 查看主从信息 redis-cli -a Hzdyjs@123456 INFO replication # 手动切换主从 redis-cli -a Hzdyjs@123456 SLAVEOF NO ONE ``` ### 服务管理 ```bash # 查看服务状态 systemctl status nginx systemctl status mysqld systemctl status redis # 查看后端服务 ps aux | grep ruoyi-admin netstat -tlnp | grep 8080 ``` ## ⚠️ 注意事项 1. **执行脚本前请仔细阅读脚本内容** 2. **生产环境务必修改所有默认密码** 3. **确保两台机器网络互通** 4. **配置防火墙规则允许必要端口** 5. **定期执行健康检查** 6. **做好数据备份** ## 📞 故障排查 ### MySQL主从复制失败 ```bash # 检查从库状态 mysql -u root -p -e "SHOW SLAVE STATUS\G" | grep -i error # 常见问题: # 1. 网络不通 - 检查防火墙和网络 # 2. 密码错误 - 检查复制用户密码 # 3. 日志位置错误 - 重新配置MASTER_LOG_FILE和MASTER_LOG_POS ``` ### Redis主从复制失败 ```bash # 检查从库状态 redis-cli -a Hzdyjs@123456 INFO replication # 常见问题: # 1. 密码不匹配 - 检查masterauth配置 # 2. 网络不通 - 检查防火墙 # 3. 主库未设置密码 - 主库必须设置requirepass ``` ### 后端服务无法访问 ```bash # 检查服务是否运行 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](../生产环境双机部署方案.md) - 完整部署方案 - [基于现有my.cnf的主从配置指南.md](./基于现有my.cnf的主从配置指南.md) - **针对67/68机器my.cnf的配置指南(推荐)** - [快速配置主从复制.md](./快速配置主从复制.md) - 3步快速配置指南 - [MySQL主从复制配置步骤.md](./MySQL主从复制配置步骤.md) - **主从复制详细配置步骤(数据已一致场景)** - [MySQL主从复制性能影响分析.md](./MySQL主从复制性能影响分析.md) - **性能影响详细分析** - [MySQL系统数据库说明.md](./MySQL系统数据库说明.md) - 系统数据库处理说明 - [MySQL数据库重命名指南.md](./MySQL数据库重命名指南.md) - 数据库重命名方法 - [基于现有启动脚本的MinIO主从配置.md](./基于现有启动脚本的MinIO主从配置.md) - **基于现有启动脚本的配置(推荐)** - [MinIO高可用配置指南.md](./MinIO高可用配置指南.md) - **MinIO集群模式和主从同步配置(重要!)** - [多实例部署说明.md](../杭州第一技师部署文档/多实例部署说明.md) - 多实例部署指南 - [nginx配置](../nginx配置/) - Nginx配置文档 ## ⚡ 性能优化说明 ### MySQL主从复制性能影响 **核心结论**:MySQL主从复制对主库性能影响通常为 **1-5%**,通过优化可降至 **1-2%**。 **快速优化方案**: - ✅ 使用ROW格式binlog(已配置) - ✅ 设置`sync_binlog=0`(性能优先,已配置) - ✅ 增大binlog缓存(已配置) **详细分析**:请查看 [MySQL主从复制性能影响分析.md](./MySQL主从复制性能影响分析.md) --- **📝 文档版本**: v1.0 **🔄 最后更新**: 2025-01-27