维护与备份 OCI 服务器

为 OCI Linux 实例建立更新、配置记录、应用一致性备份、引导卷备份和恢复演练的日常制度。

#type / howto #status / growing #tech / ops #resource / oracle-cloud #platform / server

[!abstract] 核心结论 引导卷备份、文件备份和数据库导出解决的是不同问题。只有能够在另一环境成功恢复的备份,才算可用备份。

维护与备份 OCI 服务器

目标

  • 每周可发现更新、磁盘、服务和安全问题;
  • 配置与数据有异地副本;
  • 知道每类数据用什么方式恢复;
  • 引导卷备份不超过免费数量和存储边界;
  • 至少完成一次从备份恢复的演练。

1. 建立资产与服务清单

记录但不提交秘密:

实例/引导卷/VNIC OCID
系统与架构
公网 IP 和域名
OCI NSG/Security List
开放端口
systemd 服务
Docker Compose 项目
数据目录
配置目录
备份目的地与保留周期
恢复负责人

2. 每周健康检查

uptime
free -h
df -hT
df -ih
sudo systemctl --failed
sudo journalctl -p warning --since '7 days ago' --no-pager
sudo ss -lntup
sudo ufw status verbose
sudo fail2ban-client status sshd
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}' 2>/dev/null || true

关注磁盘 inode、意外监听端口、失败服务和容器重启循环。

3. 安全更新

先看待更新项:

sudo apt-get update
apt list --upgradable

变更前备份关键配置和数据,再更新:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
test -f /var/run/reboot-required && cat /var/run/reboot-required || true

内核、SSH、Docker 或数据库升级后安排维护窗口和回归验证。

4. 配置备份

适合版本化但必须脱敏的内容:

  • Compose、Caddy/Nginx 配置;
  • systemd unit;
  • 部署脚本;
  • 包和镜像版本;
  • 防火墙规则的文本导出。

不进入普通 Git:私钥、.env、数据库密码、API token、MFA 恢复码、真实备份数据。

示例导出:

sudo sshd -T > sshd-effective.txt
sudo ufw status numbered > ufw-rules.txt
docker compose config > compose-rendered.yaml
dpkg-query -W -f='${binary:Package}\t${Version}\n' > packages.tsv

检查输出是否含秘密后再传输。

5. 应用一致性备份

PostgreSQL

pg_dump --format=custom --file=app-$(date +%F).dump DATABASE_NAME
pg_restore --list app-YYYY-MM-DD.dump | head

文件服务

停止写入或使用应用自带快照后再归档:

sudo tar --xattrs --acls -C /srv -czf app-data-$(date +%F).tar.gz app-data
sha256sum app-data-$(date +%F).tar.gz > app-data-$(date +%F).sha256

直接复制正在写入的数据库目录不能保证一致性。

6. OCI 引导卷备份

OCI Boot Volume Backup 是时间点、crash-consistent 快照,可在实例运行或停止时创建。它适合快速恢复整个系统,但不一定保证数据库应用一致。

操作前:

  • 检查当前免费卷备份总数;
  • 给备份写清日期、原因和源实例;
  • 大变更前做手动备份;
  • 定期删除确认不再需要的旧备份;
  • 重要数据另做跨供应商/本地副本。

7. 3-2-1 备份

  • 至少 3 份数据;
  • 使用 2 种不同介质/系统;
  • 至少 1 份在 OCI 之外。

OCI 实例、同区域块卷和同账号 Object Storage 不能完全视为三个独立故障域。

8. 恢复演练

每季度选择一个小服务:

  1. 创建空目录或临时实例;
  2. 恢复配置;
  3. 恢复数据库/数据文件;
  4. 启动服务;
  5. 验证登录、读写和关键业务;
  6. 记录耗时、缺失步骤和秘密来源;
  7. 清理临时资源并检查费用。

验证清单

  • 最近备份成功且有校验和
  • 至少一个副本位于 OCI 之外
  • 数据库使用逻辑/应用一致性备份
  • 引导卷备份数量在免费边界内
  • 恢复文档不依赖某个人的记忆
  • 最近一次恢复演练成功
  • 备份中秘密已加密且密钥分开保存
创建于 2026/7/20 更新于 2026/7/20