分享一个postgresql实时热备份的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
#脚本作用:备份本机postgres数据库
#Author: Jack Zhou
#Date: 2017-01-18
backupDir=/mnt/psql_backup #备份目录设置
pguser=postgres
backup_caps=14 #备份上限天数
TODAY=`date +%F`
if [[ `id -u` -ne 0 ]]; then
echo "Must run as root. So exit." >&2
exit 1
fi
if [ ! -d "$backupDir/$TODAY" ]; then
mkdir -p "$backupDir/$TODAY"
chown -R ${pguser}.${pguser} "$backupDir/$TODAY"
fi
exec &>> "$backupDir/backup.log"
echo "$(date +%F/%T)开始基础备份"
su - -c "pg_basebackup -D ${backupDir}/${TODAY}/base-backup -Ft -z -x" $pguser
[[ $? = 0 ]] && echo "$(date +%F/%T)备份成功!"
echo "删除以下过期的备份文件:"
find "$backupDir" -maxdepth 1 ! -path "$backupDir" -type d -mtime +$backup_caps -print -exec rm -fr '{}' ;