本文要实现的目标
1、PostgreSQL定时全备
2、定时删除归档WAL文件
3、定时删除全备文件
4、删除n天之前的数据库日志文件

实验环境
操作系统:RHEL 6.3
数据库:PostgreSQL Plus Advanced Server 9.2.1.3

准备工作
在执行脚本时,为避免脚本中要求输入数据库所有者密码,先在root用户的家目录配置一个.pgpass文件
[root@s8 ~]# touch .pgpass
[root@s8 ~]# vim .pgpass
~/.pgpass:
127.0.0.1:5444:edb:enterprisedb:000000
pgpass文件的格式:hostname:port:database:username:password
需要注意该文件的权限:
[root@s8 ~]# chmod 0600 ~/.pgpass

一、创建归档目录和备份目录
[root@s8 ~]# mkdir /mnt/archivedir
[root@s8 ~]# chown enterprisedb.enterprisedb /mnt/archivedir
[root@s8 ~]# mkdir /mnt/edb_backup
[root@s8 ~]# chown enterprisedb.enterprisedb /mnt/edb_backup
其中:archivedir为归档目录,edb_backup为全备目录。

二、修改配置文件postgresql.conf
[root@s8 ~]# vim /opt/PostgresPlus/9.2AS/data/postgresql.conf
postgresql.conf:
wal_level = archive    
archive_mode = on
archive_command = 'cp -i %p /mnt/archivedir/%f < /dev/null'

[root@s8 ~]# /etc/init.d/ppas-9.2 reload
[root@s8 ~]# /etc/init.d/ppas-9.2 restart

三、执行一次backup_check.sh脚本
backup_check.sh的内容:

执行结束后,可以看到备份目录中已经有了data目录及需要全备的内容。

四、插入一些测试数据并记录插入时间
edb=# insert into mytest values(55); SELECT CURRENT_TIMESTAMP(0);
2013-07-16 20:50:56-04
edb=# insert into mytest values(58); SELECT CURRENT_TIMESTAMP(0);
2013-07-16 20:51:18-04
edb=# insert into mytest values(510); SELECT CURRENT_TIMESTAMP(0);
2013-07-16 20:51:44-04
edb=# insert into mytest values(530); SELECT CURRENT_TIMESTAMP(0);
2013-07-16 20:52:40-04

五、再执行一次backup.sh脚本之后检查备份目录

六、模拟数据丢失
[root@s8 ~]# /etc/init.d/ppas-9.2 stop
[root@s8 ~]# mv /opt/PostgresPlus/9.2AS/data /opt/PostgresPlus/9.2AS/data_bak

七、恢复
[root@s8 ~]# cp -rp /mnt/edb_backup/dbbak_2013-07-16_07-37-08/dbs/data /opt/PostgresPlus/9.2AS/
[root@s8 ~]# mkdir /opt/PostgresPlus/9.2AS/data/pg_xlog
[root@s8 ~]# cp /opt/PostgresPlus/9.2AS/share/recovery.conf.sample /opt/PostgresPlus/9.2AS/data/recovery.conf
[root@s8 ~]# vim /opt/PostgresPlus/9.2AS/data/recovery.conf
recovery.conf文件的内容:
restore_command = 'cp /mnt/archivedir/%f %p'
recovery_target_time = '2013-07-16 07:37:00'
如果不定义恢复到的时间点recovery_target_time的值,会恢复到最近的时间。

另外要注意看看enterprisedb用户是否是pg_xlog的所有者
[root@s8 ~]# chown enterprisedb.enterprisedb /opt/PostgresPlus/9.2AS/data/pg_xlog/
[root@s8 ~]# chown enterprisedb.enterprisedb /opt/PostgresPlus/9.2AS/data/recovery.conf

然后启动数据库服务,恢复成功。

八、配置和执行计划任务

在/etc/cron.daily/创建文件
[root@s8 edb_backup]# touch /etc/cron.daily/delaheadlog.cron
[root@s8 edb_backup]# vim /etc/cron.daily/delaheadlog.cron

在这里,也可以用crontab -e来编辑,crontab的单位:分时日月周

delaheadlog.cron的内容:

PATH_DATE=$(date +""%Y-%m-%d_%H-%M-%S"")

