跳转至

灾难恢复与数据迁移 (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 容器。