【Greenplum】Greenplum 磁盘空间满了数据库宕机解决方法

一、背景

后台一直往 Greenplum 数据库生成数据,由于没关注磁盘空间,导致数据存储空间利用率达到100%,数据库宕机无法启动。

当然上述情况是可以通过很多方式规避的:

  • 利用率达到70%时扩展空间
  • 利用率达到70%时清理数据库无用数据
  • 在数据目录下放置大文件,在没有足够空间启动时通过删除大文件获取足够空间启动
  • ......

二、解决办法

2.1、删除 pg_log 目录下的文件

在每个节点的数据存放目录下会生成 pg_log 目录,如下:

greenplum_01.png

pg_log 目录下记录的是数据库活动日志,一般是记录服务器与 DB 的状态,比如各种 Error 信息,定位慢查询 SQL ,数据库的启动关闭信息,发生 checkpoint 过于频繁等的告警信息,诸如此类。该日志有 .csv 格式和 .log。

如果生产系统 pg_log 日志没有定期清理, log 日志会轻松占用 1G 以上的空间,如果数据库宕机无法启动,可以通过清理所有节点该目录下的数据文件(master 节点的 log 日志很大, segment 节点 log 日志稍小);清理完后,尝试启动数据库,此时一般不会有问题,都能正常启动。

这里要注意不能删错 pg_xlog 和 pg_clog 目录的信息。pg_xlog 与 pg_clog 记录数据库的事务信息,不得随意删除更新。

2.2、移动 base 目录下的文件

现场的 pg_log 保留时间太短,删完了也无法启动。

此时还有一种移动文件的办法,可以先查看一下base目录(数据存储的实际目录,和 pg_log 处在同一目录下),找到下面数字较大的文件夹,把里面的几个大文件复制备份一下,然后删除,这样空间就足够启动了,启动数据库后,尽快清理部分表数据后,将原来的数据文件移动回来,保证数据完整性,否则会导致一些表不可用。

这种方法是不正规的操作,建议少用。使用前一定要做好备份工作,因为涉及删除生产数据,一旦误操作,可能导致数据无法恢复。

2.2、其他方法

也许还有其他的方法,后续有资料后再做记录。

三、总结

初次使用 greenplum 没有经验,可能会有磁盘占用满的风险,后续应该注意这个问题,尽量规避,少踩一些坑。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,106评论 2 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,967评论 25 709
  • 今晚听了兴成长计划优秀教师表彰会,吴虹校长激动的宣布了获奖名单,其中就有我身边的好几位老师,真为她们高兴,她们今天...
    武川二中133祁玲梅阅读 2,953评论 0 0
  • 此处我也要享受一下化名的乐趣,今天就化名“张洁”吧。 (背景:幼儿园入学报名) 老师:这位家长,您女儿名字里的后一...
    冉耳耳阅读 3,483评论 0 0
  • 去往湖南的火车开动了,你带着相机去到你期待许久的古城。知道你要出门的消息的我很开心,只可惜我没有合适的身份陪在你的...
    槐树槐花阅读 2,870评论 0 1