文章目录
- 1. 策略和背景
- 1.1 背景
- 1.2 备份策略
- 2. docker-compose的修改
- 2.1 挂载备份目录
- 2.2 备份脚本
- 3.3 重启容器
- 3. 定时任务
1. 策略和背景
1.1 背景
- 使用docker-compose管理的postgres数据库需要备份
- 工作目录在
/data/postgres
下
1.2 备份策略
- 要备份的库
shu_han 库
- 每日备份
每天23:00备份一次
- 每小时临时备份
每个小时临时备份一次,每天凌晨删除一天之前的备份
2. docker-compose的修改
2.1 挂载备份目录
- 进入工作目录(背景中有说明,是
/data/postgres
,后文不赘述) - 创建
dump
目录存储每天备份文件 - 在
dump
目录下创建tmp
目录,备份每小时临时备份文件 - 挂载备份目录
docker-compose.yml文件中添加如下内容
volumes:
- ./dump:/dump #添加这一行
2.2 备份脚本
- 创建备份脚本
在工作目录中添加备份脚本文件
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 #添加这一行
3.3 重启容器
3. 定时任务
策略:
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 {}