首页 > 其他分享 >greenplum集群实例频繁宕机

greenplum集群实例频繁宕机

时间:2023-02-02 16:13:40浏览次数:46  
标签:导致 宕机 greenplum Primary 实例 集群 日志

环境描述:

名称

版本

操作系统

Linux version:redhat 7.4

Greenplum

Database:greenplum4.3.30.4

 

问题描述:

在生产环境中我们所维护的greenplum集群偶尔会遇到segments节点实例宕停的情况,导致实例宕停的因素比较多。如:硬件上的磁盘故障导致io较高,内网的网络波动。sql语法的不规范导致资源消耗过大,大批量的调度语句集中在一个时间点导致集群压力太大。相关参数上的设置过小等等。。。。。。这样的原因都会导致集群某一个或多个mirrror实例在固定的时间点宕机,以上的情况一般不会导致primary宕机,但是也不一定遇到primary也可以按照以下方法排查原因。

 

排查方法:

       一:排查是否是硬件的问题,查看主机日志messages。

        路径:/var/log/messages

        查看是否是降级导致的,磁盘降级的关键词根据主机厂商不同一般不一样。

              如果是内存或者别的硬件导致的就执行以下命令(如果是硬件导致可能会有primary实例宕停)

cat /var/log/messages | grep ker

具体的报错信息需根据经验判断

 

二:查看数据库日志

       需要查看的是宕停实例的数据库日志,并且需要快速获取路径。

       查看数据库状态

gpstate -e

这样看到的只是宕机的实例主机名无法获取到详细的路径,执行以下命令。

       可以看到主机名后面的就是宕停实例的目录路径

登录gp2切换到pg_log目录下

可以看到按日期生成的.csv文件,这就是数据库日志。但是有的文件后缀不是000000,是为什么?数据库日志文件本身就是“gpdb-年-月-日_时间“,显示000000是因为在凌晨12点整生成的,而那些不是000000的则是因为该实例宕停不在记录日志信息只有把实例拉起时才会继续记录,而拉起宕停实例的时间就会自动生成一个对应的.csv文件。

查看相应的日志文件可以看到红色标记的哪一行有“WARING“关键词,而后面的信息就是当该实例宕停时所打印的信息。而报错信息的大概意思就是”在连接时收到了关闭信息并且成功了“,为什么会导致这样的情况?

根据网上得到的方案可以修改的参数有这两个

这个参数简单的说就是在Master和Segment之间的探测超时时长。导致的原因可能时那个时间点集群的压力过大,通信超时,可以将时间调高点。

这里引用greenplum6.0.1的解释

等待Mirror响应的最长时间,缺省为600,单位是秒。 在FTS检测之外,gp_segment_connect_timeout参数限制的是Primary等待 Mirror响应的时间,在Primary向Mirror发送数据时,超过该参数设置的时间仍无法成功,Primary将会报告Master修改Mirror的状态为down,然后Primary将会持 续记录WAL日志,对于6之前的版本,Primary将进入change tracking状态。不过, 对于该参数,至少在6之前的版本,真正的超时时间是设定值的75%。

 

       三:sql语句的原因

              这里就需要在master主机部署一个记录集群会话的脚本,将宕机时间点的sql反馈给应用让他们检查是否有问题,或者将宕机时间点的会话分散执行。

标签:导致,宕机,greenplum,Primary,实例,集群,日志
From: https://www.cnblogs.com/xurui96/p/17086328.html

相关文章

  • 暖通CAD设计中如何计算排烟?机械防烟系统应用实例
    在暖通CAD设计过程中,如果想要快速计算排烟该如何操作呢?本节暖通CAD设计教程就和小编一起来了解一下浩辰CAD暖通软件中通过调用机械防烟系统来快速计算排烟的具体操作步骤吧......
  • 通过HH8WilEdit学习WIL 文件编码 3 资源文件实例,导出WIL.RES中的WIL,WIX文件
     unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TFor......
  • 会导致实例化Servlet类错误的一个问题
     由于代码规范我将Dao包名改为dao后出现了实例化Servlet类异常HTTP状态500  我的解决方法是将包名改回Dao ......
  • QPython实例02-调用其他app实例
    一、前言使用版本:QPython3c下载地址:百度搜索QPython3C开源版即可下载或关注【产品经理不是经理】gzh,回复【qpython3c】即可获取下载链接。二、代码实例注意#执......
  • Spring Security Form表单认证代码实例
    SpringSecurityForm表单认证SpringSecurity中,常见的认证方式可以分为HTTP层面和表单层面,如下:HTTP基本认证Form表单认证HTTP摘要认证SpringSecurityForm表单实......
  • 二分查找算法实现(图解)与实例
    前言当我们要从一个序列中查找一个元素的时候,二分查找是一种非常快速的查找算法,二分查找又叫折半查找。 它对要查找的序列有两个要求,一是该序列必须是有序的(即该序列中......
  • PHP一个典型的闭包实例
    <?php//一个基本的购物车,包括一些已经添加的商品和每种商品的数量。//其中有一个方法用来计算购物车中所有商品的总价格,该方法使//用了一个closure作为回调函数。class......
  • Android全局获取Context上下文实例
    如题,在没有用到Activity的类中也能轻松获取上下文Context实例方法很简单,继承Application,提供获取上下文的静态方法供全局调用在Application类的onCreate()方法中获取Con......
  • 使用一个 mysqld exporter 监控所有的MySQL实例
    说明之前文章有聊过使用Prometheus监控自建Mysql,感兴趣的同学可以看下。本次我们简单聊下结合consulmanager使用一个mysqldexporter监控所有的MySQL实例的具体实现方法......
  • 代码实例解读如何安全发布对象
    摘要:在高并发环境下如何安全的发布对象实例。本文分享自华为云社区《【高并发】如何安全的发布对象(含各种单例代码分析)》,作者:冰河。今天,为大家带来一篇有技术含量的文章......