# 为防止已经存在备份进程,先执行一次pg_stop_backup()    //http://ode.cnblogs.com
/opt/PostgresPlus/9.2AS/bin/edb-psql -h 127.0.0.1 -p 5444 -U enterprisedb edb -c "select pg_stop_backup();" # 开始备份
/opt/PostgresPlus/9.2AS/bin/edb-psql -h 127.0.0.1 -p 5444 -U enterprisedb edb -c "select pg_start_backup('full_backup');" # 执行一次全备
/bin/mkdir -p /mnt/edb_backup/dbbak_$PATH_DATE
/usr/bin/rsync -a --delete --exclude=pg_xlog --exclude=postmaster.pid /opt/PostgresPlus/9.2AS/data /mnt/edb_backup/dbbak_$PATH_DATE/dbs # 结束备份
/opt/PostgresPlus/9.2AS/bin/edb-psql -h 127.0.0.1 -p 5444 -U enterprisedb edb -c "select pg_stop_backup();"
/opt/PostgresPlus/9.2AS/bin/edb-psql -h 127.0.0.1 -p 5444 -U enterprisedb edb -c "select pg_switch_xlog();" # 定期删除归档WAL文件
find /mnt/archivedir/ -mtime +7 -exec rm -rf '{}' \ # 定期删除全备份文件
find /mnt/edb_backup/ -mtime +7 -exec rm -rf '{}' \ # 删除n(当前定义7天)天之前的数据库日志文件
# delete /opt/PostgresPlus/9.2AS/data/pg_log/****.log which is gernerate n days ago.
find /opt/PostgresPlus/9.2AS/data/pg_log/*.log -mtime +7 -exec rm -rf '{}' \

附件中有脚本文件的,创建后改名即可。

[原创]PostgreSQL Plus Advanced Server配合crontab实现定时维护工作的更多相关文章

  1. [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制

    一.系统环境 操作系统:Windows Server 2003/2008 两个节点分别为master与slave. 主节点master:172.27.19.28 备机点slave:172.27.19. ...

  2. [原创]PostgreSQL Plus Advanced Server监控工具PEM(四)

    四.PEM管理工具 1.编辑配置 选择进行管理的目标服务器,点击菜单Tools->Server Configuration->postgresql.conf管理服务器配置,可以看到我们经常 ...

  3. [原创]PostgreSQL Plus Advanced Server监控工具PEM(三)

    三.使用PEM Client 在PEM Client中连接PEM Server 点击上图所示的按钮或点击菜单-> 第一次连接PEM Server,会有一次导入证书的操作,点击Yes按钮. 接下来 ...

  4. [原创]PostgreSQL Plus Advanced Server监控工具PEM(二)

    2.安装PEM Client 简单两条命令,开始PEM Client的安装. 我们在SUSE 11sp2上安装PEM Client 安装结束,运行PEM Client后可以看到如下的界面: 目前我们并 ...

  5. [原创]PostgreSQL Plus Advanced Server监控工具PEM(一)

    一.概述 PEM是为数据库管理员.系统架构师和性能分析师为管理.监控和优化 PostgreSQL 和 EnterpriseDB 数据库服务器设计的图形化管理工具.旨在解决大量数据库服务器跨地域.精细化 ...

  6. [原创]PostgreSQL Plus Advanced Server批量创建分区表写入亿级别数据实例

    当前情况:大表的数据量已接近2亿条我的解决思路:为它创建n*100个分区表,将各个分区表放在不同的tablespace上这样做的优点:1.首先是对这个级别的数据表的性能会有所提升2.数据管理更科学3. ...

  7. [原创]使用benchmarksql和pgbench对PostgreSQL Plus Advanced Server进行性能测试

    一.测试环境 benchmarksql version:4.0.8 rhel 6.3 vmware esxi 二.理解benchmarksql性能测试原理TPC-C 1.理解TPC-C TPC-C模拟 ...

  8. [原创]从Oracle和Microsoft Sql Server迁移到PostgreSQL Plus Advanced Server

    一.了解PPAS的迁移方式1.在线迁移和离线迁移使用Migration Studio或Migration Toolkit直接向PPAS数据库进行对象定义和数据表中数据的迁移称为在线迁移,生成要迁移对象 ...

  9. [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(三)

    五.准备HA环境1.准备yum源a.安装vsftp服务,将光盘镜像copy到本地ftp目录作为yum源.[root@s1 ~]# mount 可以看到cdrom已经挂载了,首先安装vsftp服务[ro ...

随机推荐

  1. input输入框,回车激活按钮事件代码

    <input type="text" name="输入框ID" id="输入框ID" onkeypress="if(even ...

  2. FreeBSD 路由详解

    在同一个局域网上的计算机是直接连通的,但是不同的网络上的计算机并没有直接相连,只能通过一台特殊的专用计算机 -路由器来完成连通.路由器连接有多个网络界面,每一个网络界面连接到一个相应的网络上,具有一个 ...

  3. CF 335B - Palindrome 区间DP

    335B - Palindrome 题目: 给出一个字符串(均有小写字母组成),如果有长度为100的回文子串,输出该子串.否则输出最长的回文子串. 分析: 虽然输入串的长度比较长,但是如果存在单个字母 ...

  4. ASP.Net 验证控件 RegularExpressionValidator

    定义和用法 RegularExpressionValidator 控件用于验证输入值是否匹配指定的模式. 注释:除非浏览器不支持客户端验证或 EnableClientScript 属性被设置为 fal ...

  5. Javascript常见操作

    图片预加载 var image = new Image();image.onload = onLoad;image.onerror = onLoad;image.src =src; image.com ...

  6. list笔记总结

    1.list是一个复合的复制函数,可以将一个数组一次赋给多个变量.我们常用以下语句遍历一个数组. $arr = array('东','男','西','北'); while(list($k,$v)=ea ...

  7. Part 6 Group by in sql server

  8. CSS之Generator

    这个工具可以,收藏一下.CSS Generator

  9. button等按钮onclientclick事件失效

    如果确定JS没写错 第一种方法: 在JS方法最后return false; 调用方法前加上return 第二种方法: 在JS方法最后event.returnValue=false; 附加:event. ...

  10. UI1_UITableViewSearchController

    // UI1_UITableViewSearchController // // Created by zhangxueming on 15/7/15. // Copyright (c) 2015年 ...