Docker部署了Postgres数据库,要定时备份与恢复
定时备份
依赖系统定时任务 crontab -e,凌晨2点开始执行备份脚本:
* 2 * * * sh /root/postgis/pg_backup.sh
备份脚本【pg_backup.sh】内容
#!/bin/bash
cur_time=$(date +%Y%m%d)
echo "开始备份..."
#备份成压缩格式
docker exec dm_postgis pg_dump -h localhost -p 5432 -U "postgres" --format=c -f "/var/lib/postgresql/data/data_admin_$cur_time.tar.gz" --compress=6 --no-password --verbose --role="postgres" --encoding="UTF8" --dbname="data_admin";
#把备份文件移动到备份目录
mv /root/postgis/data/data_admin_$cur_time.tar.gz /root/postgis/backup/
echo "备份完成..."
手动恢复
# 1.把备份出来的文件复制到pg容器/var/lib/postgresql/data/ 映射的宿主机目录
cp /root/postgis/backup/data_admin_20211231.tar.gz /root/postgis/data/
# 2.执行恢复命令
docker exec dm_postgis pg_restore -h localhost -p 5432 -U postgres -d data_admin_2 --no-password --verbose --format=c "/var/lib/postgresql/data/data_admin_20211231.tar.gz"
|