Greenplum 的一次紧急恢复

简介: Greenplum的一次非常规恢复方法

[TOC]

概述

客户的GP节点磁盘遭遇损坏,导致数据丢失。gprecoverseg命令无法恢复节点后做的一次非常规Greenplum恢复操作。

使用背景

在某次紧急运维下,我发现用户GP的某一个primary节点的状态异常,已经显示down掉,在确认所在的机器和磁盘没有异常后,我使用gprecoverseg命令去同步已经down的primary节点。但是失败了,在使用gpstate -e查看到的同步进度中看到同步了一会儿,但是随后失败了。(失败的原因是因为该mirror节点的磁盘曾经坏过,做过恢复,但是恢复的数据不是很完全,导致同步时校验出错),在该mirror节点的日志信息中查看到下面这段信息:

2019-03-16 21:30:35.341666 CST,,,p108637,th-1138622144,,,,0,,cmd126,seg-1,,,,,"ERROR","58P01","could not open relation 1663/43186/8782691: No such file or directory",,,,,,"(null)",0,,"md.c",1371,"Stack trace:
1    0xaf75c6 postgres errstart + 0x1f6
2    0x9f62ca postgres <symbol not found> + 0x9f62ca
3    0x9f7980 postgres mdnblocks + 0xf0

gprecoverseg命令会去从mirror节点获取数据去恢复primary节点,获取的数据多少在GP master的元数据表中都有记录,但是此时,mirror上的数据已经丢失,同步数据的进程到这里出错,因为找不到要找的表的数据,就直接退出,不再同步数据了,导致命令失败。

这种情况下,其实Greenplum的一主一备的高可用已经被破坏。数据已经永久丢失了,Greenplum本身没有什么好的办法恢复集群的状态了。

另辟蹊径

客户机器在mirror的支持下,依然是可以运行的,数据库的使用是正常的,但是客户担忧负载在一台机器磁盘上,依然会有风险,需要把GP恢复到完备的状态,其实我们还是有一个强行恢复Greenplum的方法

因为Greenplum的primary和mirror的文件目录的信息是完全一致的,不论是参数文件还是数据文件。我们完全可以手动将mirror上的文件目录拷贝过来,作为primary使用。但是要想让greenplum在下次启动时默认primary是好的去运行,还得做一些操作,完整如下:

将数据库先关闭,保证业务停止,mirror的数据目录不再有数据变化

gpstop -m fast

将mirror的数据目录完整发送到primary的目录

scp -r gpseg12 @sdw2:/data/primary/gpseg12           :示例

完成之后,再单独将master节点启动

gpstart -m

进入到master数据库中(其实master数据库有三个template0,template1和postgres,这三个是全局的,进哪一个都一样)

PGOPTIONS='-c gp_session_role=utility' psql template1

获取系统表的DML权限,以便后续修改状态

set allow_system_table_mods='dml';

预防起见,将数据库的该系统表做一次备份

create table  16_gp_segment_configuration  as select * from gp_segment_configuration

将坏的节点全部状态信息改为正常,人为修改它的状态

update gp_segment_configuration SET status='u' where dbid=3;

退出后关闭master节点

gpstop -m

最后将数据库正常启动

gpstart -a

启动完成之后,再看看集群的状态全部正常了。数据库也正常运行了。

后记

此种恢复的方法,关键点在于需要保证mirror作为数据目录,是可以正常运行的,也得保证将此目录完整的拷贝到primary中。

相关文章
|
并行计算 算法 异构计算
antv/g6之图布局及切换布局
antv/g6之图布局及切换布局
2246 0
|
自然语言处理 数据可视化 算法
第5章 数据可视化——5.4 四维图形可视化
第5章 数据可视化——5.4 四维图形可视化
|
4月前
|
缓存
阿里云百炼Token Plan计费解析:1000 Credits 对应 Tokens 数量及使用场景
阿里云百炼Token Plan以Credits统一计费,1000 Credits可支持数十次短文本问答(如qwen3.6-flash),或少量图像生成(如qwen-image-2.0),或几次复杂推理(如qwen3.7-max)。标准/高级/尊享坐席月费198/698/1398元,含2.5万/10万/25万Credits。阿里云百炼官网:https://t.aliyun.com/U/fPVHqY
|
4月前
|
人工智能 缓存 自然语言处理
阿里云百炼Token Plan三大档位详解:Credits计费规则、Token换算与团队选型指南
阿里云百炼Token Plan是面向团队的AI大模型订阅服务,以Credits作为统一计量积分,覆盖文本生成、图像生成、代码开发等全场景模型调用,兼容主流AI编程与智能体工具,提供团队管理、预算管控、数据安全等企业级能力。该方案采用包月订阅制,提供标准、高级、尊享三档坐席,用户按月付费获取固定Credits额度,所有模型调用、工具使用、上下文缓存均按统一规则折算Credits扣除,告别传统按量付费的账单波动,实现AI使用成本的精准可控。
3773 0
|
运维 监控 测试技术
2025年微服务架构关键知识点(一):核心原则与演进趋势
微服务架构凭借其高可用性、灵活扩展等优势,已成为2025年主流软件开发范式。本文深入解析微服务的核心原则、演进趋势及实践要点,助力开发者夯实基础,应对挑战,构建高效、稳定的系统架构。
|
缓存 物联网 异构计算
智谱发布新一代旗舰模型 GLM-4.5,面向推理、代码与智能体的开源SOTA模型!
7月28日晚,智谱带来新一代旗舰模型——GLM-4.5!GLM-4.5 系列模型是专为智能体设计的基础模型。GLM-4.5拥有 3550 亿总参数量,其中 320 亿活跃参数;GLM-4.5-Air 采用更紧凑的设计,拥有 1060 亿总参数量,其中 120 亿活跃参数。GLM-4.5模型统一了推理、编码和智能体能力,以满足智能体应用的复杂需求。
1772 0
|
Kubernetes Java 开发工具
CI/CD(五)Flink 应用部署
Flink 应用需要解决的是任务的灵活增加(通常以 maven module 的方式存在同一个git仓库中),不能依赖手工注册应用或.polaris-ci.yml自动注册
597 1
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
1382 19
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
5644 2

热门文章

最新文章