如何不克隆整机将Docker部署的TimescaleDB迁移到另一台EC2机器
Docker部署TimescaleDB实例迁移方案
前置操作:保证数据一致性
首先停止当前运行的数据库容器,避免运行中拷贝数据导致文件损坏:
docker stop timescaledb
你启动容器时加了--rm参数,停止后容器会自动删除,但所有业务数据都存储在宿主机的/home/ubuntu/pgdata3目录下,不会丢失。
迁移步骤
- 第一步:迁移数据目录到新EC2实例,可选两种方案:
- 数据存储在独立EBS卷:直接在AWS控制台卸载该EBS卷,挂载到新EC2实例并挂载到
/home/ubuntu/pgdata3路径,适合大数据量场景,迁移速度最快 - 数据存储在实例根盘:用scp或rsync全量拷贝数据目录到新实例对应路径,示例scp命令:
scp -r /home/ubuntu/pgdata3 ubuntu@新实例公网IP:/home/ubuntu/注意:数据量较大时可先执行一次rsync增量同步,再停库做最后一次同步,大幅缩短业务停机时间
- 数据存储在独立EBS卷:直接在AWS控制台卸载该EBS卷,挂载到新EC2实例并挂载到
- 第二步:新实例环境准备
- 安装Docker,确保基础运行环境正常
- 执行
id ubuntu确认新实例ubuntu用户的UID、GID为1000:1000,和启动命令中的用户参数匹配 - 设置数据目录权限:
sudo chown -R 1000:1000 /home/ubuntu/pgdata3- 拉取对应版本的TimescaleDB镜像:
docker pull timescale/timescaledb-ha:pg13-latest - 第三步:使用原命令启动服务
新实例上直接执行你原来的screen启动命令即可:
启动后可进入screen会话或执行screen -dmS i2 screen -S i2 -X stuff 'docker run -ti --user 1000:1000 -p 5432:5432 --name timescaledb --volume=/home/ubuntu/pgdata3:/home/postgresql/pgdata --rm -e POSTGRES_PASSWORD=sdjaisiisiauda123114892u3hihi -e PGDATA=/home/postgresql/pgdata timescale/timescaledb-ha:pg13-latest;\n'docker logs timescaledb确认服务运行状态、校验数据完整性。
内容的提问来源于stack exchange,提问作者hg628193hg
相关产品推荐
相关产品推荐

