问题描述
PostgreSQL/PPAS数据库磁盘空间占用剧增。
问题原因
- 原因一:大量更新导致日志剧增,来不及归档和删除,占用了磁盘空间。
- 原因二:查询操作含有大数据量的排序、连接等操作,处理过程中产生临时表并溢出到磁盘,短时间内造成大量空间占用。
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
- 原因一的解决方法:提高实例的磁盘空间容量或降低更新频率。
- 原因二的解决方法:以下SQL语句用于指定每个查询可以使用的临时表空间上限(单位为KB),执行成功后,单个查询生成的临时表空间达到上限就会报错。这样就能及时发现有问题的SQL语句,并避免磁盘空间被占满。
- 对于PostgreSQL用户,通过RDS初始帐号执行如下SQL语句
alter role all set temp_file_limit = [$Table_Space_Limit];
注:[$Table_Space_Limit]为临时表空间上限。
- 对于PostgreSQL用户,通过RDS初始帐号执行如下SQL语句
-
- 对于PPAS用户,通过RDS初始帐号执行如下SQL语句。
select rds_set_conf_for_all_roles('temp_file_limit', '[$Table_Space_Limit]');
- 对于PPAS用户,通过RDS初始帐号执行如下SQL语句。