Files
Nexus/docs/changelog/2026-06-06-nx-god-menu-audit-round4-mysql-backup-cron.md
T

38 lines
1.5 KiB
Markdown
Raw Normal View History

# nx 上帝菜单巡检第四轮 — Docker MySQL 备份 + 运维 cron
| 项 | 内容 |
|----|------|
| 日期 | 2026-06-06 |
| 动机 | 升级时 `backup_mysql` 因宿主机无 `mysqldump` 且 URL host 为 1Panel 容器名而静默跳过;`db_backup.sh` 仍读 Supervisor 时代 `.env` |
## 变更摘要
1. **mysql_dump_to_file.sh**(新):统一 mysqldump 策略 — `docker exec` MySQL 容器 → 宿主机客户端 → `docker run` on `1panel-network`
2. **backup_mysql**:改调共享脚本,不再要求宿主机预装 `mysqldump`
3. **db_backup.sh**Docker 生产路径,从 Nexus 容器/volume 解析 `NEXUS_DATABASE_URL`,默认 `/var/backups/nexus`
4. **install_ops_cron.sh**(新):幂等写入 `health_monitor`(每分钟)与 `db_backup`(每日 03:00crontab。
5. **nx**:菜单 `[e]` / 子命令 `nx cron` 安装上述 cron。
6. **install_ops_cron**:宿主机无 `crontab` 时自动 `apt install cron` 并启用服务。
## 涉及文件
- `deploy/mysql_dump_to_file.sh`
- `deploy/install_ops_cron.sh`
- `deploy/db_backup.sh`
- `deploy/nexus-1panel.sh`
- `deploy/nx`
## 迁移 / 重启
- 无需 DB 迁移;仅需 `git pull` 更新 host 脚本。
- 可选:`sudo nx cron` 或菜单 `[e]` 安装 crontab。
## 验证
```bash
bash -n deploy/mysql_dump_to_file.sh deploy/install_ops_cron.sh deploy/db_backup.sh
sudo bash deploy/mysql_dump_to_file.sh --output /tmp/nexus-test.sql --root /opt/nexus
ls -lh /var/backups/nexus/
sudo nx cron && crontab -l | grep nexus
```