gp_configuration_history

本文介绍Greenplum数据库中gp_configuration_history表的作用及其记录内容。该表用于跟踪gp_configuration的变化历史,尤其是在节点故障及恢复过程中的变更记录。通过查询此表,可以了解系统何时检测到节点故障,并帮助定位问题。

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

gp_configuration_history是关于gp_configuration的一个日志记录,当有节点不可用时,或者使用gprecovery修复节点时,这个时候需要修改gp_configuration,并把修改的日志写gp_configuration_history中, gpaddmirrors, gprecoverseg, 和gpinitsystem 这几个命令会中记录这个日志,当有节点坏了的时候,我们可以查询这个表看greenplum是什么时候发现的。有助于我们排除错误

  Table "pg_catalog.gp_configuration_history"
 Column |           Type               |  Modifiers 
   --------+--------------------------+-----------
    time   | timestamp with time zone | not null  时间
   dbid   | smallint                              | not null  是哪一个dbid(节点)
  desc   | text                                   |                 描述信息
Tablespace: "pg_global"

 

 

aligputf8=# select * from gp_configuration_history;
          time          | dbid |                                     desc                                    
------------------------+------+------------------------------------------------------------------------------
 2010-12-12 21:51:10+08 |    2 | FTSPROBE: content 0 fault mode "RO" marking as valid=f isprimary=f persist=f
 2010-12-12 21:51:10+08 |    5 | FTSPROBE: content 0 fault mode "RO" marking as valid=t isprimary=t persist=f
(2 rows)
比方说我们把其中一个primary节点给干掉了,在 gp_configuration_history中就会有两个记录,primary节点dbid=2标记为valid=false,并把mirror节点,dbid=5标记为主节点。

 

使用gprecoverseg -F后,表中又多了两条记录

             time              | dbid |                                           desc                                          
-------------------------------+------+------------------------------------------------------------------------------------------
 2010-12-12 21:54:10.472459+08 |    2 | GPRECOVERSEG: marking segment as invalid due to forced recovery while in read-only mode.
 2010-12-12 21:54:24.696657+08 |    2 | GPRECOVERSEG: set valid=t

 

 

 

 

### 关于 `gp_segment_configuration` 的字段含义和用法 #### 字段含义 `gp_segment_configuration` 是 Greenplum 数据库中的一个系统视图,用于存储集群中各个 segment 和 master 实例的配置信息以及它们的状态。以下是其主要字段及其含义: - **dbid**: 唯一标识每个 segment 或 master 实例的 ID[^1]。 - **content**: 表示 segment 的编号。对于 primary segment,此值为正整数;对于 mirror segment,此值与其对应的 primary 相同;master 的 content 值通常为 `-1`[^2]。 - **role**: 当前实例的角色,可能的值包括: - `'p'`: Primary role. - `'m'`: Mirror role. - `'n'`: Normal role (仅适用于 master)[^3]. - **preferred_role**: 实例的默认角色,表示在正常情况下应该担任的角色,与 `role` 类似[^1]。 - **mode**: 实例的工作模式,可能的值包括: - `'r'`: Ready mode(准备就绪)。 - `'c'`: Change tracking mode(变更跟踪模式),当镜像处于同步过程中时使用[^2]。 - **status**: 实例的状态,可能的值包括: - `'u'`: Up and running(正在运行)。 - `'d'`: Down or not responding(宕机或无响应)。 - **hostname**: 运行该实例的主机名称[^3]。 - **address**: 实例的网络地址[^2]。 - **port**: 实例监听的端口号。 - **datadir**: 存储数据文件的目录路径。 #### 使用方法 通过查询 `gp_segment_configuration` 可以获取关于集群中各节点的详细信息,这对于监控、诊断和维护非常有用。以下是一些常见的用法示例: 1. **查找故障的 segment** 查询状态为 `'d'` 的 segment 实例,以便定位问题所在。 ```sql SELECT * FROM gp_segment_configuration WHERE status = 'd'; ``` 2. **显示所有 segment 配置** 获取整个集群的 segment 配置详情。 ```sql SELECT * FROM gp_segment_configuration; ``` 3. **查看特定 segment 的信息** 根据 `content` 编号筛选某个具体的 segment。 ```sql SELECT * FROM gp_segment_configuration WHERE content = 0; ``` 4. **检查镜像 segment 状态** 列出所有的镜像 segment 并验证其工作模式是否正确。 ```sql SELECT * FROM gp_segment_configuration WHERE preferred_role = 'm'; ``` 5. **结合其他工具分析** 将查询结果与其他命令配合使用,例如利用 `gpstate -m` 查看镜像 segment 的健康状况[^1]。 ```bash $ gpstate -m ``` 6. **评估数据分布均衡性** 结合隐藏列 `gp_segment_id` 来确认表的数据是否均匀分布在不同的 segments 上。 ```sql SELECT gp_segment_id, COUNT(*) AS row_count FROM your_table_name GROUP BY gp_segment_id ORDER BY gp_segment_id; ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值