容器化postgres备份策略

文章目录

  • 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 {}

容器化postgres备份策略_第1张图片

你可能感兴趣的:(#,常用服务-postgre,容器,docker,docker-compose,postgres,postgresql,备份策略,数据库备份)