# 生产环境双机部署方案 ## 📋 方案概述 ### 现状 - **机器1**: 172.16.0.67(已完整部署) - **机器2**: 172.16.0.68(待部署) - **应用栈**: 移动端前端、Web前端、后端服务、Nginx、Redis、MySQL、MinIO ### 设计目标 1. **高可用性**: 单机故障不影响服务可用性 2. **负载均衡**: 合理分配两台机器的负载 3. **数据一致性**: 确保数据同步和一致性 4. **可扩展性**: 支持后续扩展和升级 5. **运维便利**: 便于监控、维护和故障排查 --- ## 🏗️ 架构设计方案 ### 方案一:主备模式(推荐用于初期) ``` ┌─────────────────────────────────────────────────────────┐ │ 用户请求 │ └──────────────────────┬──────────────────────────────────┘ │ ▼ ┌──────────────────────┐ │ Nginx (67/68) │ │ 负载均衡/主备 │ └──────────┬───────────┘ │ ┌──────────────┼──────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 后端服务 │ │ 后端服务 │ │ 后端服务 │ │ 67:8080 │ │ 67:8081 │ │ 68:8080 │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └──────────────┼──────────────┘ │ ┌──────────────┼──────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ MySQL │ │ Redis │ │ MinIO │ │ 67(主) │ │ 67(主) │ │ 67(主) │ │ 68(从) │ │ 68(从) │ │ 68(从) │ └─────────────┘ └─────────────┘ └─────────────┘ ``` ### 方案二:双活模式(推荐用于高负载场景) ``` ┌─────────────────────────────────────────────────────────┐ │ 用户请求 │ └──────────────────────┬──────────────────────────────────┘ │ ▼ ┌──────────────────────┐ │ Nginx (67/68) │ │ 双机负载均衡 │ └──────────┬───────────┘ │ ┌──────────────┼──────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 后端服务 │ │ 后端服务 │ │ 后端服务 │ │ 67:8080 │ │ 67:8081 │ │ 68:8080 │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └──────────────┼──────────────┘ │ ┌──────────────┼──────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ MySQL │ │ Redis │ │ MinIO │ │ 67(主) │ │ 67(主) │ │ 67+68集群 │ │ 68(从) │ │ 68(从) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ ``` --- ## 📊 资源分配方案 ### 机器1 (172.16.0.67) - 主节点 | 服务 | 端口 | 说明 | |------|------|------| | **前端服务** | | | | Web前端 | 80 | Nginx静态资源 | | 移动端前端 | 80 | Nginx静态资源 | | **后端服务** | | | | 后端实例1 | 8080 | 主服务实例 | | 后端实例2 | 8081 | 备用实例(可选) | | **中间件** | | | | MySQL | 3306 | 主库 | | Redis | 6379 | 主节点 | | MinIO | 9000/9001 | 主节点 | | **负载均衡** | | | | Nginx | 80/443 | 主负载均衡器 | ### 机器2 (172.16.0.68) - 备节点/负载节点 | 服务 | 端口 | 说明 | |------|------|------| | **前端服务** | | | | Web前端 | 80 | Nginx静态资源(同步) | | 移动端前端 | 80 | Nginx静态资源(同步) | | **后端服务** | | | | 后端实例1 | 8080 | 负载均衡实例 | | 后端实例2 | 8081 | 负载均衡实例(可选) | | **中间件** | | | | MySQL | 3306 | 从库(主从复制) | | Redis | 6379 | 从节点(主从复制) | | MinIO | 9000/9001 | 从节点/集群节点 | | **负载均衡** | | | | Nginx | 80/443 | 备用负载均衡器 | --- ## 🔧 详细部署配置 ### 1. MySQL主从复制配置 #### 1.1 主库配置(67) ```ini # /etc/mysql/my.cnf [mysqld] # 基础主从配置 server-id = 1 log-bin = mysql-bin binlog-format = ROW binlog-do-db = hzdyjs_xg expire_logs_days = 7 max_binlog_size = 500M # 性能优化配置(减少主从复制对主库性能影响) # 方案A:性能优先(推荐,性能影响约1-2%) sync_binlog = 0 # 由操作系统控制刷盘,性能最优 binlog_cache_size = 2M # 增大binlog缓存 max_binlog_cache_size = 512M # 方案B:平衡方案(性能影响约2-3%) # sync_binlog = 100 # 每100个事务刷盘一次 # binlog_cache_size = 2M # 方案C:安全优先(性能影响约4-6%) # sync_binlog = 1 # 每次事务都刷盘,最安全但性能下降 # binlog_cache_size = 1M ``` > **💡 性能影响说明**:MySQL主从复制对主库性能影响通常为1-5%,具体取决于配置和负载。详细分析请参考:[MySQL主从复制性能影响分析.md](./MySQL主从复制性能影响分析.md) #### 1.2 从库配置(68) ```ini # /etc/mysql/my.cnf [mysqld] server-id = 2 relay-log = mysql-relay-bin read-only = 1 replicate-do-db = hzdyjs_xg ``` #### 1.3 从库数据初始化(重要!) **⚠️ 关键步骤**:在配置主从复制之前,必须先初始化从库数据,确保从库有和主库一致的数据。 **方法一:使用自动化脚本(推荐)** ```bash # 步骤1:在主库(67)执行数据导出 cd 部署脚本/ chmod +x init-mysql-slave-data.sh ./init-mysql-slave-data.sh # 步骤2:在从库(68)执行数据导入 # 脚本会自动从主库复制备份文件到从库 ./init-mysql-slave-data.sh ``` **方法二:手动执行** ```bash # 步骤1:在主库(67)锁定表并导出数据 mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;" mysql -u root -p -e "SET GLOBAL read_only = ON;" mysqldump -u root -p \ --single-transaction \ --routines \ --triggers \ --events \ --master-data=2 \ hzdyjs_xg > /tmp/hzdyjs_xg_backup.sql mysql -u root -p -e "UNLOCK TABLES;" mysql -u root -p -e "SET GLOBAL read_only = OFF;" # 记录主库binlog位置 mysql -u root -p -e "SHOW MASTER STATUS;" > /tmp/master_status.txt # 步骤2:复制备份文件到从库 scp /tmp/hzdyjs_xg_backup.sql root@172.16.0.68:/tmp/ scp /tmp/master_status.txt root@172.16.0.68:/tmp/ # 步骤3:在从库(68)导入数据 mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS hzdyjs_xg CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" mysql -u root -p hzdyjs_xg < /tmp/hzdyjs_xg_backup.sql ``` > **💡 重要提示**: > - 从库必须先有和主库一致的数据,才能配置主从复制 > - 使用`--master-data=2`参数可以在备份文件中自动包含binlog位置信息 > - 如果从库已有数据,需要先清空或重建数据库 > - **⚠️ 系统数据库说明**:系统自带的数据库(`information_schema`、`mysql`、`performance_schema`、`sys`)**不需要**复制,原因如下: > - `information_schema`:MySQL自动管理的元数据,只读,每个实例独立 > - `mysql`:系统数据库,包含用户和权限信息,但主从复制配置中已使用`binlog-do-db = hzdyjs_xg`,只复制业务数据库 > - `performance_schema`:性能监控数据库,每个实例独立,不需要复制 > - `sys`:基于performance_schema的视图,每个实例独立,不需要复制 > - **结论**:只需要复制业务数据库`hzdyjs_xg`,系统数据库由MySQL自动管理,保持默认状态即可 #### 1.4 主从复制设置 ```sql -- 在主库(67)执行 CREATE USER 'repl'@'172.16.0.68' IDENTIFIED BY 'Repl@123456'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.0.68'; FLUSH PRIVILEGES; SHOW MASTER STATUS; -- 在从库(68)执行(使用主库的binlog位置) CHANGE MASTER TO MASTER_HOST='172.16.0.67', MASTER_USER='repl', MASTER_PASSWORD='Repl@123456', MASTER_LOG_FILE='mysql-bin.000001', -- 从 SHOW MASTER STATUS 获取 MASTER_LOG_POS=154; -- 从 SHOW MASTER STATUS 获取 START SLAVE; SHOW SLAVE STATUS\G; ``` ### 2. Redis主从复制配置 #### 2.1 主节点配置(67) ```conf # /etc/redis/redis.conf bind 0.0.0.0 port 6379 requirepass Hzdyjs@123456 masterauth Hzdyjs@123456 ``` #### 2.2 从节点配置(68) ```conf # /etc/redis/redis.conf bind 0.0.0.0 port 6379 requirepass Hzdyjs@123456 replicaof 172.16.0.67 6379 masterauth Hzdyjs@123456 ``` #### 2.3 验证主从复制 ```bash # 在主节点写入 redis-cli -a Hzdyjs@123456 set test_key "test_value" # 在从节点读取 redis-cli -a Hzdyjs@123456 get test_key ``` ### 3. MinIO集群/主从配置 #### 方案A:MinIO集群模式(推荐) ```yaml # docker-compose-minio-cluster.yml version: '3.8' services: minio1: image: minio/minio:RELEASE.2025-04-22T22-12-26Z container_name: minio1 command: server --address ":9000" --console-address ":9001" http://minio{1...2}/data environment: MINIO_ROOT_USER: ruoyi MINIO_ROOT_PASSWORD: ruoyi123 volumes: - /docker/minio/data1:/data ports: - "9000:9000" - "9001:9001" networks: - minio-cluster minio2: image: minio/minio:RELEASE.2025-04-22T22-12-26Z container_name: minio2 command: server --address ":9000" --console-address ":9001" http://minio{1...2}/data environment: MINIO_ROOT_USER: ruoyi MINIO_ROOT_PASSWORD: ruoyi123 volumes: - /docker/minio/data2:/data ports: - "9002:9000" - "9003:9001" networks: - minio-cluster networks: minio-cluster: driver: bridge ``` #### 方案B:MinIO主从同步(简单方案) 使用 `mc mirror` 命令定期同步: ```bash # 在68机器上配置定时同步 mc alias set minio67 http://172.16.0.67:9000 ruoyi ruoyi123 mc alias set minio68 http://172.16.0.68:9000 ruoyi ruoyi123 # 定时同步脚本 #!/bin/bash mc mirror --watch minio67/ruoyi minio68/ruoyi ``` ### 4. Nginx负载均衡配置 #### 4.1 主负载均衡器(67) ```nginx # /etc/nginx/nginx.conf upstream backend_servers { # 机器67的后端实例 server 127.0.0.1:8080 weight=2 max_fails=3 fail_timeout=30s; server 127.0.0.1:8081 weight=1 max_fails=3 fail_timeout=30s; # 机器68的后端实例 server 172.16.0.68:8080 weight=2 max_fails=3 fail_timeout=30s; server 172.16.0.68:8081 weight=1 max_fails=3 fail_timeout=30s; # 健康检查 keepalive 32; } server { listen 80; server_name your-domain.com; # Web前端 location / { root /root/hzdyjsweb9091/dist; try_files $uri $uri/ /index.html; expires 1y; add_header Cache-Control "public, immutable"; } # 移动端前端 location /mobile { alias /root/mobile/dist; try_files $uri $uri/ /mobile/index.html; expires 1y; add_header Cache-Control "public, immutable"; } # API代理 location /prod-api/ { proxy_pass http://backend_servers/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 超时设置 proxy_connect_timeout 30s; proxy_send_timeout 30s; proxy_read_timeout 30s; } } ``` #### 4.2 备用负载均衡器(68) 配置与67相同,作为备用。可通过Keepalived实现VIP自动切换。 ### 5. Keepalived高可用配置(可选) #### 5.1 安装Keepalived ```bash # CentOS/RHEL yum install -y keepalived # Ubuntu/Debian apt-get install -y keepalived ``` #### 5.2 主节点配置(67) ```conf # /etc/keepalived/keepalived.conf global_defs { router_id nginx_master } vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 weight -2 fall 3 rise 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass KeepAlive@123 } virtual_ipaddress { 172.16.0.100/24 } track_script { chk_nginx } } ``` #### 5.3 备节点配置(68) ```conf # /etc/keepalived/keepalived.conf global_defs { router_id nginx_backup } vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 weight -2 fall 3 rise 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass KeepAlive@123 } virtual_ipaddress { 172.16.0.100/24 } track_script { chk_nginx } } ``` #### 5.4 Nginx健康检查脚本 ```bash #!/bin/bash # /etc/keepalived/check_nginx.sh if ! pgrep -x nginx > /dev/null; then systemctl start nginx sleep 2 if ! pgrep -x nginx > /dev/null; then exit 1 fi fi exit 0 ``` --- ## 🚀 部署步骤 ### 阶段一:机器2基础环境搭建 ```bash # 1. 安装基础软件 yum install -y nginx mysql redis docker docker-compose # 2. 创建目录结构 mkdir -p /root/hzdyjsweb9091/dist mkdir -p /root/mobile/dist mkdir -p /docker/{mysql,redis,minio}/{data,config,logs} # 3. 配置防火墙 firewall-cmd --permanent --add-port={80,443,8080,8081,3306,6379,9000,9001}/tcp firewall-cmd --reload ``` ### 阶段二:数据库主从配置 **⚠️ 重要**:必须先初始化从库数据,再配置主从复制! ```bash # 步骤1:从库数据初始化(在主库67执行) cd 部署脚本/ chmod +x init-mysql-slave-data.sh ./init-mysql-slave-data.sh # 步骤2:从库数据导入(在从库68执行) ./init-mysql-slave-data.sh # 步骤3:配置主从复制(在主库67执行) chmod +x setup-mysql-replication.sh ./setup-mysql-replication.sh # 步骤4:配置从库复制(在从库68执行) ./setup-mysql-replication.sh # 输入主库的 MASTER_LOG_FILE 和 MASTER_LOG_POS(从步骤1的输出获取) ``` ### 阶段三:Redis主从配置 ```bash # 1. 在67机器导出Redis数据(如需要) redis-cli -a Hzdyjs@123456 --rdb /tmp/redis_backup.rdb # 2. 在68机器配置Redis从节点(参考上述配置) ``` ### 阶段四:MinIO配置 ```bash # 方案A:MinIO集群 docker-compose -f docker-compose-minio-cluster.yml up -d # 方案B:MinIO主从同步 # 配置定时同步脚本 ``` ### 阶段五:后端服务部署 ```bash # 1. 复制JAR包到68机器 scp ruoyi-admin.jar root@172.16.0.68:/root/ # 2. 修改配置文件 # application-prod.yml 中修改数据库和Redis地址 # 3. 启动服务 java -jar -Dspring.profiles.active=prod ruoyi-admin.jar --server.port=8080 ``` ### 阶段六:前端部署 ```bash # 1. 构建前端 cd web && npm run build:prod cd ../mobile && npm run build:prod # 2. 同步到68机器 rsync -avz web/dist/ root@172.16.0.68:/root/hzdyjsweb9091/dist/ rsync -avz mobile/dist/ root@172.16.0.68:/root/mobile/dist/ ``` ### 阶段七:Nginx配置 ```bash # 1. 复制Nginx配置到68机器 scp nginx.conf root@172.16.0.68:/etc/nginx/nginx.conf # 2. 测试配置 nginx -t # 3. 启动Nginx systemctl start nginx systemctl enable nginx ``` --- ## ⚡ 性能优化 ### 1. MySQL主从复制性能优化 #### 1.1 性能影响分析 **核心结论**:MySQL主从复制对主库性能的影响通常很小,约在 **1-5%** 之间。 | 场景 | 性能影响 | 说明 | |------|---------|------| | 低负载场景 | 1-2% | 写入量小,影响可忽略 | | 中等负载场景 | 2-4% | 正常业务负载,影响轻微 | | 高负载场景 | 4-8% | 大量写入操作,影响稍明显 | **详细分析文档**:📄 [MySQL主从复制性能影响分析.md](./MySQL主从复制性能影响分析.md) #### 1.2 优化配置方案 **推荐配置(性能优先)**: ```ini # /etc/my.cnf 主库配置 [mysqld] # 性能优化配置 sync_binlog = 0 # 由操作系统控制刷盘,性能最优(性能影响约1-2%) binlog_cache_size = 2M # 增大binlog缓存 max_binlog_cache_size = 512M max_binlog_size = 500M # 增大binlog文件大小 ``` **性能提升**: - 使用`sync_binlog=0`可提升约3-5% - 增大binlog缓存可减少磁盘I/O - 使用SSD存储binlog可提升50-80% #### 1.3 性能监控 ```sql -- 查看binlog写入性能 SHOW STATUS LIKE 'Binlog_cache%'; -- 查看主从复制延迟 SHOW SLAVE STATUS\G -- 关注:Seconds_Behind_Master(应 < 1秒) -- 查看binlog文件大小 SHOW BINARY LOGS; ``` ### 2. Redis主从复制性能优化 #### 2.1 性能影响分析 Redis主从复制对主节点性能影响极小(< 1%),因为: - Redis主从复制是异步的 - 主节点只需要将命令发送给从节点 - 网络传输开销很小 #### 2.2 优化配置 ```conf # /etc/redis/redis.conf 主节点配置 # 优化网络传输 tcp-backlog = 511 tcp-keepalive = 300 # 优化内存 maxmemory-policy = allkeys-lru ``` ### 3. Nginx负载均衡性能优化 #### 3.1 连接池优化 ```nginx # nginx.conf upstream backend_servers { # 使用keepalive连接池 keepalive 32; keepalive_requests 100; keepalive_timeout 60s; # 负载均衡算法 least_conn; # 最少连接数(推荐) # ip_hash; # IP哈希(会话保持) # fair; # 响应时间(需要第三方模块) } ``` #### 3.2 缓存优化 ```nginx # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 1y; add_header Cache-Control "public, immutable"; access_log off; } # API响应缓存(可选) proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=api_cache:10m max_size=1g inactive=60m; ``` ### 4. 系统资源优化 #### 4.1 内核参数优化 ```bash # /etc/sysctl.conf # 网络优化 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 # 内存优化 vm.swappiness = 10 vm.overcommit_memory = 1 # 应用配置 sysctl -p ``` #### 4.2 文件描述符优化 ```bash # /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 ``` ### 5. 数据库查询优化 #### 5.1 读写分离 ```yaml # application-prod.yml spring: datasource: dynamic: primary: master strict: false datasource: master: url: jdbc:mysql://172.16.0.67:3306/hzdyjs_xg # 写操作使用主库 slave: url: jdbc:mysql://172.16.0.68:3306/hzdyjs_xg # 读操作使用从库 ``` **性能提升**: - 读操作分流到从库,减轻主库压力 - 主库专注于写操作,性能提升约20-30% #### 5.2 连接池优化 ```yaml # application-prod.yml spring: datasource: druid: initial-size: 10 min-idle: 10 max-active: 50 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 ``` ### 6. 性能测试和基准 #### 6.1 压力测试 ```bash # 使用Apache Bench测试 ab -n 10000 -c 100 http://your-domain.com/prod-api/ # 使用wrk测试 wrk -t4 -c100 -d30s http://your-domain.com/prod-api/ ``` #### 6.2 性能基准 | 指标 | 目标值 | 说明 | |------|--------|------| | API响应时间 | < 200ms | 95%请求 | | 数据库查询时间 | < 50ms | 平均查询时间 | | 主从复制延迟 | < 1s | Seconds_Behind_Master | | CPU使用率 | < 70% | 正常负载 | | 内存使用率 | < 80% | 正常负载 | --- ## 📈 监控和运维 ### 1. 健康检查脚本 ```bash #!/bin/bash # health_check.sh # 检查MySQL主从状态 mysql -u root -p -e "SHOW SLAVE STATUS\G" | grep -i "slave_io_running\|slave_sql_running" # 检查Redis主从状态 redis-cli -a Hzdyjs@123456 INFO replication # 检查后端服务 curl -f http://127.0.0.1:8080/health || echo "Backend service down" # 检查Nginx systemctl is-active nginx || echo "Nginx down" ``` ### 2. 日志收集 ```bash # 统一日志目录 /var/log/app/ ├── nginx/ │ ├── access.log │ └── error.log ├── backend/ │ ├── ruoyi-admin-8080.log │ └── ruoyi-admin-8081.log └── mysql/ ├── error.log └── slow-query.log ``` ### 3. 监控指标 - **系统指标**: CPU、内存、磁盘、网络 - **应用指标**: 请求量、响应时间、错误率 - **数据库指标**: 连接数、慢查询、主从延迟 - **Redis指标**: 内存使用、命中率、主从状态 --- ## 🔄 故障转移方案 ### 1. 自动故障检测 ```bash #!/bin/bash # failover_check.sh # 检查主节点健康状态 if ! curl -f http://172.16.0.67:8080/health; then echo "主节点故障,切换到备节点" # 执行切换逻辑 # 1. 更新DNS/负载均衡配置 # 2. 提升从库为主库 # 3. 启动备节点服务 fi ``` ### 2. 手动故障转移流程 1. **检测故障**: 确认主节点不可用 2. **停止主节点服务**: 防止数据冲突 3. **提升从库**: MySQL从库提升为主库 4. **切换Redis**: Redis从节点提升为主节点 5. **更新配置**: 修改应用配置指向新主节点 6. **启动服务**: 在备节点启动所有服务 7. **验证功能**: 验证服务正常 --- ## ⚠️ 注意事项 ### 1. 数据一致性 - MySQL主从复制可能存在延迟,关键操作建议在主库执行 - Redis主从复制为异步,注意数据一致性 - MinIO集群模式确保数据一致性,主从同步可能存在延迟 ### 2. 网络配置 - 确保两台机器网络互通 - 配置防火墙规则允许必要端口 - 建议使用内网IP通信,提高安全性 ### 3. 资源规划 - 根据实际负载调整实例数量 - 监控资源使用情况,及时扩容 - 预留足够的磁盘空间用于日志和备份 ### 4. 安全配置 - 修改默认密码 - 配置SSL证书 - 限制数据库和Redis的访问IP - 定期更新系统和软件 ### 5. 备份策略 - **数据库**: 每日全量备份 + 实时binlog备份 - **文件存储**: MinIO定期同步/备份 - **配置文件**: Git版本控制 - **应用日志**: 定期归档和清理 --- ## 📋 部署检查清单 ### 部署前检查 - [ ] 两台机器网络互通 - [ ] 防火墙规则配置完成 - [ ] 基础软件安装完成 - [ ] 目录结构创建完成 - [ ] 配置文件准备完成 ### 部署后验证 - [ ] MySQL主从复制正常 - [ ] Redis主从复制正常 - [ ] MinIO集群/同步正常 - [ ] 后端服务启动正常 - [ ] Nginx负载均衡正常 - [ ] 前端访问正常 - [ ] API接口测试通过 - [ ] 健康检查脚本正常 - [ ] 监控告警配置完成 --- ## 🔧 常用运维命令 ### 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;" # 重置从库 mysql -u root -p -e "RESET SLAVE;" ``` ### Redis主从管理 ```bash # 查看主从信息 redis-cli -a Hzdyjs@123456 INFO replication # 手动切换主从 redis-cli -a Hzdyjs@123456 SLAVEOF NO ONE ``` ### 服务管理 ```bash # 查看后端服务状态 ps aux | grep ruoyi-admin # 重启后端服务 systemctl restart ruoyi-admin # 查看Nginx状态 systemctl status nginx # 重载Nginx配置 nginx -s reload ``` --- ## 📞 技术支持 如遇到部署问题,请检查: 1. 系统日志和应用日志 2. 网络连通性 3. 防火墙和安全组设置 4. 数据库连接状态 5. 资源使用情况(CPU、内存、磁盘) --- **📝 文档版本**: v1.0 **🔄 最后更新**: 2025-01-27 **👨‍💻 维护人员**: 开发团队