# 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:00）crontab。
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
```
