datanode启动后闪退_解决了一个Greenplum启动失败的问题

        今天有个其他项目的同事求助,说是他们项目的Greenplum启动不了,让我远程帮忙看看。由于前一阵子我自己也遇到过启动失败的问题并解决了,因此就答应了下来。

      首先连上VPN,登录服务器,切换到gpadmin用户,通过.bash_profile文件找到greenplum的安装目录和master文件路径。然后开始检查日志,查看$MASTER_DATA_DIRECTORY/pg_log下面的startup.log和最新的csv文件,发现没用错误提示。在征询现场的同事后,我觉得重启数据库,看看启动过程中是否有错误提提示。

26f9b82e7e9fed2976a2a4ba6393d602.png

       从截图可以看到,没有明显的错误提示,只是告知,segment启动失败。既然如此,我们就切换到datanode上面查看segment的日志。在segment的pg_log文件夹下,也是查看最新的csv文件和

fbe1554ab27c560361b879fb26c0a062.png

      多年的经验告诉我,红色框内的“could not locate a valid checkpoint record”是最重要的线索,于是分别在前面加greenplum和postgresql进行查询。

       在网页https://blog.csdn.net/international24/article/details/89710703找到第一个有用的信息:

2db85911444da214ccfdf3a57a8f9017.png

       初步断定是由于日志文件损坏,导致启动失败。找到greenplum的安装路径,发现确实提供了pg_resetxlog命令工具。由于这个是postgresql的命令,并且用于window系统,因此我继续百度“greenplum pg_resetxlog” 进一步了解pg_resetxlog命令的用法。搜到的知识很少,只找到另外一篇类似的文章:https://www.bbsmax.com/A/QW5YM9Rq5m/ 。虽然写得更详细,但是帮助不大。

       于是,我先备份好一个segment目录的所有文件,然后执行以下命令:

/usr/local/greenplum-db-6.9.0/bin/pg_resetxlog -f /opt/greenplum/data1/mirror/gpseg5

     根据提示输入yes以后,显示Transcation log reset。

0a49783ce0436029112361ea58e568fa.png

     完成一个节点的修复以后,我尝试重启数据库,结果显示,数据库的6个segment有一个正常启动。这说明我找对了方向。于是又将其它六个segmnet的事务日志重置。

--sdw1/usr/local/greenplum-db-6.9.0/bin/pg_resetxlog -f /opt/greenplum/data1/mirror/gpseg4/usr/local/greenplum-db-6.9.0/bin/pg_resetxlog -f /opt/greenplum/data2/mirror/gpseg5--sdw2/usr/local/greenplum-db-6.9.0/bin/pg_resetxlog -f /opt/greenplum/data1/mirror/gpseg0/usr/local/greenplum-db-6.9.0/bin/pg_resetxlog -f /opt/greenplum/data2/mirror/gpseg1--sdw3/usr/local/greenplum-db-6.9.0/bin/pg_resetxlog -f /opt/greenplum/data1/mirror/gpseg2/usr/local/greenplum-db-6.9.0/bin/pg_resetxlog -f /opt/greenplum/data2/mirror/gpseg3

      完了以后,重启数据库,果然正常启动。

95647fb85c6227766a18bf78e609d6fe.png

      沟通得知,这次数据库启动异常是由于磁盘空间满了,导致Greenplum数据库down掉,然后重启就出现异常了。

       这里需要说明以下,Greenplum默认是开启读写事务日志的,导致日志增长非常快。但是Greenplum一般都用于OLAP系统,几乎每天全量覆盖数据,所以保留数据修改日志作用不大。一劳永逸的办法就是修改日志参数为只记录DDL日志。命令如下,执行后执行gpstop -u使其生效。

gpconfig -c log_statement -v DDL

        送佛送到西,我帮忙执行了以下这个命令。

        综上,就是我今天帮其他同事解决问题的过程。大概花了一个小时左右。感觉很有成就感,特此总结一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值