shell+crontab制作postgresql数据库定期备份脚本
业务背景
在开发期间,定期对数据库备份是非常有必要的
第一步:编写shell脚本 postgresql_backups.sh
#! /bin/sh
#获取一个时间戳
ymdhm=`date +%Y%m%d%H%M`
echo $timestamp $ymdhm
#创建文件夹
mkdir -p /home/pgdatabackups/$ymdhm
#路径
backupspath=/home/pgdatabackups/$ymdhm
#数据库备份,如果pg_dump找不到命令,则利用find找到命令所在位置
#使用find / -name pg_dump 找到pg_dump命令工具
pg_dump=/usr/pgsql/bin/pg_dump
#设置密码,可以不输入密码(与配置文件的有关)
export PGPASSWORD=123456
#剔除表 ods_new_log; 127.0.0.1 不行,则改成对应的ip
$pg_dump -h 127.0.0.1 -p 5432 -U postgres -T ods_new_log -F c -b -v -f $backupspath/tenant_1011014.backups tenant_1011014
$pg_dump -h 127.0.0.1 -p 5432 -U postgres -F c -b -v -f $backupspath/metadata.backups metadata
$pg_dump -h 127.0.0.1 -p 5432 -U postgres -F c -b -v -f $backupspath/platform.backups platform
#其他,定期情况文件
#定期清理文件; 按2分钟删除文件(包括文件夹)
#find /home/pgdatabackups/ -mmin +2 -type d -exec rm -rf {} \;
#按7天删除文件(包括文件夹)
find /home/pgdatabackups/ -mtime +7 -type d -exec rm -rf {} \;
第二步 加入crontab
crontab -e
# 每天23点备份,注意shell脚本位置
0 23 * * * /home/pgdatabackups/postgresql_backups.sh