现有一套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
精彩评论