Greenplum数据库中segment的故障检测与恢复

本文详细介绍了Greenplum数据库中segment的故障检测与恢复过程。通过ftsprobe监控,当segment故障时,系统会将其标记为"down"。在启用mirror的情况下,故障会自动转移;否则,需手动恢复。使用gprecoverseg工具进行恢复,包括从segment主机故障、双重故障中恢复等。同时,检查日志文件和使用gpstate、gplogfilter等工具有助于故障排查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Greenplum数据库中segment故障检测

1.1概述

Greenplum数据库服务器(Postgres)有一个子进程,该子进程为ftsprobe,主要作用是处理故障检测。 ftsprobe 监视Greenplum数据库阵列,它以可以配置的间隔连接并扫描所有segment和数据库进程。

如果 ftsprobe无法连接到segment,它会在Greenplum数据库系统目录中将segment标记为”down”。在管理员启动恢复进程之前,该segment是不可以被操作的。

启用mirror备份后,如果primary segment不可用,Greenplum数据库会自动故障转移到mirror segment。如果segment实例或主机发生故障,系统仍可以运行,前提是所有在剩余的活动segment上数据都可用。

要恢复失败的segment,管理员需要执行 gprecoverseg 恢复工具。此工具可以找到失败的segment,验证它们是否有效,并将事务状态与当前活动的segment进行比较,以确定在segment脱机时所做的更改。gprecoverseg将更改的数据库文件与活动segment同步,并使该segment重新上线。管理员需要在在Greenplum数据库启动并运行时执行恢复操作。

禁用mirror备份时,如果segment实例失败,系统将会自动关闭。管理员需要手动恢复所有失败的segment。

1.2检测和管理失败的segment

1.2.1使用工具命令查看

启用mirror备份后,当primary segment发生故障时,Greenplum会自动故障转移到mirror segment。如果每个数据部分所在的segment实例都是在线的,则用户可能无法意识到segment已经出现故障。如果在发生故障时正在进行事务,则正在进行的事务将回滚并在重新配置的segment集上自动重新启动。

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

ERROR: All segment databases are unavailable

(1)在master节点上,运行gpstate命令,使用-e参数显示错误的segment

$ gpstate -e

   标记为Change Tracking的segment节点表明对应的mirror segment已经宕机。

(2)要获取有关故障segment的详细信息,可以查看 gp_segment_configuration目录表。

$ psql -c "SELECT * FROM gp_segment_con

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值