升级PG10的背景
迫于无奈,之前的pg10从18年一直用到现在,一直好好的。可是,最近升级了一个应用,却提示将不再兼容pg11以下的版本,好吧,这是被迫升级。
于是随便去扫描了一遍数据库的大小:
pg_database.datname,
pg_size_pretty(pg_database_size(pg_database.datname)) AS SIZE
FROM pg_database;
结果:
datname | size |
---|---|
ean | 41 GB |
china | 154 MB |
gadm | 977 MB |
gadm_levels | 2239 MB |
gitlabhq_production | 73 MB |
grafana | 10 MB |
japan_boundary | 279 MB |
nextcloud2 | 203 MB |
osm_global | 511 GB |
osm2shp_db | 3648 MB |
photo_db | 275 MB |
photo_db_test | 8537 kB |
poi_db | 50 GB |
postgres | 19 MB |
sonar | 248 MB |
template_postgis | 19 MB |
template0 | 7801 kB |
template1 | 7945 kB |
timezone | 189 MB |
wb_osm_db | 459 MB |
world_boundary | 317 MB |
看这趋势,升级有点麻烦了,于实果断删掉了osm_global
库,老早不更新了,也没用这个了。poi_db
也很久不用,不过ean
的数据还有点作用,这两个就备份一下然后存着吧,说不定哪天就需要用了。
删除数据之路
没啥好说的,不写了。只是之前 osm_global
这个DB是单独挂载到另一个磁盘来着,删掉db后,居然空间还占用着,有点过分了,于是再删搞定。删除后数据占用大约9.1G。
升级第一步
升级的方案有好几种,其他的方式都有点麻烦,直接dumpall,然后import最简单。
导出, 一定不要用gz, 如磁盘空间够用,加了gz cpu狂飙,硬盘又不是不快,而且导入又得彪一次。
cd /opt/backup/
pg_dumpall > 202007222031.pgsql.dumpall
停用旧版PG10
停用简单,删除相关postgresql包,中间省略100多个步骤,别提多心酸了,卸载都麻烦。
yum remove ......
安装新版PG12 (CentOS 7)
由于之前有安装过,而且是通过yum安装的,直接使用 https://mirrors.tuna.tsinghua.edu.cn/postgresql/ 安装,这个速度杠杠的,不过先安装 https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 然后修改,/etc/yum.repos.d/pgdg-redhat-all.repo
替换源,并启用pg12.
剩下的过程由于过于血腥就不列了,反正都是安装失败,各种依赖冲突。真忘记了自己两年前怎么解决这些问题的,于是安心上docker。
使用postgresql 的 Docker 安装 PG12
理想情形:
- 步骤1: docker pull
- 步骤2:start
- 步骤3:进入容器
- 步骤4:导入数据收工
实际情形:
- 官方包不支持postgis
- postgis 官方只提供了Dockerfile, 需要自己build。
- 然后发现居然都postgis 3.0了,世界发展真快。
- 那个docker完全build不动。
生成自己的postgresql12-postgis3.0 镜像
下载dockerfile
git clone git@github.com:postgis/docker-postgis.git
cd docker-postgis/12-3.0
修改Dockerfile,主要替换源,替换postgresql源为清华源,替换debian源为清华源。
RUN sed -i "s|//apt.postgresql.org/pub/repos/apt/|//mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/|g" /etc/apt/sources.list.d/pgdg.list \
&& sed -i "s|deb.debian.org/debian|mirrors.tuna.tsinghua.edu.cn/debian|g" /etc/apt/sources.list \
&& sed -i "s|security.debian.org/debian-security|mirrors.tuna.tsinghua.edu.cn/debian-security|g" /etc/apt/sources.list \
&& apt-get update \
# .........
准备Build:
查看状况:
# docker images pg-postgis 12-3.0 d59a515fe1b1 1 hours ago 489MB postgres 12 4b52913b0a3a 1 hours ago 313MB
运行postgresql-postgis:12-3.0
镜像
挂载 /opt/backup
主要便于数据恢复和备份操作,没需要可以只挂载/var/lib/postgresql/data
具体参数参考官方说明,参数有点多。。。
-p 5432:5432 \
--name postgres \
--restart always \
-e POSTGRES_PASSWORD=1234567890 \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /srv/postgres/data:/var/lib/postgresql/data \
-v /opt/backup:/var/lib/postgresql/data-backup \
pg-postgis:12-3.0
最后的最后
一切很完美,完结撒花。。
当前还没有任何评论