/data/postgres
下shu_han 库
每天23:00备份一次
每个小时临时备份一次,每天凌晨删除一天之前的备份
/data/postgres
,后文不赘述)dump
目录存储每天备份文件dump
目录下创建tmp
目录,备份每小时临时备份文件 volumes:
- ./dump:/dump #添加这一行
在工作目录中添加备份脚本文件
dump.sh
,内容如下
#!/bin/bash
#####定义变量#######
dateTag=`date +%Y%m%d%H%M`
dumpDir=$1
dbUser="root"
ipAddr="10.251.132.85"
dbPort=5432
dbPasswd="liubei@161"
#dbName="clf_all_data"
####### 定义要备份库库 #################
#要备份的库名一行一个
backDbList=(
xi_shu
)
#######开始备份##########
cd ${dumpDir}
### 备份各库##
for dbName in ${backDbList[@]};
do
PGPASSWORD=${dbPasswd} pg_dump -h ${ipAddr} -p ${dbPort} -U ${dbUser} -d ${dbName} -f ${dbName}.sql
tar -czf ${dbName}-${dateTag}.tar.gz ${dbName}.sql
rm -rf ${dbName}.sql
done
在docker-compose.yml文件添加如下内容
volumes:
- ./dump.sh:/dump.sh #添加这一行
策略:
1)每日备份到/data/pg_dump
的文件保留15天
2)每小时备份到/data/dump/tmp
的文件保留1天
###########################
# posgre 备份相关 #
###########################
#每小时临时备份
30 * * * * /usr/bin/docker exec pgdump11 bash -c "./dump.sh /dump/tmp"
#每日备份
00 23 * * * /usr/bin/docker exec pgdump11 bash -c "./dump.sh /dump"
#每小时备份文件保留1天
00 01 * * * /bin/find /data/postgres/dump/tmp -name \*.tar.gz -mtime +1| xargs -I {} rm -rf {}
#保留15天备份
05 01 * * * /bin/find /data/postgres/dump -name \*.tar.gz -mtime +15| xargs -I {} rm -rf {}