Greenplum数据库中segment故障检测

这篇具有很好参考价值的文章主要介绍了Greenplum数据库中segment故障检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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_configuration WHERE status='d';"

(3) 对于失败的segment实例,记下主机,端口,初始化时的角色和数据目录。此信息将帮助确定要进行故障排除的主机和segment实例。

(4) 显示mirror segment详细信息,运行下面命名:

$ gpstate -m

1.2.2检查日志文件

日志文件可以提供信息以帮助确定错误的原因。Master实例和segment实例都有自己的日志文件,这些日志文件位于pg_log的目录下。Master的日志文件包含最多信息,应该首先检查它。

使用 gplogfilter工具检查Greenplum数据库日志文件,可以获取额外信息。要检查segment日志文件,可以在master主机上使用gpssh命令运行 gplogfilter。

       (1)使用 gplogfilter 检查master日志文件的WARNING, ERROR, FATAL 或者 PANIC日志级别消息

$ gplogfilter -t

       (2)使用 gpssh 检查每个segment实例上的日志级别为WARNING, ERROR, FATAL 或者 PANIC的消息。例如:

$ gpssh -f seg_hosts_file -e 'source

/usr/local/greenplum-db/greenplum_path.sh ; gplogfilter -t

/data1/primary/*/pg_log/gpdb*.log' > seglog.out

2.恢复失败的segment

如果master服务器无法连接到segment实例,则会在Greenplum数据库系统目录中将该segment标记为“down”状态。在管理员采取措施使segment实例重新上线之前,segment实例将保持脱机离线状态。segment实例可能由于多种原因而不可用:

(1)segment主机不可用; 例如,由于网络或硬件故障。

(2)segment实例未运行; 例如,没Postgres的数据库监听进程。

(3)segment实例的数据目录损坏或丢失; 例如,无法访问数据,文件系统已损坏或磁盘发生故障。

2.1在启用mirror segment的情况下进行恢复

(1)确保master主机能够ping通失败的segment主机

$ ping failed_seg_host_address

(2)如果是阻止master主机连接segment主机,则可以重启该segment主机。

(3)如果该segment主机上线之后,可以通过master连接,则在master主机上运行下面命令,重新**失败的segment

$ gprecoverseg

(4)恢复进程会显示故障segment并标识需要同步的已更改文件。这个过程可能需要一些时间, 等待该过程完成。在此过程中,数据库不允许写入操作。

(5)在 gprecoverseg完成后,系统进入重新同步模式并开始复制已更改的文件。当系统处于联机状态并接受数据库请求时,此进程在后台运行。

(6)重新同步过程完成后,系统状态为“已同步”( Synchronized)。运行gpstate 命令用于验证重新同步过程状态

$ gpstate -m

2.2将所有的segment恢复到原来的角色设置

当primary segment发生故障时,mirror segment会被**为primary segment。运行gprecoverseg命令之后,当前活动的segment是primary segment,失败的primary segment成为了mirror segment。segment实例不会返回到在系统初始化时配置的首选角色。这意味着某些segment主机上可能运行多个primary segment实例,而某些segment主机上运行较少的segment,即系统可能处于潜在的不平衡状态。要检查不平衡的segment并重新平衡系统,可以使用如下命令:

$ gpstate -e

所有segment必须在线并完全同步以重新平衡系统,数据库会话在重新平衡期间保持连接,但正在进行的查询将被取消并回滚。

(1)运行下面命令,查看mirror segment的角色和同步状态

$ gpstate -m

(2)如果有mirror segment处于非同步状态,等待他们同步完成

(3)运行gprecoverseg命令,使用-r参数将segment恢复到原来初始化时的角色设置

$ gprecoverseg -r

(4)运行gpstate -e命令,确认所有的segment是否恢复到初始化时的角色设置

$ gpstate -e

2.3从双重故障中恢复

在双重故障情况下,即primary segment和mirror segment都处于失败状态。如果不同segment的主机同时发生硬件故障,则会导致primary segment和mirror segment都处于失败状态,如果发生双重故障,Greenplum数据库将不可用。要从双重故障中恢复,执行如下步骤:

(1)重启greenplum数据库

$ gpstop -r

(2)再重启系统之后,运行gprecoverseg命令

$ gprecoverseg

(3)在gprecoverseg执行结束后,运行gpstate命令查看mirror状态信息

$gpstate -m

(4)如果segment仍是“Change Tracking”状态,则运行下面命令:

$ gprecoverseg -F

2.4从segment主机故障中恢复

如果主机处于不可操作状态(例如,由于硬件故障),可以将segment恢复到备用主机上。如果启用了mirror segment,则可以使用gprecoverseg命令将mirror segment恢复到备用主机。例如:

$ gprecoverseg -i recover_config_file

生成的recover_config_file文件的格式为:

filespaceOrder=[filespace1_name[:filespace2_name:...]failed_host_address:

port:fselocation [recovery_host_address:port:replication_port:fselocation

[:fselocation:...]]

   例如,要在没有配置其他文件空间的情况下恢复到与故障主机不同的另一台主机(除了默认的pg_system文件空间):

filespaceOrder=sdw5-2:50002:/gpdata/gpseg2 sdw9-2:50002:53002:/gpdata/gpseg2

该gp_segment_configuration和pg_filespace_entry系统目录表可以帮助确定当前的段配置,这样可以计划mirror的恢复配置。例如,运行以下查询:

=# SELECT dbid, content, hostname, address, port,

replication_port, fselocation as datadir

FROM gp_segment_configuration, pg_filespace_entry

WHERE dbid=fsedbid

ORDER BY dbid;文章来源地址https://www.toymoban.com/news/detail-447934.html

转自于:https://www.likecs.com/show-203344428.html#sc=1900

到了这里,关于Greenplum数据库中segment故障检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 连接Oracle数据库失败(ORA-12514)故障排除

    点击试看博主的专著《MySQL 8.0运维与优化》(清华大学出版社) ORA-12514的故障是很多新手在连接Oracle数据库时经常遇到故障,它通常表示无法连接到数据库实例,这里姚远老师告诉大家如何排除这类故障。 当尝试连接到Oracle数据库实例时,可能会收到ORA-12514错误消息。此错

    2023年04月09日
    浏览(41)
  • 大数据之LibrA数据库系统告警处理(ALM-12007 进程故障)

    告警解释 进程健康检查模块按5秒周期检测进程状态。当进程健康检查模块连续三次检测到进程连接状态为故障时,产生该告警。 当进程连接正常时,告警恢复。 告警属性 告警ID 告警级别 可自动清除 12007 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称。

    2024年02月06日
    浏览(37)
  • 分布式数据库事务故障恢复的原理与实践

    关系数据库中的事务故障恢复并不是一个新问题,自70年代关系数据库诞生之后就一直伴随着数据库技术的发展,并且在分布式数据库的场景下又遇到了一些新的问题。本文将会就事务故障恢复这个问题,分别讲述单机数据库、分布式数据库中遇到的问题和几种典型的解决方

    2024年02月03日
    浏览(41)
  • Greenplum高可用-从失效segment恢复

    本主题将指导您在一个或多个段或主机出现故障并希望恢复故障段时应采取的措施。你所遵循的恢复路径主要取决于以下三种情况中哪一种适合你的情况: 希望就地恢复到当前主机 希望恢复到集群内的其他主机 希望恢复到集群外的新主机 在这些场景中遵循的步骤可能有所不

    2024年02月09日
    浏览(29)
  • 记一次由于操作失误致使数据库瘫痪的故障分析与解决方案

    2023年8月27日,随着新业务的接入,我们开始进行项目的灰度发布。然而,直到2023年8月31日下午,我们才发现一个新字段并没有进行字段刷新,导致所有数据都是默认值,从而无法继续进行灰度测试。在业务方的要求下,我们需要进行批量更新字段。鉴于我们已经知道了时间

    2024年02月09日
    浏览(44)
  • 基于无域故障转移群集 配置高可用SQLServer数据库Windows Server

    基础环境级上次实验结束后环境:上次实验 基础环境的准备: 故障转移群集IP:10.0.34.172 去除负载均衡群集 1、在DC上面再新加两块虚拟磁盘 具体步骤参考上篇文章:点击转到 使达成的效果如下图 2、安装ISCSI服务 从后面以后如果有些步骤我没有显示图片的,那就是默认下一

    2024年02月04日
    浏览(48)
  • openGauss学习笔记-204 openGauss 数据库运维-常见故障定位案例-重建索引失败

    204.1 重建索引失败 204.1.1 问题现象 当Desc表的索引出现损坏时,无法进行一系列操作,可能的报错信息如下。 204.1.2 原因分析 在实际操作中,索引会由于软件或者硬件问题引起崩溃。例如,当索引分裂完发生磁盘空间不足、出现页面损坏等问题时,会导致索引损坏。 204.1.3 处

    2024年01月24日
    浏览(46)
  • openGauss学习笔记-190 openGauss 数据库运维-常见故障定位案例-服务启动失败

    190.1 服务启动失败 190.1.1 问题现象 服务启动失败。 190.1.2 原因分析 配置参数不合理,数据库因系统资源不足,或者配置参数不满足内部约束,启动失败。 由于部分数据节点状态不正常,导致数据库启动失败。 目录权限不够。例如对/tmp目录、数据库数据目录的权限不足。 配

    2024年01月23日
    浏览(58)
  • openGauss学习笔记-200 openGauss 数据库运维-常见故障定位案例-表文件大小无变化

    200.1 VACUUM FULL一张表后,表文件大小无变化 200.1.1 问题现象 使用VACUUM FULL命令对一张表进行清理,清理完成后表大小和清理前一样大。 200.1.2 原因分析 假定该表的名称为table_name,对于该现象可能有以下两种原因: table_name表本身没有delete过数据,使用VACUUM FULL table_name后无需清

    2024年01月18日
    浏览(53)
  • openGauss学习笔记-192 openGauss 数据库运维-常见故障定位案例-XFS文件系统问题

    192.1 在XFS文件系统中,使用du命令查询数据文件大小大于文件实际大小 192.1.1 问题现象 在数据库使用过程中,通过如下du命令查询数据文件大小,查询结果大于文件实际的大小。 192.1.2 原因分析 XFS文件系统有预分配机制,预分配的大小由参数allocsize确定。du命令显示的文件大

    2024年02月02日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包