[原创]PostgreSQL Plus Advanced Server配合crontab实现定时维护工作
本文要实现的目标
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实现定时维护工作的更多相关文章
- [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制
一.系统环境 操作系统:Windows Server 2003/2008 两个节点分别为master与slave. 主节点master:172.27.19.28 备机点slave:172.27.19. ...
- [原创]PostgreSQL Plus Advanced Server监控工具PEM(四)
四.PEM管理工具 1.编辑配置 选择进行管理的目标服务器,点击菜单Tools->Server Configuration->postgresql.conf管理服务器配置,可以看到我们经常 ...
- [原创]PostgreSQL Plus Advanced Server监控工具PEM(三)
三.使用PEM Client 在PEM Client中连接PEM Server 点击上图所示的按钮或点击菜单-> 第一次连接PEM Server,会有一次导入证书的操作,点击Yes按钮. 接下来 ...
- [原创]PostgreSQL Plus Advanced Server监控工具PEM(二)
2.安装PEM Client 简单两条命令,开始PEM Client的安装. 我们在SUSE 11sp2上安装PEM Client 安装结束,运行PEM Client后可以看到如下的界面: 目前我们并 ...
- [原创]PostgreSQL Plus Advanced Server监控工具PEM(一)
一.概述 PEM是为数据库管理员.系统架构师和性能分析师为管理.监控和优化 PostgreSQL 和 EnterpriseDB 数据库服务器设计的图形化管理工具.旨在解决大量数据库服务器跨地域.精细化 ...
- [原创]PostgreSQL Plus Advanced Server批量创建分区表写入亿级别数据实例
当前情况:大表的数据量已接近2亿条我的解决思路:为它创建n*100个分区表,将各个分区表放在不同的tablespace上这样做的优点:1.首先是对这个级别的数据表的性能会有所提升2.数据管理更科学3. ...
- [原创]使用benchmarksql和pgbench对PostgreSQL Plus Advanced Server进行性能测试
一.测试环境 benchmarksql version:4.0.8 rhel 6.3 vmware esxi 二.理解benchmarksql性能测试原理TPC-C 1.理解TPC-C TPC-C模拟 ...
- [原创]从Oracle和Microsoft Sql Server迁移到PostgreSQL Plus Advanced Server
一.了解PPAS的迁移方式1.在线迁移和离线迁移使用Migration Studio或Migration Toolkit直接向PPAS数据库进行对象定义和数据表中数据的迁移称为在线迁移,生成要迁移对象 ...
- [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(三)
五.准备HA环境1.准备yum源a.安装vsftp服务,将光盘镜像copy到本地ftp目录作为yum源.[root@s1 ~]# mount 可以看到cdrom已经挂载了,首先安装vsftp服务[ro ...
随机推荐
- ie下使用firebug
https://getfirebug.com/firebuglite/ 是介绍firebug在别的浏览器如何使用 或者在html中引入firebug-lite.js,然后安F12 <script ...
- hdu-5686 Problem B(斐波那契数列)
题目链接: Problem B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 转: ImageMagick 命令行的图片处理工具(客户端与服务器均可用)
http://www.imagemagick.com.cn/ 关于ImageMagick ImageMagick (TM) 是一个免费的创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片 ...
- CSS3 照片墙
HTML <body> <h2>照片墙制作</h2> <div class="container"> <img class=& ...
- 【转】c语言入门教程 / c语言入门经典书籍
用C语言开始编写代码 初级:C语言入门必备 (以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言 ...
- Exchange 2010先决条件
为了方便大家一步到位的进行学习,已将各种角色安装所需的先决条件给与总结了,但注意系统需求是2008 R2 1.对于执行客户端访问.集线器传输及邮箱角色典型安装的服务器 ( ...
- 《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见
智捷iOS课堂-关东升老师最新作品:<iOS开发指南-从0基础到AppStore上线>正式出版了 iOS架构设计.iOS性能优化.iOS测试驱动.iOS调试.iOS团队协作版本控制.... ...
- HTML+CSS学习笔记(8)- CSS选择器
标签:HTML+CSS 什么是选择器? 每一条css样式声明(定义)由两部分组成,形式如下: 选择器{ 样式; } 在{}之前的部分就是"选择器","选择器"指 ...
- JAVA:IO流——File类
1.掌握File 类的作用 2.可以使用File 类中的方法对文件进行操作 所有的 io 操作都保存在 java.io 包中. 构造方法:public File (String pathname) 直 ...
- 通过Javascript数组设计一个省市联动菜单
通过Javascript数组设计一个省市联动菜单 使用Option内置类来完成下拉选项的创建 2.使用定时器实现一个时钟程序 3.使用PHP+JSON完成语音验证码 网址:http://yuyin.b ...