要点
Greenplum/Deepgreen数据库数据存储空间利用率达到100%,数据库宕机无法启动。
背景介绍
来吐槽一个极品案例,我以前服务的一家公司,使用Greenplum数据库,由于工程部管理不到位,运维策略失当,经常出现数据库存储空间不足的情况,空间不足后数据库宕机,业务部门找上来才知道数据库挂了,真是醉了。
出现该问题后,首先想到的是数据库运维失职,在数据库满前有100种方法防止此情况发生:
- 利用率达到70%时扩展空间?
- 在数据目录下放置大文件,在没有足够空间启动时通过删除大文件获取足够空间启动?
- 利用率达到70%时清理数据库无用数据?
.......................
可是每次都要等到发生了才来找我......
解决办法
- 整个Greenplum数据库文件中,最容易通过删除获取存储空间的是pg_log目录下的文件,如果生产系统log日志没有定期清理,那么他会轻松占用1G以上的空间,如果数据库宕机无法启动,首先想到的就是清理该目录下的数据文件(所有节点);清理完后,尝试启动数据库,此时一般不会有问题,都能正常启动;
- 最奇葩的是,现场的pg_log保留时间太短,删完了也无法启动。此时还有一种移动文件的办法,首先你查看一下base目录(数据存储的实际目录),找到下面数字较大的文件夹,把里面的几个大文件复制备份一下,然后删除,这样空间就足够启动了,启动数据库后,尽快清理部分表数据后,将原来的数据文件移动回来,保证数据完整性。
第二种方法是在实际工作中总结的经验,使用前一定要做好备份工作,因为涉及删除生产数据,一旦误操作,可能导致数据无法恢复~~