目录:网上冲浪指南

升级到 PostgreSQL12(docker 版)

2020/01/14

PostgreSQL 实在升级得太频繁了,而且每次大版本更新就需要使用专门的工具进行数据迁移,这篇文章简要记录一下使用 docker-postgres-upgrade 升级现有的部署在 Docker Swarm 中的 PostgreSQL 数据库的一些过程。

首先需要创建两个数据卷,一个用来存放目前的数据库文件,另一个用来存放升级后的文件:

docker create volume pgsql-upgrade-11
docker create volume pgsql-upgrade-12

接下来将之前的数据容器中的数据库文件拷贝到旧版本数据卷中:

docker run --rm \
    -v pgsql-upgrade-11:/volumes/11 \
    db-backup-image:latest \
    sh -c "cp -vRf /backup/var/lib/postgres/data/. /volumes/11/"

接下来直接使用 docker-postgres-upgrade 升级数据库文件:

docker run --rm \
    -v pgsql-upgrade-11:/var/lib/postgresql/11/data \
    -v pgsql-upgrade-12:/var/lib/postgresql/12/data \
    tianon/postgres-upgrade:11-to-12

这样,所有的数据迁移步骤就完成了,为了方便使用,给迁移后的数据创建一个镜像,备份到腾讯云上面去:

docker run --name db-backup-image:latest \
    -v pgsql-upgrade-11:/volumes/data \
    alpine:latest sh -c "mkdir -p /backup/var/lib/postgres/data && cp -vRf /volumes/data/. /backup/var/lib/postgres/data/"
docker push db-backup-image:latest