运维开发网

记录一次PG数据库高可用改造遇到的问题

运维开发网 https://www.qedev.com 2021-04-15 23:21 出处:51CTO 作者:李石岩
PG高可用集群,最好采用相同的环境,避免出现问题。repmgr高可用改造的时候,备库要提前安装好插件,可以防止出现无法启动的问题。$PGDATA目录不要创建文件夹。同步时要注意文件系统格式,查询表空间。通过这个表空间查询来申请磁盘。

现有一套PG数据库单机,通过df查看磁盘为8T,数据文件及其部署目录总共835G。由于时间紧,给的任务要尽快完成,本次高可用改造踩坑有几点

  • 环境配置,由于是利旧,源端Linux版本为7.6,目标端版本为centos6.5。  由于提前没有检查环境,急忙上线,不同环境下,遇到很多问题。

  • 安装包下载需要下载x86_64的postgresql11

    下载目录https://yum.postgresql.org/11/redhat/rhel-6-x86_64/repoview/index.html

    centos7的下载目录https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7.5-x86_64/。都是采用的rpm包

  •  安装repmgr包,不一致版本,目标端为低版本。导致repmgr可以同步克隆过去数据,但是无法实现守护。通过升级repmgr到相同版本才实现监控。

  • 由于安装插件timescale和pgpartman, 在同步完毕以后,如果插件没有安装,由于源端安装,目标端pg进程会启动不起来。

  • timescale 这个在centos6.5 数据库,内核是2.6的,而需要利用make3,经过几个安装,cmake3 通过cmake3.6.0.tar.gz 这个可以安装。其他的高版本,低版本无法安装,缺少依赖。

  • timescaledb这个采用tar包,虽然cmake3安装成功了,也是无法安装的。最后采用rel7的rpm包给安装了。妥妥打脸。

  • 内存不足问题,由于目标端机器内存已经占用了80G,在通过repmgr之后,修改cluster_name,修改work_mem调小,最后才启动数据库。然后添加备库注册,开启守护进程。注意用自己的配置文件。rpm包会生成一个,不要用。repmgr -f ~/repmgr.conf standby register

  • 本次主机没有重启。安装成功。

  • 本次时间机器给的突然,环境没有仔细检查。

  • $PGDATA不要自己创建目录,将表空间放在里面,否则repmgr无法同步。解决方法就是修改表空间到外目录,还有就是配置repmgr.conf到一个新目录,然后将其copy到原来的$PGDATA目录下。

  • 通过语句查看实际的表空间,本次遇到很大的坑就是repmgr同步的过程中,df看到是835G,觉得空间旧这么大,在备库添加了2T磁盘。但是实际上,通过语句查询,表空间加起来有3G多。原来是采用了文件系统压缩zfs格式。而我们备库采用的xfs。xfs未被压缩,所以导致同步失败。查询语句为

  • select pg_size_pretty(pg_database_size('sc'));
  •  zfs压缩方法https://postgres.fun/20140710114452.html

0

精彩评论

暂无评论...
验证码 换一张
取 消