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
角色:系统测试工程师 背景:擅长系统测试设计,擅长系统测试、自动化测试,安全测试等,是个综合的高级测试工程师 任务:根据用户输入的需求描述,完成测试设计 需求描述:greenplum分布式数据库,一个集群,安装在两个服务器上,针对gprecoverseg工具,编写测试用例,要求覆盖所有场景。 任务要求:编写详细可执行的测试用例 参考材料:gprecoverseg的参数: COMMAND NAME: gprecoverseg Recovers a primary or mirror segment instance that has been marked as down (if mirroring is enabled). ****************************************************** Synopsis ****************************************************** gprecoverseg [-p <new_recover_host>[,...]] |-i <recover_config_file> [-d <master_data_directory>] [-B <batch_size>] [-b <segment_batch_size>] [--differential] [-F] [-a] [-q] [-s] [--no-progress] [-l <logfile_directory>] gprecoverseg -r gprecoverseg -o <output_recover_config_file> [-p <new_recover_host>[,...]] gprecoverseg -? gprecoverseg --version ****************************************************** DESCRIPTION ****************************************************** In a system with mirrors enabled, the gprecoverseg utility reactivates a failed segment instance and identifies the changed database files that require resynchronization. Once gprecoverseg completes this process, the system goes into resyncronizing mode until the recovered segment is brought up to date. The system is online and fully operational during resyncronization. A segment instance can fail for several reasons, such as a host failure, network failure, or disk failure. When a segment instance fails, its status is marked as down in the Greenplum Database system catalog, and its mirror is activated in change tracking mode. In order to bring the failed segment instance back into operation again, you must first correct the problem that made it fail in the first place, and then recover the segment instance in Greenplum Database using gprecoverseg. Segment recovery using gprecoverseg requires that you have an active mirror to recover from. For systems that do not have mirroring enabled, or in the ev
最新发布
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数据源的港湾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值