Linux下PG数据库计划任务定期备份恢复的方法

注意事项

  • PG数据库需要注意的一点是需要安装OSSP-UUID的组件才能使用.
  • 本次使用最除了冷备之外 最简单的 pg_dump和pg_restore的操作 的方式来进行处理
  • 务必定期演练保证数据备份恢复可用
  • 建议咨询数据库专家提供服务, 此命令在不进行严格测试前不建议用于生产.

备份过程

pg_dump -h 127.0.0.1  -U postgres -p 5432  -F c -f  /gscloud2003pg.dmp   gscloud2003
  • 注意 备份命令比较简单. -h 指定服务器 -U 知道备份用的用户 -p 指定端口 -f 指定备份文件 最后面说明 要备份的数据库.
  • 备份完成后就可以在根目录下看到备份文件.
  • 注意PG的备份时没有任何提示. 如果数据库比较大可能会耗时较久.
  • 注意备份出来的文件,如果是同名恢复非常简单不需要处理, 如果是异名恢复, 需要修改数据库内部的属主信息.
  • 注意如果root用户没有执行pg_dump的指令的话, 可以到pg的安装目录下执行相关操作.

恢复操作

  • 创建相关用户, 尽量同名恢复, 注意不直接覆盖生产环境, 避免数据丢失
切换到 pg的系统用户
su - postgres
登录 数据库
psql
创建表空间和用户等信息
创建用户
create role "gscloud2003" superuser login;
创建数据库
create database "gscloud2003" ;
设置密码
alter role "gscloud2003" with password 'Test20131127';
#注意使用双引号 比较好 能够 包含大小写的数据库名字 . 

执行恢复操作.

pg_restore -U postgres -d gscloud2003 /gscloud2003pg.dmp

创建备份脚本

  • 将备份数据库的命令设置为一个shell 脚本
  • 注意我这里是使用的rpm 安装的pg数据 pg_dump等的命令切实存在于环境里面
  • 增加一个文件: /deploy/backuppg
  • 输入内容为: 注意 需要替换你自己的password. 会自动按照你备份的年月日时分 来创建备份文件.
export PGPASSWORD=YourDBPassword
export now=`date +"%Y%m%d%H%M"`
pg_dump -h 127.0.0.1  -U GSCLOUD2103PG -p 5432  -F c -f  /pgbackup/gscloud2103pg_$now.dmp   GSCLOUD2103PG

创建计划任务

  • 输入 crontab -e 进入计划任务设置界面.
  • 注意需要保证crond 服务保持开启状态.
  • 注意需要优先保证自己的脚本是准确可执行的.
1 0 * * * /deploy/backuppg 
  • 注意 crontab -e 打开的界面里面
  • 分别对应为: 分 秒 日 月 周 执行命令
  • 比如本次的命令就是凌晨 0点1分进行数据库备份操作
    image

注意事项

  • 必须定义备份恢复演练.数据安全大于天
  • 任何脚本和任何操作都是靠不住的, 必须人工验证备份可用, 可以恢复, 数据不会丢失.
原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/15539129.html