EN 联系我们加入我们
典型案例
您现在的位置:首页 > 典型案例
【案例分享】标准PG集群安装步骤及常见问题处理,避坑指南来了!

## pacemaker + corosync

提前准备三台红旗7.6,

主机名:pgnode1/2/3 

IP:10.3.6.71/72/73   

root配置好互信,以下步骤默认root操作,step1-13在所有节点执行,step14在第一节点验证即可。



目录

image.png

image.png




1. 主机名解析

图片


2. 创建用户

image.png


3. 创建PG相关文件系统 

image.png


4. 解压

image.png

5. 修改权限


6. 开始编译安装

image.png


7. 版本软连接

image.png

8. 创建 ha 用户和组

image.png


9. Linux 配置

image.png

image.png


image.png


10.  安装HA需要的软件包

image.png


11. Asianux-7.6.iso 挂载到 /mnt 方式,此次安装PG集群不需要

image.png

12. 开机启动

image.png


13. 安装 pg_pathman 插件 (可选)

image.png

image.png

image.png

15. 验证pg集群

image.png

image.png

16. 添加环境变量 /etc/profile

image.png

17. 验证pg集群(第一个节点执行)

image.png

image.png

18. 查看集群 (第一个节点执行)

image.png


image.png

image.png

19. 启动集群 (第一个节点执行)

image.png

20. 集群其他命令参考

image.png

21. 常见问题一:pg数据库idle或idle in transaction状态会话过多


1、用postgres用户登录告警的数据库节点;

2、登录数据库,检查idle或idle in transaction状态的会话pid:


image.png

3、根据情况杀掉过多的idle或idle in transaction状态的会话:

image.png

如果上述命令无法正常kill掉会话,则继续执行

image.png


4、检查主机资源使用是否恢复正常,视情况决定是否继续kill相关进程。



22. 常见问题二:pg数据库某表、某字段无法modify

1、用postgres用户登录告警的数据库节点;

2、数据库日志相关锁检查;

标准安装的数据库,在当数据库自身检查到死锁时会在数据库日志中留存记录,关键字信息为:“40P01” 侦测到死锁(DEADLOCK DETECTED),可以通过cat 数据库日志名 | grep 40P01来查看是否有数据库自身侦测到的死锁。数据库pg_stat_activity 发现有wait_event_type字段为lock的记录且长时间不消失。使用psql命令登陆到具体数据库“查锁”,看里面的语句和应用提供的表和语句进行对比。如果有一致的,询问应用是否杀语句。如果没有,可能就和锁无关了。可以通过查询topsql确认是否在一直运行某个语句,如果应用确认需要杀语句,则进入下一步杀语句。

3、针对某表查询锁情况

执行语句:


image.png根据上面查出来的pid去表pg_stat_activity查询一下该锁对应的SQL语句:

image.png

与应用确认,可以杀语句后,执行以下命令杀掉语句:

image.png


23. 常见问题三:pg数据库集群状态异常无主节点


1、用root用户登录数据库集群任一节点;

2、检查集群状态:cls_status,发现无主节点;

3、可执行脚本由集群根据各数据库的时间线选择出主

image.png

4、如果原主数据库故障后不能以备的方式加入集群,以重建备库的方式加入集群

image.png

5、查看数据库集群状态是否正常,流复制是否正常建立:

image.png


24. 常见问题四:pg数据库备节点状态异常备节点状态为stop或alone


一般为集群间心跳超时导致,现象为集群有fail-count失败数告警。

1、用root用户登录数据库集群任一节点;

2、检查集群状态:cls_status;


image.png


3、一般情况下会有fail-count告警,可以尝试通过resource cleanup 恢复异常节点的集群状态:

image.png

4、如果异常节点集群状态未恢复,可能为集群主备发生切换,需要清理异常节点的锁文件,可以尝试删除锁文件后再执行第3步的命令:

image.png

5、如果还是不成功,则可能是数据库的baseline发生变化,或主节点的wal日志文件以及归档,备节点启动时无法找到文件,可以查看数据库日志分析具体原因:

数据库日志目录:

pg10.5:/pgdb/pgdata/log

pg11.6:/pglog

pg12.5:/pglog

则需要重构异常备节点:

image.png

25. 常见问题五:pg集群脑裂情况分析


关于pg集群脑裂问题分析请微信搜索“安图特”公众号,查看发表于2023年10月31日关于某业务平台pg数据库集群脑裂问题分析的文章。





版权所有 安图特(北京)科技有限公司 备案号:京ICP备17074963号-1
技术支持:创世网络