发现测试集群 standby 异常
pg_stat_relication 下一行正常来说是由信息提示,不会显示 no entries found
对比正常的信息
查看测试库 testgpm02 数据库日志发现报错
这表示备用服务器上的流复制的接收进程已经终止,因为它无法从到主服务器的连接中再传输任何更改。
报错原因
1. 通常,当主节点服务器和备用节点服务器之间出现网络中断时,会出现此类报错。
2. 检查主服务器和备用服务器之间的底层网络连接。如果连接按预期工作,不是网络连接的问题,另一种可能的原因是由于主服务器上的负载较高。
3. 该报错是在对系统表进行优化后出现的,不排除这方面的原因。
解决方案,看到 case 有相同报错,官方解答需重建 standby。
与应用侧沟通停止调度
停库
清除残留会话
psql -c “checkpoint;”
gpstop -M fast
在 testgpm02 主机备份元数据 newm
tar -cvf newm22_01_13.tar newm
起库, 维护模式进入
gpstart -m
删除现有的 standby
gpinitstandby -r testgpm02
查看 standby 状态是否删除成功
gpstate -f
按照 master 重建数据目录, 少什么建什么。
mkdir /data/newm/default/gpseg-1
mkdir /data/newm/gpfs/gpseg-1
mkdir /data/newm/fastdisk1/gpseg-1
mkdir /data/newm/ fastdisk2/gpseg-1
添加 testgpm02
gpinitstandby -s testgpm02
提示选择表空间的目录
查看 standby 状态是否添加成功
gpstate -f
以维护模式停库
gpstop -m
起库
gpstart
查看集群状态是否正常
gpstate
gpstate -f
ps:
注意表空间目录的步骤,版本不一样做法就不一样,具体记不太清了 4 版本好像是不用建目录直接填上去就行了,5 版本需要提前建好目录。报错提示目录的相关问题就都试下吧。