一、问题的提出
有省点的同事提出问题:由于当初在部署磐维数据库集群时,将数据库目录放置在/apps下,而此目录所挂载的磁盘存储空间比较小,随着业务量的增大,此目录的磁盘空间不能满足数据库存储的要求,需要将数据库目录更改到新的位置。
二、尝试解决问题的思路
如果是对于单节点部署的磐维数据库,则需要修改“data_directory”这个参数值,大体步骤如下:
1. 查看原来的数据库目录
Show data_directory;
2. 创建新的数据库目录
注意:新目录的属主和权限要与原目录保持一致。
3. 更改数据库目录参数
alter system set data_directory='新目录';
4. 停止数据库服务
5. 拷贝原数据库目录到新目录
6. 重启数据库服务
7. 检查数据库服务并做业务验证。
但是对于磐维数据库集群,其中还涉及到集群管理组件等拓扑结构,因此要从整个集群的角度来考虑对这个问题的解决方法。
三、实际解决问题的过程(以一主两备磐维集群为例)
1. 确认数据库集群状态正常
2. 对数据库进行全备份
3. 检查备份集状态
4. 创建新的数据库目录
注意:新目录的属主和权限要与原目录保持一致。
5. 将原数据库目录拷贝到新目录
6. 更改各个节点的postgresql.conf
7. 修改环境变量并使之生效
修改omm用户的环境变量和/etc/profile的相关环境变量并使之生效。
8. 修改集群拓扑文件
9. 重新生成并分发集群配置文件
10. 修改并重启定时任务om_monitor
11. 重启数据库集群
12. 检查数据库集群状态是否正常并做业务验证
四、注意事项
1. 要确保数据库的备份正常可用
2.要注意新目录的属主与权限应与原目录保持一致
3. 要谨慎修改postgresql.conf
4. 要谨慎修改集群拓扑文件
5. 要谨慎修改环境变量
五、补充:与数据库目录空间相关的运维问题及处理
1. 问题表现:
有省点同事反映磐维数据库变为只读状态。数据库只能查询,不能进行数据写入。
2. 问题分析:
为了保证数据库的安全,默认情况下,当磐维数据库目录所在磁盘使用率达到85%时,数据库被锁定进入只读模式,此时只能读,而无法写入。
3. 问题的处理:
(1)调整阈值参数
datastorage_threshold_value_check:数据库只读模式磁盘占用阈值,默认值85
gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check=95"
(2)清理磁盘或清理数据表
查库:
select datname,pg_size_pretty(pg_database_size(datname)) as dbsize from pg_database order by 2 desc;
或:
\l+
查表:
select tableowner, schemaname, tablename,
pg_table_size(schemaname||'.'||tablename) as table_size
from pg_tables order by table_size desc;
清理表:
vacuum full 表名;
(3)恢复阈值参数
gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check=85"
4. 与只读相关的参数
(1)show transaction_read_only;
(2)show default_transaction_read_only;
(3)alter system set default_transaction_read only = off;
(4)alter system set transaction_read_only = off;




