PG 备份策略和 WAL 日志清理策略
一、Postgresql 备份策略
- 备份时间:每天 05:10(根据备份量级可灵活调整)
- 备份模式:全量备份
- 备份保存天数:7 天
- 备份地址:/home/postgres/postgresql_backup/backup
二、策略部署
2.1 部署树形图
-
$ tree /home/postgres/postgresql_backup
-
/home/postgres/postgresql_backup
-
├── backup
-
│ └── 2022_09_30_15_10_01_shr.dump
-
├── bin
-
│ ├── pg_archivecleanup.sh # 清理 wal 脚本
-
│ └── postgresql_backup.sh # 备份脚本
-
└── log
-
├── archivecleanup.log
-
├── pg_archivecleanup.log
-
├── pg_dumpall.log
-
└── postgresql_backup.log
2.2 备份脚本
-
-
-
# 备份日期
-
backup_date=`date %F`
-
backup_time=`date %H-%M-%S`
-
backup_week_day=`date %u`
-
-
echo "# ${backup_date} ${backup_time},week ${backup_week_day}" >> /home/postgres/postgresql_backup/log/pg_dumpall.log
-
# 进入备份文件保存路径
-
cd /home/postgres/postgresql_backup/backup
-
# 只保留时间早的7个,其余删除
-
ls -lt|grep .dump|awk '{if(NR>7){print $9}}'|xargs rm -rf
-
# 备份数据库名
-
dbname=$(date %Y_%m_%d_%H_%M_%S_shr.dump)
-
echo "只保留时间早的 7 天备份,其余删除,当天备份数据库名: ${dbname}" >> /home/postgres/postgresql_backup/log/pg_dumpall.log
-
# 开始备份
-
/home/postgres/postgresql/bin/pg_dumpall --host=127.0.0.1 --port=3306 --username=postgres -c -f /home/postgres/postgresql_backup/backup/${dbname}
-
backup_0k=$?
-
if [ 0 -eq "${backup_0k}" ]; then
-
echo "${backup_date} ${backup_time} pg_dumpall is OK!" >> /home/postgres/postgresql_backup/log/pg_dumpall.log
-
else
-
echo "${backup_date} ${backup_time} pg_dumpall is NO!" >> /home/postgres/postgresql_backup/log/pg_dumpall.log
-
fi
-
# 恢复方式很简单,执行恢复命令即可:
-
# /home/postgres/postgresql/bin/psql --host=127.0.0.1 --port=3306 --username=postgres -f /home/postgres/postgresql_backup/backup/${dbname}
-
# 单表备份举例:/home/postgres/postgresql/bin/pg_dump --host=127.0.0.1 --port=3306 --username=postgres --dbname=hr0908 --table=ct_cp_cmpcalcachetable -c -f /home/postgres/showufei/ct_cp_cmpcalcachetable.sql
-
# 单表恢复举例:/home/postgres/postgresql/bin/psql --host=127.0.0.1 --port=3306 --username=postgres --dbname=hr0908 -f /home/postgres/showufei/ct_cp_cmpcalcachetable.sql
2.3 清理 wal 脚本
-
-
-
# 日期
-
backup_date=`date %F`
-
backup_time=`date %H-%M-%S`
-
backup_week_day=`date %u`
-
-
pgdata='/home/postgres/data/postgres_3306/'
-
ARCHIVELOCATION='/home/postgres/data/postgres_3306/'
-
OLDESTKEPTWALFILE=`/home/postgres/postgresql/bin/pg_controldata --pgdata=${pgdata} | grep "REDO WAL file" | awk -F ': ' '{print $2}'`
-
echo "# ${backup_date} ${backup_time},周 ${backup_week_day}: 保留 ${OLDESTKEPTWALFILE} 之后的日志" >> /home/postgres/postgresql_backup/log/archivecleanup.log
-
-
/home/postgres/postgresql/bin/pg_archivecleanup ${ARCHIVELOCATION} ${OLDESTKEPTWALFILE}
-
cleanup_0k=$?
-
if [ 0 -eq "${cleanup_0k}" ]; then
-
echo "${backup_date} ${backup_time}: 手动清理 wal 成功!" >> /home/postgres/postgresql_backup/log/archivecleanup.log
-
else
-
echo "${backup_date} ${backup_time}: 手动清理 wal 失败!" >> /home/postgres/postgresql_backup/log/archivecleanup.log
-
fi
三、计划任务
-
# postgres_3306 备份定时任务
-
10 5 * * * /bin/bash /home/postgres/postgresql_backup/bin/postgresql_backup.sh > /home/postgres/postgresql_backup/log/postgresql_backup.log 2>&1
-
# 手动清理 wal
-
55 4 * * * /bin/bash /home/postgres/postgresql_backup/bin/pg_archivecleanup.sh > /home/postgres/postgresql_backup/log/pg_archivecleanup.log 2>&1
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgjfjgf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13