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