人大金仓分析型数据库故障检测

目录

监测和管理

故障恢复

 配置FTS参数


        如果数据库配置了镜像,数据库会在主实例宕机后自动故障转移到一个镜像实例上,镜像实例承担主实例的角色和职能,故障主实例变成镜像,用户感觉不到实例产生了故障。当故障出现时,正在进行中的事务会回滚并在新的实例上自动重新开始。如果整个数据库系统由于一个实例故障(例如,如果没有启用镜像或者没有足够的实例在线以访问全部用户数据)而变得无法运转,用户在尝试连接到数据库时会看到错误。返回给客户端程序的错误可能表明 失效。例如:

ERROR: All segment databases are unavailable

监测和管理

        在数据库master主机上,数据库进程会创建一个错误侦测子进程 ftsprobe。该进程也被称为FTS (Fault Tolerance Server)进程。如果FTS进程出现故障,数据库会重启该进程。FTS进程循环执行,每个循环之间会等待一会。每一个循环中,FTS都会从gp_segment_configuration 系统表中获取每一个主实例的主机名和端口号,并通过与其建立TCP套接字连接的方式连接实例来侦测实例的状态。如果成功连接,实例会执行一些简单的检查并报告给FTS。该检查包括在关键的实例目录上执行一个stat系统调用,并且会检查实例的内部错误。如果没有检测到问题,FTS会 收到一个积极的反馈信号,被检查的正常实例也不会采取任何附加操作。

        如果不能建立连接,或者在超时时间内没有得到反馈,FTS会尝试重新连接实例。 如果达到了FTS的最大重试次数,FTS会去检测该实例的镜像看其是否在线,如果在线它就会修改 gp_segment_configuration表,将原来的主实例标记为"down"并设置镜像承担主实例的角色。FTS会把执行过的操作更新到 gp_configuration_history表中。当系统中只有主实例正常,其对应的镜像故障时,主实例会进入not synchronizing 状态并继续记录数据库日志变化,一旦镜像修复,便可以将这些变化继续同步,而不用从主实例执行一个完整的拷贝。

        gprecoverseg工具可以用于将离线的镜像实例重新加入集群。默认情况下, gprecoverseg会执行增量恢复,首先将镜像放入同步模式,接下来会重放主实例上 记录下来的日志变化到镜像实例。如果增量恢复失败,整个恢复便会失败。此时可以执行gprecoverseg 并带有-F选项,以执行一个全量恢复,该操作会复制主实例上的所有数据到镜像实例上。统表gp_segment_configuration包含列rolepreferred_role。该列上的值为p代表主实例m 代表镜像实例role列展示实例当前角色,preferred_role 列展示实例原来的角色。在一个平衡的系统中,所有实例的rolepreferred_role 列都是对应一致的。当某一个列存在不一样的情况时,表明系统是不平衡的。为了重新平衡集群并将所有的实例恢复到他们本来的角色,可以运行gprecoverseg命令并带有-r选项。

故障恢复

        假设一个主实例故障并切换到镜像实例。 以下表格展示在恢复到正常的主实例之前,实例在gp_segment_configuration 表中的本来角色、当前角色、模式、和状态:

本来角色
当前角色
模式
状态
Primary
p
mnd
Mirror
mpnu

        使用gprecoverseg重新将失败的实例拉起并在主实例和镜像实例之间同步差异数据。一旦gprecoverseg操作完成,实例的状态如下表展示,主实例和镜像实例转换成为他们之前的最佳角色。

本来角色
当前角色
模式
状态
Primary
p
msu
Mirror
mpsu

        gprecoverseg -r命令通过将实例的角色切换回之前的最佳角色来重新平衡整个集群系统。

本来角色
当前角色
模式
状态
Primary
p
psu
Mirror
mmsu

 配置FTS参数

        有一些服务器配置参数会影响FTS行为:

  • gp_fts_probe_interval:开始下一个FTS循环的时间间隔,以秒为单位。例如将该参数设置为60检测循环持续10秒,那么FTS进程 沉睡50秒。如果设置该参数为60,检测循环持续75秒,FTS进程沉睡0秒。该参数默认值为60,最大为3600。
  • gp_fts_probe_timeout:master实例之间的检测超时时间,以秒为单位。默认20秒,最大3600秒。
  • gp_fts_probe_retries:检测实例失败后的重试次数,例如如果设置为5,那么首次失败后,会再进行4次检测尝试。默认为5。
  • gp_log_fts:FTS日志级别。可设置的值有:"off", "terse", "verbose", or "debug""verbose"设置可以用在生产上,能为问题定位提供一些有用的数据。 "debug"设置不能用在生产上。默认为:"terse"。
  • gp_segment_connect_timeout :允许镜像响应的最大时间,以秒为单位。默认为:60010分钟)
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值