[原创]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 ...
随机推荐
- input输入框,回车激活按钮事件代码
<input type="text" name="输入框ID" id="输入框ID" onkeypress="if(even ...
- FreeBSD 路由详解
在同一个局域网上的计算机是直接连通的,但是不同的网络上的计算机并没有直接相连,只能通过一台特殊的专用计算机 -路由器来完成连通.路由器连接有多个网络界面,每一个网络界面连接到一个相应的网络上,具有一个 ...
- CF 335B - Palindrome 区间DP
335B - Palindrome 题目: 给出一个字符串(均有小写字母组成),如果有长度为100的回文子串,输出该子串.否则输出最长的回文子串. 分析: 虽然输入串的长度比较长,但是如果存在单个字母 ...
- ASP.Net 验证控件 RegularExpressionValidator
定义和用法 RegularExpressionValidator 控件用于验证输入值是否匹配指定的模式. 注释:除非浏览器不支持客户端验证或 EnableClientScript 属性被设置为 fal ...
- Javascript常见操作
图片预加载 var image = new Image();image.onload = onLoad;image.onerror = onLoad;image.src =src; image.com ...
- list笔记总结
1.list是一个复合的复制函数,可以将一个数组一次赋给多个变量.我们常用以下语句遍历一个数组. $arr = array('东','男','西','北'); while(list($k,$v)=ea ...
- Part 6 Group by in sql server
- CSS之Generator
这个工具可以,收藏一下.CSS Generator
- button等按钮onclientclick事件失效
如果确定JS没写错 第一种方法: 在JS方法最后return false; 调用方法前加上return 第二种方法: 在JS方法最后event.returnValue=false; 附加:event. ...
- UI1_UITableViewSearchController
// UI1_UITableViewSearchController // // Created by zhangxueming on 15/7/15. // Copyright (c) 2015年 ...