Greenplum 集群故障恢复与主备同步机制实战

Greenplum 集群故障恢复与主备同步机制实战

环境:Greenplum 6.17.1(安装包:open-source-greenplum-db-6-6.17.1-1.el7.x86_64),RHEL/CentOS 7。

文中主机名、路径均已脱敏(host1、/opt/greenplum),替换为实际环境信息即可。

gp 库挂掉后,先检查磁盘使用情况,删除日志等无用内容、确保空间足够,再进行恢复与同步操作。

第一步:找到停止的数据段

bash 复制代码
su gpadmin
gpstate -a          # 整体状态
gpstate -m          # mirror 端口状态
gpstate -c          # primary/mirror 状态
ps -ef | grep postgres
ps -ef | grep gpseg

找到未启动的数据段后,挨个切换 gpadmin 用户启动 primary 以及 mirror。启动命令在每个数据段目录下都有记录,例如 /opt/greenplum/primary/gpseg1/postmaster.opts:

bash 复制代码
cd /opt/greenplum/primary/gpseg1
cat postmaster.opts
su gpadmin
# 粘贴 cat 出来的内容执行

注意:启动后不要 Ctrl+C 退出,要直接关闭窗口退出!

第二步:恢复数据段在主节点上的状态

A. 可能会用到的内容

bash 复制代码
gprecoverseg -help    # 查看命令帮助
  • 按提示找到锁文件并删除(出现锁文件问题时会用到)。

  • /home/gpadmin 为 recoverseg 配置文件目录,如 recover_config_file3 内容示例:

    host1|17005|/opt/greenplum/mirror/gpseg11

  • /opt/greenplum/master/gpseg-1 是 Greenplum 主节点(master)的数据目录。

B. 操作

bash 复制代码
gprecoverseg -i recover_config_file4 -F
# ...
gprecoverseg -i recover_config_file12 -F

recover 配置文件需要自行编写,内容示例(格式:主机|端口|数据目录):

复制代码
host1|16001|/opt/greenplum/primary/gpseg1
host1|16002|/opt/greenplum/primary/gpseg2
host1|16003|/opt/greenplum/primary/gpseg3
host1|16004|/opt/greenplum/primary/gpseg4
host1|16005|/opt/greenplum/primary/gpseg5

C. 其他报错

过程中报错 SSH 问题:

复制代码
One or more hosts are not reachable via SSH. Any segments on those hosts will be marked down

原因是目标主机 host1 的公钥在本地 known_hosts 中对应的指纹与之前不同(主机密钥更改或安全问题),SSH 客户端为防中间人攻击拒绝连接:

bash 复制代码
sed -i '3d' ~/.ssh/known_hosts    # 删除对应行,具体行号按实际调整

重新连接成功后,再执行恢复:

bash 复制代码
gprecoverseg -i recover_config_file12 -F

第三步:同步机制恢复(primary 恢复为主数据节点)

如果 seg 数据段挂掉,mirror 会接管服务。想恢复原拓扑:先用 gprecoverseg 恢复状态,再用 -r 参数将镜像与数据段的切换关系切回:

bash 复制代码
gprecoverseg -r

第四步:检查

bash 复制代码
gpstate -a
gpstate -m
gpstate -c
ps -ef | grep postgres
ps -ef | grep gpseg

小结

阶段 关键命令 说明
定位故障段 gpstate -a/-m/-c、ps -ef 找到未启动的 primary/mirror
手动拉起 postmaster.opts 中的启动命令 逐段启动,勿 Ctrl+C 退出
恢复状态 gprecoverseg -i <配置文件> -F 配置文件格式:`主机
主备回切 gprecoverseg -r 把 primary 切回主数据节点
验证 gpstate -a/-m/-c 全部 Up 即恢复完成
相关推荐
ynchyong1 小时前
linux中的 sed` 与 `seq`
linux·运维·sed·seq·文本工具
中电金信2 小时前
开发更高效、监控更实时、运维更省心,源启数据开发平台构筑一站式数据开发新底座
网络·数据库·人工智能
七牛云行业应用2 小时前
DeepSeek Harness(dsh)安装完整指南:Windows、macOS、Linux 三平台 + 桌面端与 Web 端全覆盖
linux·windows·macos·ai·ai编程
AI直播技术杂谈3 小时前
九点整那场,讲品顺序是前一天下午就锁定的
网络·python·ai·秒播
~城南花已开~3 小时前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师
十年磨一剑~3 小时前
APT 仓库包查看方法文档
linux·ubuntu
DYWorker0013 小时前
第 1-1 课:启动编排:内核如何把自己装配起来
linux
80s7774 小时前
态住宅IP在跨境电商防关联中的技术应用
网络·网络协议·tcp/ip
XiYang-DING4 小时前
【WebSocket】文本帧Text Frame
网络·websocket·网络协议