PostgreSQL 实在升级得太频繁了,而且每次大版本更新就需要使用专门的工具进行数据迁移,这篇文章简要记录一下使用 docker-postgres-upgrade 升级现有的部署在 Docker Swarm 中的 PostgreSQL 数据库的一些过程。
首先需要创建两个数据卷,一个用来存放目前的数据库文件,另一个用来存放升级后的文件:
docker volume create pgsql-upgrade-11
docker volume create 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