灾难恢复与数据迁移 (Data Migration & Recovery)¶
本文档专用于从旧环境迁移数据,或在灾难恢复场景下还原数据。正常全新部署请跳过此文档。
1. 迁移前准备¶
1.1 源端备份 (Backup Source)¶
在旧服务器上执行:
# 1. 停止相关容器
docker stop ops-portainer net-traefik-kr
# 2. 压缩数据卷
# 假设数据在 ./portainer-data 和 ./acme.json
sudo tar -czvf data-backup.tar.gz ./portainer-data ./acme.json ./tailscale-data
1.2 数据传输 (Transfer)¶
使用 SCP 将备份文件传送到新服务器:
scp data-backup.tar.gz user@NewServer-IP:~/infra/bootstrap/
2. 恢复数据 (Restore Target)¶
在新服务器上,在执行 docker compose up 之前 恢复数据。
2.1 解压数据¶
cd ~/infra/bootstrap
sudo tar -xzvf data-backup.tar.gz
# 确认权限 (Portainer 需要 root 或特定用户,视旧环境而定,通常保持原样)
# 如果由于用户 ID 变更导致权限错误,可重置:
# sudo chown -R 1000:1000 ./portainer-data
# (注意:Portainer 内部可能使用 root,请先尝试不改权限)
2.2 恢复 Traefik 证书¶
ACME 证书文件权限极其敏感,必须为 600。
sudo mv acme.json /opt/infra/stacks/net-traefik-kr/
sudo chmod 600 /opt/infra/stacks/net-traefik-kr/acme.json
3. 特殊场景:Portainer 迁移¶
如果你是从旧的 Portainer 迁移过来,且希望保留所有 Stack 定义和 User 设置:
1. 确保新启动的 Portainer 容器挂载了恢复后的 /data 目录。
2. 启动容器:docker compose up -d ops-portainer。
3. 注意:如果旧 Portainer 版本过低,新版可能会自动执行数据库迁移。建议先备份 .tar.gz 再启动。
4. 特殊场景:Tailscale 身份迁移¶
如果你想让新服务器直接“继承”旧服务器的 Tailscale IP (防止修改防火墙规则):
1. 恢复 var/lib/tailscale/tailscaled.state 文件。
2. 确保 hostname 与旧机器一致。
3. 启动 Tailscale 容器。