greenplum集群某台机器磁盘占用100%处理方式

1、问题描述

使用gpfdist往集群中导入大量数据, 一段时间后链接退出,集群没法链接数据库

 2、问题定位

使用以下命令查看:服务器

gpstate -s mdw-1:gpadmin-[INFO]:- Segment Info mdw-1:gpadmin-[INFO]:-      Hostname                          = sdw-1 mdw-1:gpadmin-[INFO]:-      Address                           = sdw-1 mdw-1:gpadmin-[INFO]:-      Datadir                           = /home/mirror/gpseg2 mdw-1:gpadmin-[INFO]:-      Port                              = 50000 mdw-1:gpadmin-[INFO]:- Mirroring Info mdw-1:gpadmin-[INFO]:-      Current role                      = Mirror mdw-1:gpadmin-[INFO]:-      Preferred role                    = Mirror mdw-1:gpadmin-[WARNING]:-   Mirror status                     = Out of Sync                    <<<<<<<< mdw-1:gpadmin-[INFO]:- Status mdw-1:gpadmin-[INFO]:-      PID                               = 10227 mdw-1:gpadmin-[WARNING]:-   Configuration reports status as   = Down                           <<<<<<<< mdw-1:gpadmin-[WARNING]:-   Segment status                    = Down in configuration          <<<<<<<<

链接到相应机器,查看磁盘情况:oracle

 

说明此时磁盘占用满了,没法启动的问题就在这里了spa

 3、问题解决

处理这种状况有以下几种方式:.net

3.1 扩容磁盘

因为本人是将数据目录直接放在根目录下,能够经过添加一块新磁盘的方式直接扩容空间日志

 

3.2 清理文件

每每,线上的环境不会有足够的时间进行磁盘的扩容,甚至一些其余因素致使根本你就接触不到服务器。那么这时候只能进行文件的清除。code

3.2.1 清理日志文件

系统长时间运行后,pg_log文件夹下日志文件会占用必定的空间,这里能够直接删除该目录下的文件,或者是备份到其余地方,让系统正常启动。blog

 

3.2.2 清理pg_xlog文件(慎重!慎重!)

该操做须要在数据库停机的状况下作。事务

 在segment下,会有pg_xlog文件夹,这个文件夹里存储的是wal日志信息,记录事务信息,相似oracle的redo日志,数据在进入greenplum数据库前,都是先进入到该日志文件中,因此该文件很是重要,千万不能手工操做该目录下的文件,若是直接手工删除了该文件,数据库就没法启动。因此删除该文件要谨慎,可使用该命令:pg_resetxlog 。只有在xlog占用了大量空间的状况下才考虑清理,不然不建议清理。操做步骤:io

1)中止greenplum集群(或者是数据库已经因为磁盘空间不够而中止了)

2)使用pg_controldata命令

pg_controldata $segment_directory
......
Latest checkpoint's NextXID:          0/72023
Latest checkpoint's NextOID:          25175
......

这里$segment_directory是segment目录,也就是gpstate -s命令看到的Datadir的路径,若是找不到能够搜索pg_control,该文件所在的位置即为须要的目录位置,经过上述命令获取到标红的两处关键性信息

3)执行以下命令:

pg_resetxlog -o 25175 -x 72023 -f $segment_directory

 

注意,通常状况下pg_xlog 和 pg_clog 目录是不能够动的,除非是没有其余手段能让数据库起来,这里做为清理数据的最后手段,清理前也强烈建议把文件备份到其余目录,以防万一。

另外,以上命令须要数据库管理员帐户执行,上述命令完成后,根据你的使用的空间大小,通常可以有很多的空间释放出来,可让你的系统先起来。

 因为任何缘由致使pg_controldata不可用的时候,可使用下面的方式人工计算出来相应的值:

 

4)启动greenplum集群

 4、实践建议

一、清理xlog日志是在不得已的状况下才这么作,待集群正常启动后,须要谨慎验证数据的完整性

二、须要有本身的一套监控机制监控磁盘使用率,尽量的避免磁盘使用100%的状况发生,一旦因为这种状况致使了集群崩溃,甚至丢失数据,多是灾难性的

三、若是是因为误删了pg_logs的文件致使集群没法启动,也可使用pg_resetxlog命令使集群恢复启动,但必定要谨慎验证数据的完整性

 

5、参考文章

https://blog.csdn.net/w1992wishes/article/details/82631240

相关文章
相关标签/搜索