第一部分:数据库备份与删除

步骤一:编写备份脚本

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

postgres备份pg_receivewal pg数据库备份_postgresql


通常错误信息为: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创建一个数据库:

postgres备份pg_receivewal pg数据库备份_数据库_02


postgres备份pg_receivewal pg数据库备份_ubuntu_03

使用备份文件对数据库进行恢复

postgres备份pg_receivewal pg数据库备份_postgresql_04

postgres备份pg_receivewal pg数据库备份_数据库_05


出现以下提示框则表示数据恢复成功

postgres备份pg_receivewal pg数据库备份_ubuntu_06