Greenplum实战--检查集群状态gpstate

本文介绍了使用gpstate命令检查Greenplum数据库集群状态的方法,包括显示简要状态、主镜像映射、镜像状态问题片段等。通过具体实例展示了如何获取数据库版本、实例状态、镜像同步情况及备用主机详情。
    1. 查看进程命令

$gpssh -f /home/gpadmin/gpconfig/all_host -e "ps -eaf|grep green"

[ mdw] ps -eaf|grep green

[ mdw] gpadmin   2601     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/master/gpseg-1 -p 5432 --gp_dbid=1 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M master --gp_contentid=-1 -x 14 -E

[ mdw] gpadmin   7772  7703  5 23:12 pts/0    00:00:00 python /usr/local/greenplum-db/./bin/gpssh -f /home/gpadmin/gpconfig/all_host -e ps -eaf|grep green

[ mdw] gpadmin   7899  7843  0 23:12 pts/15   00:00:00 grep --color=auto green

[sdw3] ps -eaf|grep green

[sdw3] gpadmin   7428     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/mirror1/gpseg2 -p 50000 --gp_dbid=10 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=2

[sdw3] gpadmin   7429     1  0 01:04 ?        00:00:01 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/primary2/gpseg5 -p 40001 --gp_dbid=7 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=5

[sdw3] gpadmin   7430     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/mirror2/gpseg3 -p 50001 --gp_dbid=11 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=3

[sdw3] gpadmin   7431     1  0 01:04 ?        00:00:01 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/primary1/gpseg4 -p 40000 --gp_dbid=6 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=4

[sdw3] gpadmin   7593     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/master/gpseg-1 -p 5432 --gp_dbid=14 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M master --gp_contentid=-1 -x 0 -y -E

[sdw3] gpadmin  26794 26741  0 23:12 pts/1    00:00:00 grep --color=auto green

[sdw1] ps -eaf|grep green

[sdw1] gpadmin  12608     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/mirror1/gpseg4 -p 50000 --gp_dbid=12 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=4

[sdw1] gpadmin  12609     1  0 01:04 ?        00:00:02 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/primary1/gpseg0 -p 40000 --gp_dbid=2 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=0

[sdw1] gpadmin  12610     1  0 01:04 ?        00:00:02 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/primary2/gpseg1 -p 40001 --gp_dbid=3 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=1

[sdw1] gpadmin  12611     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/mirror2/gpseg5 -p 50001 --gp_dbid=13 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=5

[sdw1] gpadmin  31663 31610  0 23:12 pts/1    00:00:00 grep --color=auto green

[sdw2] ps -eaf|grep green

[sdw2] gpadmin   2053     1  0 01:04 ?        00:00:02 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/primary1/gpseg2 -p 40000 --gp_dbid=4 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=2

[sdw2] gpadmin   2054     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/mirror1/gpseg0 -p 50000 --gp_dbid=8 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=0

[sdw2] gpadmin   2055     1  0 01:04 ?        00:00:00 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/mirror2/gpseg1 -p 50001 --gp_dbid=9 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=1

[sdw2] gpadmin   2056     1  0 01:04 ?        00:00:02 /usr/local/greenplum-db-5.10.2/bin/postgres -D /greenplum/gpdata/primary2/gpseg3 -p 40001 --gp_dbid=5 --gp_num_contents_in_cluster=6 --silent-mode=true -i -M quiescent --gp_contentid=3

[sdw2] gpadmin  21101 21048  0 23:12 pts/1    00:00:00 grep --color=auto green

 

    1. 检查状态 gpstate
      1. gpstate 常用命令

gpstate -b => 显示简要状态

gpstate -c => 显示主镜像映射

gpstart -d => 指定数据目录(默认值:$MASTER_DATA_DIRECTORY)

gpstate -e => 显示具有镜像状态问题的片段

gpstate -f => 显示备用主机详细信息

gpstate -i => 显示GRIPLUM数据库版本

gpstate -m => 显示镜像实例同步状态

gpstate -p => 显示使用端口

gpstate -Q => 快速检查主机状态

gpstate -s => 显示集群详细信息

gpstate -v => 显示详细信息

 

      1. gpstate

gpstate

[gpadmin@mdw ~]$ gpstate

20200419:00:52:03:001506 gpstate:mdw:gpadmin-[INFO]:-Starting gpstate with args:

20200419:00:52:03:001506 gpstate:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.10.2 build commit:b3c02f3acd880e2d676dacea36be015e4a3826d4'

20200419:00:52:03:001506 gpstate:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.3.23 (Greenplum Database 5.10.2 build commit:b3c02f3acd880e2d676dacea36be015e4a3826d4) on x86_64-pc-linux-gnu, compiled by GCC gcc (GCC) 6.2.0, 64-bit compiled on Aug 10 2018 07:30:24'

20200419:00:52:03:001506 gpstate:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...

20200419:00:52:03:001506 gpstate:mdw:gpadmin-[INFO]:-Gathering data from segments...

.

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-Greenplum instance status summary

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Master instance                                           = Active

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Master standby                                            = No master standby configured

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total segment instance count from metadata                = 12

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Primary Segment Status

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total primary segments                                    = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total primary segment valid (at master)                   = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total primary segment failures (at master)                = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files missing              = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files found                = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs missing               = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs found                 = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files missing                   = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files found                     = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes missing                 = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes found                   = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Mirror Segment Status

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total mirror segments                                     = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total mirror segment valid (at master)                    = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total mirror segment failures (at master)                 = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files missing              = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files found                = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs missing               = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs found                 = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files missing                   = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files found                     = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes missing                 = 0

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes found                   = 6

20200419:00:52:04:001506 gpstate:mdw:gpadmin-[INFO]:-   Total number mirror se

