使用docker对PostgreSQL进行版本数据迁移

简述

当对PostgreSQL数据库进行版本更新时,需要迁移数据,可以使用pg_upgrade 。
pg_upgrade (原名称为 pg_migrator) 允许数据在 PostgreSQL 数据文件中升级到PostgreSQL新的大版本而不需要数据的备份/还原,通常适用在升级大版本时,例如从8.4.7升级到当前 PostgreSQL的新最新版本。 在小版本之间升级往往是不需要的, 例如 从9.0.1升级到9.0.4。
文档:http://www.postgres.cn/docs/10/pgupgrade.html
主要参数:
[image:78631F9D-FD54-4C31-A342-337FA81B0A38-11728-000017C84159E850/2FB9976E-0F69-4FA8-B286-D2055FF53CA7.png]

实践

比如从9.4升级到10.4

  • 1.从9.4版本容器中获取到 PostgreSQL 的运行文件和旧的数据目录
docker cp postgres_old_container:/usr/lib/postgresql/9.4 .
docker cp postgres_old_container:/var/lib/postgresql/data/pgdata data-old
  • 2.初始化一个10.4的数据目录
$ docker run --name="postgres_new" -v $(pwd)/data-new:/var/lib/postgresql/data -it --rm postgres:10.4
  • 3.在10.4版本的容器下完成pg_upgrade
    运行10.4容器:
$ docker run --name="tmp" -e POSTGRES_PASSWORD=postgres -v $(pwd)/9.4:/usr/lib/postgresql/9.4 -v $(pwd)/data-new:/data/new -v $(pwd)/data-old:/data/old -it --rm postgres:10.4 bash

升级:

/usr/lib/postgresql/10/bin/pg_upgrade -b /usr/lib/postgresql/9.4/bin -B /usr/lib/postgresql/10/bin -d /data/old -D /data/new
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值