Greenplum高可用-如何检测失效Segment

注:本文翻译自https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/admin_guide-highavail-topics-g-detecting-a-failed-segment.html

启用段镜像后,当主段实例出现故障时,Greenplum Database会自动将故障转移到镜像段实例。如果每个数据部分都有一个段实例在线,用户可能不会意识到段已关闭。如果发生故障时,正在进行的事务回滚,并在重新配置的段集上自动重新启动。gpstate实用程序可用于标识失败的段。该实用程序显示来自目录表的信息,包括gp_segment_configuration

如果整个Greenplum Database系统由于段故障而变得不可操作(例如,如果未启用镜像或没有足够的段在线访问所有用户数据),则用户在尝试连接数据库时将看到错误。返回给客户端程序的错误可能表明失败。例如:

ERROR: All segment databases are unavailable

Segment失效如何检测和管理

在Greenplum Database协调器主机上,Postgres postmaster进程派生一个故障探测进程ftsprobe。这也被称为FTS(容错服务)过程。如果失败,postmaster进程将重新启动FTS。

FTS在一个循环中运行,每个循环之间有一个睡眠间隔。在每个循环中,FTS通过使用在gp_segment_configuration表中注册的主机名和端口建立到段实例的TCP套接字连接来探测每个主段实例。如果连接成功,该段执行一些简单的检查并向FTS报告。检查包括在关键段目录上运行stat系统调用,并检查段实例中的内部故障。如果没有检测到任何问题,则向FTS发送一个肯定的答复,并且不对该段实例采取任何操作。

如果无法建立连接,或者在超时时间内未收到应答,则尝试对段实例进行重试。如果配置的最大探测尝试数失败,FTS探测段的镜像以确保它是正常的,然后更新gp_segment_configuration表,将主段标记为“down”并设置镜像作为主段。FTS用执行的操作更新gp_configuration_history表。

当只有一个活动主段并且相应的镜像关闭时,主段进入Not In Sync状态并继续记录数据库更改,因此可以同步镜像,而无需执行从主段到镜像的完整数据拷贝。

配置FTS行为

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

gp_fts_probe_interval
多长时间,以秒为单位,开始一个新的FTS循环。例如,如果设置为60,探测循环需要10秒,则FTS进程休眠50秒。如果设置为60,探测周期为75秒,则进程休眠0秒。默认值为60,最大值为3600。

gp_fts_probe_timeout
协调器和段之间的探测超时,以秒为单位。默认值为20,最大值为3600。

gp_fts_probe_retries
探测一个网段的次数。例如,如果设置为5,则在第一次尝试失败后将重试4次。默认值:5

gp_log_fts
FTS的日志级别。取值为off、terse、verbose和debug。“详细”设置可以在生产环境中使用,为故障排除提供有用的数据。“debug”设置不应该在生产环境中使用。默认值:“简洁”

gp_segment_connect_timeout
允许镜像响应的最大时间(以秒为单位)。默认值:180(3分钟)

除了FTS执行的故障检查之外,主段无法向其镜像发送数据可以将镜像状态更改为down。主服务器将数据排队,在gp_segment_connect_timeout秒过去后,表明镜像失败,导致镜像被标记为down,主服务器进入Not In Sync模式。

检测失效Segment

启用镜像后,您可以在系统中拥有失败的段实例,而不会中断服务或出现任何故障迹象。您可以通过检查gp_segment_configuration目录表的内容或检查日志文件,使用gpstate实用程序来验证系统的状态。

使用gpstate检查失效segment

gpstate实用程序提供Greenplum Database系统中每个单独组件的状态,包括主段、镜像段、协调器和备用协调器。
在协调器主机上,运行带有-e选项的gpstate实用程序,以显示具有错误条件的段实例:

$ gpstate -e

如果实用程序列出主角色和镜像角色切换的段,则该段不在其首选角色中(在系统初始化时分配给它的角色)。这意味着系统处于潜在的不平衡状态,因为一些段主机可能拥有比最佳系统性能更多的活动段。

Config status显示为Down的段表示对应的镜像段Down。

使用gp_segment_configuration表检查失效segment

要获取有关失败段的详细信息,可以检查gp_segment_configuration编目表。例如:

$ psql postgres -c "SELECT * FROM gp_segment_configuration WHERE status='d';"

对于失败的段实例,请注意主机、端口、首选角色和数据目录。此信息将有助于确定要进行故障排除的主机和段实例。使用实例查询镜像段实例信息。

$ gpstate -m

通过日志文件检查失效segment

日志文件可以提供信息,帮助确定错误的原因。协调器和段实例在数据目录的日志中都有自己的日志文件。协调器日志文件包含最多的信息,您应该首先检查它。

使用gplogfilter实用程序检查Greenplum Database日志文件以获取其他信息。如果需要查看网段日志文件,请使用gpssh在网段主机上执行gplogfilter命令。

1.使用gplogfilter检查协调器日志文件中的WARNING, ERROR, FATAL或PANIC日志级别消息:

$ gplogfilter -t

2.使用gpssh检查每个段实例上的WARNING、ERROR、FATAL或PANIC日志级别消息。例如:

$ gpssh -f seg_hosts_file -e 'source 
/usr/local/greenplum-db/greenplum_path.sh ; gplogfilter -t 
/data1/primary/*/log/gpdb*.log' > seglog.out
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值