定时任务
问题提出:
生产环境怎么备份,开发测试环境怎么备份,使用全备,归档备,什么时候备,保留多
长时间?
个人看法:
生产环境每天全备一次,归档打开保存。
开发测试,可以
3~5
天一次全备,归档打开保存。
具体根据生产环境,开发测试环境以及应用沟通的结果去制定相应脚本和策略。
远程备份脚本
[postgres@node2 ~]$ cat pg_basebackup.sh
#! /bin/sh
DEST_NODE_HOST=node1
PRIMARY_NODE_HOST=$(hostname)
PRIMARY_NODE_PORT=5432
REPLUSER=postgres
DEST_DIR=/data/backup/$(date +"%d-%m-%Y")
echo "创建每日备份目录并赋予权限"
ssh -tt ${DEST_NODE_HOST}
"rm -rf ${DEST_DIR} && mkdir -p ${DEST_DIR} && chown
postgres:postgres ${DEST_DIR}"
echo "开始远程 pg_basebackup 备份"
ssh -tt ${DEST_NODE_HOST} "${PGHOME}/bin/pg_basebackup -h ${PRIMARY_NODE_HOST}
-p ${PRIMARY_NODE_PORT} -U ${REPLUSER} -D ${DEST_DIR} -Fp -Xs -cfast -P -v"
echo "$(date +"%d-%m-%Y")的备份已完成"
查看定时任务,生产环境每天凌晨备份。
[root@node2 ~]# crontab -l
0 0 * * * su - postgres -c 'sh /home/postgres/pg_basebackup.sh node1' >>/tmp/crontab.log
每天凌晨 2 点删除 5 天之前的归档和基础备份文件。
[postgres@node1 ~]$ crontab -l
0 2 * * * sudo find /data/archive/wal/* -mtime +5 -name "*" -exec rm -Rf {} \;
0 2 * * * sudo find /data/backup/* -mtime +5 -name "*" -exec rm -Rf {} \;
查看定时任务完成情况
[txadmin@node2 txdb4.0]$ cat /tmp/crontab.log
创建每日备份目录并赋予权限
远程
pg_basebackup
备份
pg_basebackup:
开始基础备份,等待检查点完成
pg_basebackup:
已完成检查点
pg_basebackup:
预写日志起始于时间点
: 0/37000028,
基于时间轴
55
pg_basebackup:
启动后台
WAL
接收进程
pg_basebackup:
已创建临时复制槽
"pg_basebackup_85801"
34074/34074 kB (100%), 1/1
表空间
pg_basebackup:
预写日志结束点
: 0/37000100
pg_basebackup:
等待后台进程结束流操作
...
pg_basebackup:
同步数据到磁盘
...
pg_basebackup:
基础备份已完成
27-12-2021
的备份已完成