当前位置: 首页 > news >正文

服务器时间发生跳变导致hghac中对应主机状态频繁切换为crash或stop

文章目录

  • 环境
  • 症状
  • 问题原因
  • 解决方案
  • 相关文档
  • 报错编码

环境

系统平台:N/A
版本:N/A

症状

集群状态:

[root@bthbj-hgywsjkjq-ip28-cen76 ~]# hghactl list

  • Cluster: highgo-ee-cluster —±-------------±--------±—±----------+

| Member | Host | Role | State | TL | Lag in MB |

±---------±-------------------±-------------±--------±—±----------+

| pgsql_1 | x.x.100.1:5866 | leader | running | 84 | |

| pgsql_2 | x.x.100.2:5866 | crash | running | 84 | 0 |

±---------±-------------------±-------------±--------±—±----------+

注意:虽然状态显示为crash,但是实际状态并未停止,仍然是running,数据库正常访问。

问题原因

检查hghac日志:

2020-04-03 14:40:35,434 INFO: Lock owner: None; I am pgsql_2

2020-04-03 14:40:35,524 INFO: PAUSE: postgres is not running

2020-04-03 14:40:45,433 INFO: Process 77888 is not postmaster, too much difference between PID file start time 1565058216.95 and process start time 1565058213

2020-04-03 14:40:45,434 INFO: Process 77888 is not postmaster, too much difference between PID file start time 1565058216.95 and process start time 1565058213

2020-04-03 14:40:45,434 WARNING: Postgresql is not running.

2020-04-03 14:40:45,434 INFO: Lock owner: None; I am pgsql_2

2020-04-03 14:40:45,523 INFO: PAUSE: postgres is not running

2020-04-03 14:40:55,435 INFO: Process 77888 is not postmaster, too much difference between PID file start time 1565058216.95 and process start time 1565058213

2020-04-03 14:40:55,435 INFO: Process 77888 is not postmaster, too much difference between PID file start time 1565058216.95 and process start time 1565058213

2020-04-03 14:40:55,435 WARNING: Postgresql is not running.

原因:

由于服务器时间发生跳变,则进程在操作系统中的启动时间戳也会发生改变,不再与$PGDATA/postmaster.pid文件中记录的时间相同,

hghac(patroni)会认为有集群以外其他的postmaster正在该$PGDATA运行,并尝试停止postmaster进程,但是由于操作系统pid一致,未能成功停止该进程,所以会不断切换节点状态。

解决方案

解决方案:

  1. (稳妥推荐)条件允许情况下,在问题节点手动重启集群服务和数据库服务,让数据库的postmaster.pid中记录的时间戳更新。或者:

  2. 手动修改postmaster.pid,修改:

[root@localhost data]# cat postmaster.pid

77888

/opt/highgo/hgdb-see-4.5.8/data

1565058213 <—修改为hghac日志中的记录时间,

5866

/tmp
*
5866001 48

ready

注意:一些版本中,hghac日志会把进程时间和pid创建时间位置反了,所以将postmaster.pid的时间改为日志中另一个时间,让两个时间相同即可。

相关文档

报错编码

相关文章:

  • OSS-承载数据的巨轮
  • Qt功能区:简介与安装
  • MCU ESP32-S3+SD NAND(贴片式T卡):智能皮电手环(GSR智能手环)性能与存储的深度评测
  • 基于C#实现中央定位服务器的 P2P 网络聊天系统
  • deepseek梳理java高级开发工程师算法面试题
  • windows文件共享另一台电脑资源管理器网络文件夹无法找到机器
  • 数字IC后端零基础入门基础理论(Day2)
  • 【算法】版本号排序
  • Kotlin Compose 与传统 Android UI 开发对比
  • 小白成长之路-Linux用户与组管理(一)
  • 【MCP教程系列】SpringBoot 搭建基于 Spring AI 的 SSE 模式 MCP 服务
  • 【测试】测试基础概念
  • 重塑“DATA+AI“的共生范式:DataBuilder如何赋能企业数据价值跃迁
  • 在K8S集群中部署EFK日志收集
  • ubuntu20.04系统搭建k8s1.28集群-docker作为容器运行时
  • Ubuntu——执行echo $USE什么都不显示
  • tocmat 启动怎么设置 jvm和gc
  • 机器学习第十讲:异常值检测 → 发现身高填3米的不合理数据
  • CSS盒子模型:Padding与Margin的适用场景与注意事项
  • 初学c语言14(指针6)
  • 证券时报:中美互降关税落地,订单集中补发港口将迎高峰期
  • 男子入户强奸高龄独居妇女致其死亡,法院:属实,已执行死刑
  • 媒体:“西北大学副校长范代娣成陕西首富”系乌龙,但她的人生如同开挂
  • 广东省中医院脾胃病科大科主任张北平病逝,年仅52岁
  • 北京今日白天超30℃晚间下冰雹,市民称“没见过这么大颗的”
  • 河南信阳拟发文严控预售许可条件:新出让土地开发的商品房一律现房销售