背景:

gp在使用时间逐渐变长的过程中,日志会不断变大,所以需要定期清理,不然会有磁盘打满的风险

清理脚本:

#!/bin/bash -x
# MPP 清理日志脚本,放在MPP 用户(gpadmin)的crontab中调用,可以配置每周或者每天执行一次
set -e

# specify GP admin user.
GPUSER=$1
if [ -z $GPUSER ]; then
    GPUSER=$USER
fi
# 日志最大保留时间
export LOG_RETENTION_DURATION=3
GPHOME=/home/$GPUSER/greenplum-db

source $GPHOME/greenplum_path.sh


callAll(){

  host=`echo $1| sed  -e 's/^[ ]*//g' | sed -e 's/[ ]*$//g'`
  echo host=$host
  directory=`echo $2|sed -e 's/^[ ]*//g' | sed -e 's/[ ]*$//g'`
  echo directory=$directory
  cmd="find $directory/pg_log -mtime +$LOG_RETENTION_DURATION -name 'gpdb-*.csv' -type f -delete -print"
  echo cmd=$cmd

  gpssh -h $1 -e -v  $cmd
}
export -f callAll

psql -t  -c "select hostname, fselocation from gp_segment_configuration a, pg_filespace_entry b where a.dbid = b.fsedbid " template1  |head -n -1 | awk -F '|' '{printf "%s %s\n",$1,$2}'|xargs -I{} bash -c "callAll {}"

将上面的内容复制到log_cleaner.sh脚本中,按照部署情况修改脚本前面的几个关键变量值后,保存增加执行权限

使用crontab -e定期调度该脚本,推荐调度频率是一天一次,调度时间为业务低峰期