第一部分:数据库备份与删除
步骤一:编写备份脚本
mkdir /home/postgresql_backup
cd /home/postgresql_backup
vim pgsql-bak.sh
#!/bin/bash
echo "开始执行 PostgreSql 数据库的备份!"
nowtime=$(date "+%Y%m%d%H%M%S")
export PGPASSWORD="数据库密码"
echo "时间:" $nowtime
set timeout 500
#输入IP 端口、用户名。 备份文件输出的位置及文件名: /home/postgresql_backup/backup"$nowtime"。dump的数据库为 postgres
/usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -F c -b -v -f "/home/postgresql_backup/backup"$nowtime"" postgres
echo "数据库备份结束!"
exit;
步骤二:编写删除脚本
vim delete-bak.sh
echo "删除 7 天前的 数据库备份文件!"
find /home/postgresql_backup/ -name "backup*" -mtime +7 -exec rm -rf {} \;
set timeout 1000
echo " 7 天前的数据库备份文件删除完毕!"
步骤三:授权
需要对/home/postgresql_backup文件夹授予用户最高权限,否则以上两个脚本执行会报错Permission denied。
sudo chmod -R 777 /home/postgresql_backup
到这里可以通过以下命令测试脚本功能是否实现
sudo ./pgsql-bak.sh
sudo ./delete-bak.sh
步骤四:配置crontab脚本管理
crontab -e
第一次进入需要选择编辑器,根据个人习惯选择,这里选2
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
写入下列内容:
#每天三点钟执行备份,三点半删除7天前备份文件
0 3 * * * /home/postgresql_backup/pgsql-bak.sh
30 3 * * * /home/postgresql_backup/delete-bak.sh
可自行修改时间保存,看crontab是否按规定时间启动脚本。
处理错误
如果脚本没有正常启动的话,执行下列命令
sudo service cron status
通常错误信息为:No MTA installed, discarding output
该信息提示没有安装邮件服务MTA(因特网邮件传送代理;Mail Transfer Agent),因为cron的错误信息是通过邮件发送的。
在Linux操作系统中有很多种邮件传输代理,每个MTA都有自己的特点。我们安装postfix作为邮件服务。
安装postfix服务:
sudo DEBIAN_PRIORITY=low apt install postfix
此时会弹出安装界面,通过tab键选中“确定”,然后选择“Internet Site”,System mail name填写自己的登录的用户名。点击,postfix继续安装,完毕后自动启动。
postfix命令:
#命令可以修改postfix配置。
sudo dpkg-reconfigure postfix
#重启服务
sudo systemctl restart postfix
这列只需要执行重启服务就可以了,不需要进行其它配置。
查看邮件信息:
cat /var/mail/登录的用户名
第二部分:手动恢复
恢复的方式有命令式和借助工具pgAdmin。
方式一:命令式
#IP、端口、用户名、数据库名、备份文件路径
pg_restore -h 127.0.0.1 -p 5432 -U postgres -d postgres -v /home/postgresql_backup/backupxxxxxxxx
方式二:使用pgAdmin
这里使用window系统远程操作Ubuntu20.04中的数据库。
先将数据库备份文件拷贝到本地,需要借助工具:pscp
pscp -r -pw 密码 用户名@IP:/home/postgresql_backup/backupxxxxxxxx e:/svn
使用gpAdmin创建一个数据库:
使用备份文件对数据库进行恢复
出现以下提示框则表示数据恢复成功