gp数据库中数据分散存放在各个节点的数据文件中,当执行delete操作时,会留下很多空白空间,导致磁盘空间不会下降。此时可用vacuum all 表名来回收空间。
1.系统表定期vacuum,重建索引
建议定期vacuum系统表并重建索引,以下脚本可以定期执行
#!/bin/bash
DBNAME="<database-name>"
SYSTABLES="' pg_catalog.' || relname || ';' from pg_class a, pg_namespace b
where a.relnamespace=b.oid and b.nspname='pg_catalog' and a.relkind='r'"
psql -tc "SELECT 'VACUUM' || $SYSTABLES" $DBNAME | psql -a $DBNAME
reindexdb --system -d $DBNAME
analyzedb -s pg_catalog -d $DBNAME
2.数据库日志文件管理
greenplum日志存放在pg_log下,master节点和每个segment节点都会有,格式为gpdb-YYYY-MM-DD_hhmmss.cs
需要我们定期清理
定期清理master节点的日志,保留最近8天的日志
find master日志目录 -type f -name "gpdb-*.csv" -ctime +8 -exec rm {} \;
平时如果gp有问题,也可以查看相关日志
查看日志:
gplogfilter -n 3 输出最后3行日志
如果想查看segment节点的日志,那么可以执行以下命令
gpssh -f seg_hosts #seg_hosts为segment节点的主机列表
=>source /usr/local/greenplum-db/greenplum_path.sh
=>gplogfilter -n 3 /data01/gpadmin/gpdata/primary/gpseg*/pg_log/gpdb*.log #segment节点的日志目录
gplogfilter具体使用可看--help
除了数据库日志,还有管理日志在~/gpAdminLogs下面,可以到相关目录查看
网友评论