<think>我们正在解决Greenplum初始化过程中出现的符号链接错误:"Too manylevels ofsymbolic links"这个错误通常发生在数据目录路径中存在循环符号链接或者符号链接嵌套过深(超过系统限制)的情况。解决步骤:1. **检查数据目录配置**:在初始化配置文件(如:`gp_init_config`)中,检查以下配置项:- `declare-aDATA_DIRECTORY`:定义每个segment的数据目录-`MASTER_DIRECTORY`:master的数据目录- `MASTER_DATA_DIRECTORY`:实际用于存储master数据的目录(通常与MASTER_DIRECTORY相同或不同)确保这些目录路径是真实存在的物理路径(非符号链接),或者符号链接的深度不超过系统限制(一般不超过40层)。2.**验证符号链接**:在计划作为数据目录的路径上,使用`readlink-f <路径>`来解析符号链接,并检查是否有循环或嵌套过深。例如:```bashreadlink-f/data/primary1```3.**修复方法**:如果发现数据目录配置了符号链接,并且嵌套过深,有两种解决方案:a)将符号链接替换为实际路径(物理路径)-在配置文件中直接使用物理路径b)重新创建符号链接,确保没有循环且层数合理-使用绝对路径创建符号链接,避免相对路径导致的嵌套4. **检查系统限制**:虽然Linux系统通常支持40层符号链接,但可以通过以下命令查看当前系统的限制:```bashcat /proc/sys/fs/symlink```注意:这个文件可能不存在,因为Linux内核通常不提供这个参数(实际限制在40层,且不可配置)。所以重点应放在避免循环符号链接。5. **具体错误案例**:例如,配置文件中指定了:```bashdeclare -a DATA_DIRECTORY=(/home/gpadmin/primary /home/gpadmin/primary)```而`/home/gpadmin/primary`是一个指向自身的符号链接:```bash$ls -l /home/gpadmin/primarylrwxrwxrwx .../home/gpadmin/primary-> /home/gpadmin/primary```这会导致循环,从而出现错误。6. **修复步骤示例**:假设发现`/data/primary1`是一个符号链接,且指向了一个多层嵌套的路径,我们可以:a)删除该符号链接,并创建实际目录:```bashrm /data/primary1mkdir/data/primary1```b)或者修改符号链接,使其直接指向一个物理路径(且该路径没有多层符号链接):```bashln -sfn/physical/path/to/dir /data/primary1```7.**重新初始化**:修复后,重新运行`gpinitsystem`命令。8.**预防措施**:在初始化前,使用`gpcheck`(Greenplum提供的工具)进行环境检查,确保文件系统配置正确。引用说明:-关于符号链接的限制,参考Linux内核文档[^1]。-Greenplum官方文档中关于数据目录配置的要求[^2]。注意:在分布式系统中,每个节点上的数据目录路径都需要检查,因为错误可能发生在任意一个节点上。相关问题:1.如何检查Greenplum集群中所有节点的目录是否存在?2. Greenplum初始化过程中还有哪些常见的文件系统错误?3.如何配置Greenplum的数据目录以实现最佳性能?我们将按照上述步骤进行详细说明。</think>### Greenplum 初始化遇到符号链接错误的解决方案 当执行 `gpinitsystem` 时出现 **"Too many levels of symbolic links"** 错误,表明数据目录路径中存在循环符号链接或嵌套层级超过系统限制(Linux 默认限制为 40 层)。以下是系统级排查和修复步骤: #### 诊断步骤 1. **检查符号链接深度** 在涉及节点上运行: ```bash # 检查 Master 目录 readlink -f $MASTER_DATA_DIRECTORY | wc -c # 检查 Segment 目录(示例) readlink -f /data/primary/gpseg0 | wc -c ``` 若输出值 > 1000(路径字符数)或层级显示异常,说明符号链接嵌套过深。 2. **检测循环链接** 使用 `namei` 命令解析路径: ```bash namei -l $MASTER_DATA_DIRECTORY ``` 输出中若出现重复路径(如 `A -> B -> C -> A`),即存在循环符号链接。 #### 修复方案 1. **替换符号链接为物理路径** 修改初始化配置文件 `gp_init_config`: ```diff - declare -a DATA_DIRECTORY=(/symlink_path/primary) + declare -a DATA_DIRECTORY=(/physical_disk/primary) # 使用物理路径 - MASTER_DIRECTORY=/symlink_path/master + MASTER_DIRECTORY=/physical_disk/master # 使用物理路径 ``` 2. **简化符号链接结构** 若必须使用符号链接: ```bash # 删除旧链接 rm /data/primary # 创建直接指向物理路径的链接(最多1层) ln -s /physical_disk/primary /data/primary ``` 3. **验证所有节点路径一致性** 在集群每个节点执行: ```bash gpssh -f hostfile.txt "ls -ld /data/primary" ``` 确保所有节点路径解析结果相同。 #### 关键配置检查 1. **权限修复** 确保物理路径权限正确: ```bash chown -R gpadmin:gpadmin /physical_disk chmod 755 /physical_disk ``` 2. **环境变量修正** 检查 `$MASTER_DATA_DIRECTORY` 是否指向符号链接: ```bash echo $MASTER_DATA_DIRECTORY | grep -q '->' && echo "符号链接存在!" ``` 若存在,在 `.bashrc` 中修改为物理路径。 > **原理说明**:Greenplum 在初始化时需要精确解析物理存储位置。符号链接嵌套会导致路径解析失败,尤其当跨节点路径不一致时[^1]。Linux 内核限制符号链接递归解析深度为 40 层(可通过 `cat /proc/sys/fs/symlink` 验证)[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值