Greenplum segment节点异常恢复
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,Segment检测及故障切换机制GP Master首先会检测Primary状态,如果Primary不可连通,那么将会检测Mirror状态,Primary/Mirror状态总共有4种:Primary活着
千家信息网最后更新 2024年11月25日Greenplum segment节点异常恢复
Segment检测及故障切换机制
GP Master首先会检测Primary状态,如果Primary不可连通,那么将会检测Mirror状态,Primary/Mirror状态总共有4种:
- Primary活着,Mirror活着。GP Master探测Primary成功之后直接返回,进行下一个Segment检测;
- Primary活着,Mirror挂了。GP Master探测Primary成功之后,通过Primary返回的状态得知Mirror挂掉了(Mirror挂掉之后,Primary将会探测到,将自己变成ChangeTracking模式),这时候更新Master元信息,进行下一个Segment检测;
- Primary挂了,Mirror活着。GP Master探测Primary失败之后探测Mirror,发现Mirror是活着,这时候更新Master上面的元信息,同时使Mirror接管Primary(故障切换),进行下一个Segment检测;
- Primary挂了,Mirror挂了。GP Master探测Primary失败之后探测Mirror,Mirror也是挂了,直到重试最大值,结束这个Segment的探测,也不更新Master元信息了,进行下一个Segment检测。
上面的2-4需要进行gprecoverseg进行segment恢复。
对失败的segment节点;启动时会直接跳过,忽略。
[gpadmin@mdw ~]$ gpstart==≥ gpstart:mdw:gpadmin-[INFO]:-Starting gpstart with args: ==≥ gpstart:mdw:gpadmin-[INFO]:-Gathering information and validating the environment...==≥ gpstart:mdw:gpadmin-[INFO]:-Greenplum Binary Version: 'postgres (Greenplum Database) 5.0.0 build 1'==≥ 。。。。。。。。。。。。。。。。。。。。。。。。。。==≥ gpstart:mdw:gpadmin-[INFO]:-Master Started...==≥ gpstart:mdw:gpadmin-[INFO]:-Shutting down master==≥ gpstart:mdw:gpadmin-[WARNING]:-Skipping startup of segment marked down in configuration: on sdw2 directory /data/gpdata/gpdatam/gpseg0 <<<<<==≥ gpstart:mdw:gpadmin-[INFO]:---------------------------==≥ gpstart:mdw:gpadmin-[INFO]:-Master instance parameters==≥ gpstart:mdw:gpadmin-[INFO]:---------------------------==≥ gpstart:mdw:gpadmin-[INFO]:-Database = template1==≥ gpstart:mdw:gpadmin-[INFO]:-Master Port = 1921==≥ gpstart:mdw:gpadmin-[INFO]:-Master directory = /data/gpdata/pgmaster/gpseg-1==≥ gpstart:mdw:gpadmin-[INFO]:-Timeout = 600 seconds==≥ gpstart:mdw:gpadmin-[INFO]:-Master standby = Off ==≥ gpstart:mdw:gpadmin-[INFO]:---------------------------------------==≥ gpstart:mdw:gpadmin-[INFO]:-Segment instances that will be started==≥ gpstart:mdw:gpadmin-[INFO]:---------------------------------------==≥ gpstart:mdw:gpadmin-[INFO]:- Host Datadir Port Role==≥ gpstart:mdw:gpadmin-[INFO]:- sdw1 /data/gpdata/gpdatap/gpseg0 40000 Primary==≥ gpstart:mdw:gpadmin-[INFO]:- sdw2 /data/gpdata/gpdatap/gpseg1 40000 Primary==≥ gpstart:mdw:gpadmin-[INFO]:- sdw1 /data/gpdata/gpdatam/gpseg1 50000 MirrorContinue with Greenplum instance startup Yy|Nn (default=N):> y==》gpstart:mdw:gpadmin-[INFO]:-Commencing parallel primary and mirror segment instance startup, please wait...==》==》gpstart:mdw:gpadmin-[INFO]:-Process results...==》gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------==》gpstart:mdw:gpadmin-[INFO]:- Successful segment starts = 3==》gpstart:mdw:gpadmin-[INFO]:- Failed segment starts = 0==》gpstart:mdw:gpadmin-[WARNING]:-Skipped segment starts (segments are marked down in configuration) = 1 <<<<<<<<==》gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------==》gpstart:mdw:gpadmin-[INFO]:-==》gpstart:mdw:gpadmin-[INFO]:-Successfully started 3 of 3 segment instances, skipped 1 other segments ==》gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------==》gpstart:mdw:gpadmin-[WARNING]:-****************************************************************************==》gpstart:mdw:gpadmin-[WARNING]:-There are 1 segment(s) marked down in the database==》gpstart:mdw:gpadmin-[WARNING]:-To recover from this current state, review usage of the gprecoverseg==》gpstart:mdw:gpadmin-[WARNING]:-management utility which will recover failed segment instance databases.==》gpstart:mdw:gpadmin-[WARNING]:-****************************************************************************==》gpstart:mdw:gpadmin-[INFO]:-Starting Master instance mdw directory /data/gpdata/pgmaster/gpseg-1 ==》gpstart:mdw:gpadmin-[INFO]:-Command pg_ctl reports Master mdw instance active==》gpstart:mdw:gpadmin-[INFO]:-No standby master configured. skipping...==》gpstart:mdw:gpadmin-[WARNING]:-Number of segments not attempted to start: 1==》gpstart:mdw:gpadmin-[INFO]:-Check status of database with gpstate utility51
查看数据库的mirror的节点启动状态
[gpadmin@mdw ~]$ gpstate -m==》gpstate:mdw:gpadmin-[INFO]:-Starting gpstate with args: -m==》gpstate:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.0.0 build 1'==》gpstate:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.3.23 (Greenplum Database 5.0.0 build 1) ==》gpstate:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...==》gpstate:mdw:gpadmin-[INFO]:--------------------------------------------------------------==》gpstate:mdw:gpadmin-[INFO]:--Current GPDB mirror list and status==》gpstate:mdw:gpadmin-[INFO]:--Type = Spread==》gpstate:mdw:gpadmin-[INFO]:--------------------------------------------------------------==》gpstate:mdw:gpadmin-[INFO]:- Mirror Datadir Port Status Data Status ==》gpstate:mdw:gpadmin-[WARNING]:-sdw2 /data/gpdata/gpdatam/gpseg0 50000 Failed <<<<<<<<==》gpstate:mdw:gpadmin-[INFO]:- sdw1 /data/gpdata/gpdatam/gpseg1 50000 Passive Synchronized==》gpstate:mdw:gpadmin-[INFO]:--------------------------------------------------------------==》gpstate:mdw:gpadmin-[WARNING]:-1 segment(s) configured as mirror(s) have failed
可直观看出"[WARNING]:-sdw2 /data/gpdata/gpdatam/gpseg0 50000 Failed "
如何恢复这个mirror segment呢?
首先产生一个恢复的配置文件 : gprecoverseg -o ./recov
---- 当然primary segment也是这样恢复 ----
[gpadmin@mdw ~]$ gprecoverseg -o ./recov==》gprecoverseg:mdw:gpadmin-[INFO]:-Starting gprecoverseg with args: -o ./recov==》gprecoverseg:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.0.0 build 1'==》gprecoverseg:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.3.23 (Greenplum Database 5.0.0 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on ==》==》gprecoverseg:mdw:gpadmin-[INFO]:-Checking if segments are ready==》gprecoverseg:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...==》gprecoverseg:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...==》gprecoverseg:mdw:gpadmin-[INFO]:-Configuration file output to ./recov successfully.
查看恢复的配置文件
可以知道哪些segment需要恢复
[gpadmin@mdw ~]$ cat recovfilespaceOrder=fastdisksdw2:50000:/data/gpdata/gpdatam/gpseg03
使用配置文件进行恢复 :
[gpadmin@mdw ~]$ gprecoverseg -i ./recov==》gprecoverseg:mdw:gpadmin-[INFO]:-Starting gprecoverseg with args: -i ./recov==》gprecoverseg:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.0.0 build 1'==》gprecoverseg:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.3.23 (Greenplum Database 5.0.0 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on ==》==》gprecoverseg:mdw:gpadmin-[INFO]:-Checking if segments are ready==》gprecoverseg:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...==》gprecoverseg:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...==》gprecoverseg:mdw:gpadmin-[INFO]:-Greenplum instance recovery parameters==》gprecoverseg:mdw:gpadmin-[INFO]:----------------------------------------------------------==》gprecoverseg:mdw:gpadmin-[INFO]:-Recovery from configuration -i option supplied==》gprecoverseg:mdw:gpadmin-[INFO]:----------------------------------------------------------==》gprecoverseg:mdw:gpadmin-[INFO]:-Recovery 1 of 1==》gprecoverseg:mdw:gpadmin-[INFO]:----------------------------------------------------------==》gprecoverseg:mdw:gpadmin-[INFO]:- Synchronization mode = Incremental==》gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance host = sdw2==》gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance address = sdw2==》gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance directory = /data/gpdata/gpdatam/gpseg0==》gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance port = 50000==》gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance replication port = 51000==》gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance fastdisk directory = /data/gpdata/seg1/pg_mir_cdr/gpseg0==》gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance host = sdw1==》gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance address = sdw1==》gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance directory = /data/gpdata/gpdatap/gpseg0==》gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance port = 40000==》gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance replication port = 41000==》gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance fastdisk directory = /data/gpdata/seg1/pg_pri_cdr/gpseg0==》gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Target = in-place==》gprecoverseg:mdw:gpadmin-[INFO]:-Process results...==》gprecoverseg:mdw:gpadmin-[INFO]:-Done updating primaries==》gprecoverseg:mdw:gpadmin-[INFO]:-******************************************************************==》gprecoverseg:mdw:gpadmin-[INFO]:-Updating segments for resynchronization is completed.==》gprecoverseg:mdw:gpadmin-[INFO]:-For segments updated successfully, resynchronization will continue in the background.==》gprecoverseg:mdw:gpadmin-[INFO]:-==》gprecoverseg:mdw:gpadmin-[INFO]:-Use gpstate -s to check the resynchronization progress.==》gprecoverseg:mdw:gpadmin-[INFO]:-******************************************************************35
查看恢复状态
[gpadmin@mdw ~]$ gpstate -m==》gpstate:mdw:gpadmin-[INFO]:-Starting gpstate with args: -m==》gpstate:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.0.0 build 1'==》。。。。。。。。。。。。。。。。。。。。。。。。。。==》gpstate:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...==》gpstate:mdw:gpadmin-[INFO]:--------------------------------------------------------------==》gpstate:mdw:gpadmin-[INFO]:--Current GPDB mirror list and status==》gpstate:mdw:gpadmin-[INFO]:--Type = Spread==》gpstate:mdw:gpadmin-[INFO]:--------------------------------------------------------------==》gpstate:mdw:gpadmin-[INFO]:- Mirror Datadir Port Status Data Status ==》gpstate:mdw:gpadmin-[INFO]:- sdw2 /data/gpdata/gpdatam/gpseg0 50000 Passive Resynchronizing==》gpstate:mdw:gpadmin-[INFO]:- sdw1 /data/gpdata/gpdatam/gpseg1 50000 Passive Synchronized==》gpstate:mdw:gpadmin-[INFO]:--------------------------------------------------------------13
primary mirror角色对调
数据库的主备就恢复了,但是还有一步,是可选的。要不要把primary mirror角色对调一下,因为现在mirror和primary和优先角色是相反的。 如果要对调,使用以下命令,会停库来处理。
gprecoverseg -r
用于修复Segment的是gprecoverseg。使用方式比较简单,几个主要参数如下:
-i :主要参数,用于指定一个配置文件,该配置文件描述了需要修复的Segment和修复后的目的位置。 -F :可选项,指定后,gprecoverseg会将"-i"中指定的或标记"d"的实例删除,并从活着的Mirror复制一个完整一份到目标位置。 -r :当FTS发现有Primary宕机并进行主备切换,在gprecoverseg修复后,担当Primary的Mirror角色并不会立即切换回来,就会导致部分主机上活跃的Segment过多从而引起性能瓶颈。因此需要恢复Segment原先的角色,称为re-balance.
探测
检测
状态
文件
角色
配置
切换
信息
更新
节点
成功
位置
参数
故障
数据
数据库
面的
最大
直观
中指
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
天津超频服务器什么价格
泰拉瑞亚最好的服务器端口
石家庄广尚网络技术
数据库char的取值范围是多少
传奇4服务器断开什么原因
达梦数据库有限公司总经理
私有云平台服务器
卫宁健康软件开发
软件开发公司的宗旨
维护数据库系统
至京网络技术有限责任公司
欧拉定理网络安全
软件开发app制作人员
软件开发验收 模板 gb
vc 访问数据库
网络安全法确立了哪些基本原则
数据库最新公告
数据库重建索引碎片
网络安全小知识作文600字
教育整顿查网络技术侦查措施
计算机网络技术第四版答案
上海激玩网络技术有限公司
xp服务器安装系统安装教程
电脑通过mqtt连接不上服务器
造梦西游ol服务器哪里去了
数据库表的表头叫什么
软件开发风险管理计划书怎么写
浙江搜道网络技术有限公司好吗
域时间服务器
武汉大学代理服务器