参考文章:
http://blog.csdn.net/w20101310/article/details/78874986
http://blog.csdn.net/fanzhang1990/article/details/34886819
这边使用的是PG数据库,环境是Ubuntu。
步骤1:在用户根目录下生成 .pgpass的文件
如在 /home/hpd/.pgpass
localhost:5432:dbname:username:password
注意:这一行的最后一定要回车。不然密码还是错误的。
步骤2:修改.pgpass的文件权限
chmod 0600 .pgpass
测试,然后再直接输入,就不再需要密码
psql -h localhost dbname username
步骤2:编写备份数据库的命令
会生成一个如2018-3-08.bak的文件
DATE=`date "+%Y-%m-%d"`
pg_dump -h localhost -U username dbname > /home/hpd/db/$(DATE).bak
步骤3:编写用于删除过期文件的命令
会把一周之前的数据库备份全部删除
find /home/hpd/ -mtime +7 -name "*.bak" -exec rm -rf {} \;
把全部步骤的代码集成在一个db_backup_and_clear.sh文件中
#!/bin/bash
. /etc/profile
. ~/.bash_profile
DATE=`date "+%Y-%m-%d"`
pg_dump -h localhost -U username dbname> /home/hpd/db/$(DATE).bak
find /home/hpd/db_backup -mtime +7 -name "*.bak" -exec rm -rf {} \;
步骤4:赋予权限
#chmod 777 db_backup_and_clear.sh
步骤5:加入crontab的定时任务中
表示每天的2点开始执行该脚本
图片.png
恢复数据库
要先有这个数据库,可以没有表
psql -h localhost -U username -d dbname < /home/hpd/db_backup/2018-03-08.bak