这边有整理两个脚本,一个是备份整个data目录,且保留2周,一个是备份xlog文件,每5分钟运行一次。
一、备份data目录
#!/bin/bashsource /etc/profilesource ~/.bash_profileexport PGPASSWORD="xxxxxxxx"command=/cache1/PostgreSQL/9.1/binbase_time=`date+%Y%m%d%H%M`log_time=`date+%c`data_dir=/cache1/PostgreSQL/9.1back_dir=/cache1/PostgreSQL/9.1/pgdata_bakif[ ! -d $back_dir/base ];thenmkdir-p $back_dir/basechownpostgres:postgres $back_dir/base -Rfiif[ ! -d $back_dir/archive ];thenmkdir-p $back_dir/archivechownpostgres:postgres $back_dir/archive -Rfiif[ ! -d $back_dir/pg_xlog ];thenmkdir-p $back_dir/pg_xlogchownpostgres:postgres $back_dir/pg_xlog -Rfiecho"################################ ${log_time} ###################################">>/var/log/pgbackup.logmv $back_dir/archive/ $back_dir/archive_${base_time}/ && mkdir$back_dir/archive/chownpostgres:postgres $back_dir/archive -R${command}/psql -p 6543 -U postgres -c "SELECT pg_start_backup('${base_time}');">>/var/log/pgbackup.log 2>&1cd ${data_dir} && tar cfP ${back_dir}/base/data_${base_time}.tar data/echo-e "Data tar success. \n">>/var/log/pgbackup.log${command}/psql -p 6543 -U postgres -c "SELECT pg_stop_backup();">>/var/log/pgbackup.log 2>&1${command}/psql -p 6543 -U postgres -c "SELECT pg_switch_xlog();">>/var/log/pgbackup.log 2>&1cd ${back_dir} && tar cfP ${back_dir}/pg_xlog/archive_${base_time}.tar archive_${base_time}/ && rm -rf archive_${base_time}/echo"PG_XLOG tar success.">>/var/log/pgbackup.logfind ${back_dir}/base/ -mtime +14 -execrm -rf {} \;find ${back_dir}/pg_xlog/ -mtime +14 -execrm -rf {} \;设置为每天凌晨3.30自动运行
31 3 * * 0 /bin/sh /usr/local/bin/XXX.sh
二、备份xlog
#!/bin/bashsource /etc/profilesource ~/.bash_profileback_dir=/cache1/PostgreSQL/9.1/pgdata_bakxlog_dir=/cache1/PostgreSQL/9.1/data/pg_xlogif[ ! -d ${back_dir}/archive ];then mkdir-p ${back_dir}/archive chownpostgres:postgres ${back_dir}/archive -Rfifilename=`ls -lt ${xlog_dir}/archive_status|grep done|head -n 1 |awk '{print $NF}'|awk -F. '{print $1}'`cd ${xlog_dir} && xlog_file=(`ls -lt| grep -v total | grep -v archive|grep -v "$filename"|awk '{print $NF}'`)forfile in ${xlog_file[@]}do [[ ${xlog_dir}/${file} -nt ${xlog_dir}/${filename} ]] && rsync -aqz ${xlog_dir}/${file} ${back_dir}/archive/done设置为每5分钟运行一次
*/5 * * * * /bin/sh /usr/local/bin/xx.sh
文章转载自聂扬帆博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




