生活分享

  • 首页
HETAO
业余码农、业余机械爱好者
  1. 首页
  2. 未分类
  3. 正文

极简升级postgresql by docker 9.4-14 稳稳的幸福

2022年9月21日 1439点热度 1人点赞 0条评论

目前最新版postgresql是15beta4,正式版最新是14

pg确实好用,多年未动,最近整理服务器时pgadmin弹窗才发现最新的客户端不适配了都,于是就想着升级一下,9.4看上去像是上个时代的产物了。

须知

  1. 数据库升级跟库升级一样,是一件痛苦的事,好在postgresql有提供pg_upgrade,它要求逐个版本升级
  2. 版本9时遵循A.B.C版本号,也就是9.6.1-n无需升级可以直接用,版本10开始10.x无需升级可以直接用。所以我的9.4需要先升级到9.6才可以继续大版本升级
  3. pg升级的方式都是面向集群的,所以如果不用docker要开两个实例很麻烦,备份同理,幸运的是有好心人把升级都打包好了tianon/postgres-upgrade

升级步骤

下文中的9.4是我的版本号,如果你的是9.x请替换


cd 你的pg目录,就是data文件夹
mkdir -p ./9.4
mv ./data ./9.4/
# 最好先zip备份下数据
zip -r 9.4.zip 9.4
mkdir -p ./9.6/data
mkdir -p ./14/data
# 目录准备完毕,开始升级
#先升级到9.6
docker run --rm \
    -v $PWD:/var/lib/postgresql \
    tianon/postgres-upgrade:9.4-to-9.6 \
    --link
# 再升级到14
docker run --rm \
    -v $PWD:/var/lib/postgresql \
    tianon/postgres-upgrade:9.6-to-14 \
    --link

最谨慎的升级版本(建议大系统采用)

$ mkdir -p postgres-upgrade-testing
$ cd postgres-upgrade-testing
$ OLD='9.4'
$ NEW='9.5'

$ docker pull "postgres:$OLD"
$ docker run -dit \
    --name postgres-upgrade-testing \
    -v "$PWD/$OLD/data":/var/lib/postgresql/data \
    "postgres:$OLD"
$ sleep 5
$ docker logs --tail 100 postgres-upgrade-testing

$ # let's get some testing data in there
$ docker exec -it \
    -u postgres \
    postgres-upgrade-testing \
    pgbench -i -s 10

$ docker stop postgres-upgrade-testing
$ docker rm postgres-upgrade-testing

$ docker run --rm \
    -v "$PWD":/var/lib/postgresql \
    "tianon/postgres-upgrade:$OLD-to-$NEW" \
    --link

$ docker pull "postgres:$NEW"
$ docker run -dit \
    --name postgres-upgrade-testing \
    -v "$PWD/$NEW/data":/var/lib/postgresql/data \
    "postgres:$NEW"
$ sleep 5
$ docker logs --tail 100 postgres-upgrade-testing

$ # can now safely remove "$OLD"
$ sudo rm -rf "$OLD"
Post Views: 1,427
标签: 暂无
最后更新:2022年9月21日

jinzhao

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 生活分享. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备14004285号-1