pg_rman是一款专门为postgresql设计的在线备份恢复的工具。其支持在线和基于时间点备份方式,还可以通过创建backup catalog来维护DB cluster备份信息。

看起来好像是模仿oracle的RMAN工具。

 pg_rman特点:

  • 使用简单.一个命令即可完成备份和恢复.
  • 支持在线全备,增量备份,归档备份.
  • 支持备份压缩.通过gzip工具实现页内压缩.
  • 自动备份维护.自动删除过期的WAL备份文件.
  • 支持备份验证.
  • 恢复期间无事务丢失.支持基于PITR的配置文件生成器.
1. 安装过程
   包:postgresql95-libs-9.5.2-1PGDG.rhel6.x86_64.rpm
--下载pg_rman,注意与其对应的数据库版本 下载地址:https://github.com/ossc-db/pg_rman/releases

包:pg_rman-1.3.2-1.pg95.rhel6.x86_64.rpm

  1. [root@sdserver40_210 software]# rpm -ivh postgresql95-libs--1PGDG.rhel6.x86_64.rpm
  2. warning: postgresql95-libs--1PGDG.rhel6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
  3. Preparing... ########################################### [%]
  4. :postgresql95-libs ########################################### [%]
  5. [root@sdserver40_210 software]# rpm -ivh pg_rman--.pg95.rhel6.x86_64.rpm
  6. Preparing... ########################################### [%]
  7. :pg_rman ########################################### [%]

2. 配置环境变量

  pg_rman 默认是安装在/usr目录下面;注意同时pg_rman需要一个备份目录
export PG_RMAN=/usr/pgsql-9.5
export PATH=$PATH:$HOME/bin:/opt/pgsql95/bin:$PG_RMAN/bin
export BACKUP_PATH=/data/pg_rman      
                                     

3.初始化备份目录

  1. [postgres@sdserver40_210 ~]$ pg_rman init -B /data/pg_rman
  2. INFO: ARCLOG_PATH is set to '/home/postgres/archive'
  3. INFO: SRVLOG_PATH is set to '/data/pgdata/pg_log'
4.备份
  1. [postgres@sdserver40_210 ~]$ pg_rman backup --backup-mode=full --progress
  2. INFO: copying database files
  3. Processed of files, skipped
  4. NOTICE: pg_stop_backup complete, all required WAL segments have been archived
  5. INFO: copying archived WAL files
  6. Processed of files, skipped
  7. INFO: backup complete
  8. HINT: Please execute 'pg_rman validate' to verify the files are correctly copied.

--pg_rman 的备份必须都是经过验证过的,否则不能进行恢复和增量备份

  1. Backups without validation cannot be used forrestoreand incremental backup--执行完备份要执行一次validate,因为备份后的状态是done,还不能进行恢复
  1. [postgres@sdserver40_210 ~]$ pg_rman show
  2.  
  3. ==========================================================
  4. StartTime Mode Duration Size TLI Status
  5. ==========================================================
  6. -- :: FULL 0m 343MB DONE
  7. [postgres@sdserver40_210 ~]$ pg_rman validate
  8. INFO: validate: "2016-05-31 16:36:45" backup and archive log files by CRC
  9. INFO: backup "2016-05-31 16:36:45" is valid
  10. [postgres@sdserver40_210 ~]$ pg_rman show
  11. ==========================================================
  12. StartTime Mode Duration Size TLI Status
  13. ==========================================================
  14. -- :: FULL 0m 343MB OK
5. 模拟恢复
  1. [postgres@sdserver40_210 ~]$ ll
  2. total
  3. drwxrwxr-x postgres postgres May : archive
  4. drwxrwxr-x postgres postgres May : backup
  5. drwx------ postgres postgres May : data
  6. drwxrwxr-x postgres postgres May : log
  7. -rw-rw-r-- postgres postgres May : out_file
  8. -rw-rw-r-- postgres postgres May : out.txt
  9. drwxrwxr-x postgres postgres May : scripts
  10. -rw-r--r-- postgres postgres May : test.sql
  11. [postgres@sdserver40_210 ~]$ rm -rf data
  12. [postgres@sdserver40_210 ~]$ ll
  13. total
  14. drwxrwxr-x postgres postgres May : archive
  15. drwxrwxr-x postgres postgres May : backup
  16. drwxrwxr-x postgres postgres May : log
  17. -rw-rw-r-- postgres postgres May : out_file
  18. -rw-rw-r-- postgres postgres May : out.txt
  19. drwxrwxr-x postgres postgres May : scripts
  20. -rw-r--r-- postgres postgres May : test.sql
  21. [postgres@sdserver40_210 ~]$ pg_stop
  22. waiting for server to shut down.... done
  23. server stopped
  24. [postgres@sdserver40_210 ~]$ pg_rman restore --recovery-target-time "2016-05-31 17:30:00"
  25. INFO: the recovery target timeline ID is not given
  26. INFO: use timeline ID of current database cluster
  27. INFO: calculating timeline branches to be used to recovery target point
  28. INFO: searching latest full backup which can be used as restore start point
  29. INFO: found the full backup can be used as base in recovery: "2016-05-31 16:36:45"
  30. INFO: copying online WAL files and server log files
  31. INFO: clearing restore destination
  32. INFO: validate: "2016-05-31 16:36:45" backup and archive log files by SIZE
  33. INFO: backup "2016-05-31 16:36:45" is valid
  34. INFO: restoring database files from the full mode backup "2016-05-31 16:36:45"
  35. INFO: searching incremental backup to be restored
  36. INFO: searching backup which contained archived WAL files to be restored
  37. INFO: backup "2016-05-31 16:36:45" is valid
  38. INFO: restoring WAL files from backup "2016-05-31 16:36:45"
  39. INFO: restoring online WAL files and server log files
  40. INFO: generating recovery.conf
  41. INFO: restore complete
  42. HINT: Recovery will start automatically when the PostgreSQL server is started.
  43. [postgres@sdserver40_210 ~]$ pg_start
  44. server starting
  45. [postgres@sdserver40_210 ~]$ psql mydb lottu
  46. psql ()
  47. Type "help" for help.
  48.  
  49. mydb=> \d
  50. List of relations
  51. Schema | Name | Type | Owner
  52. --------+------+-------+-------
  53. public | test | table | lottu
  54. ( row)
  55.  
  56. mydb=> select * from test;
  57. id | name
  58. ------+--------
  59. | lottu
  60. | rax
  61. | xuan
  62. | li0924
  63. ( rows)
  64.  
  65. mydb=> \q
  66. [postgres@sdserver40_210 ~]$ ll
  67. total
  68. drwxrwxr-x postgres postgres May : archive
  69. drwxrwxr-x postgres postgres May : backup
  70. drwx------ postgres postgres May : data
  71. drwxrwxr-x postgres postgres May : log
  72. -rw-rw-r-- postgres postgres May : out_file
  73. -rw-rw-r-- postgres postgres May : out.txt
  74. drwxrwxr-x postgres postgres May : scripts
  75. -rw-r--r-- postgres postgres May : test.sql

【参考文献】

 

POSTGRESQL9.5之pg_rman工具的更多相关文章

  1. PostgreSQL配置优化

    硬件和系统配置 操作系统 Ubuntu13.04 系统位数 64 CPU Intel(R) Core(TM)2 Duo CPU 内存 4G 硬盘 Seagate ST2000DM001-1CH164 ...

  2. windows下源码安装调试postgresql

    环境:windows 10 postgresql版本:postgresql-9.6.5 使用工具:vs2017社区版 辅助工具:perl.diff.flex.bison 相关工具下载地址: perl下 ...

  3. PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的

    PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报  分类: MYSQL数据库(5)  PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...

  4. 调试postgresql9.5.2最新源码

    最近在考量数据库的选型,考虑后期把数据切换到postgresql ,postgresql源码用c实现,代码很精炼完美,值得学习下 首先去pgsql官网下载最新的源码 ,然后还需要perl,bison ...

  5. 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)

            目录:            第1版:http://blog.csdn.net/vipbooks/article/details/51912143            第2版:htt ...

  6. 使用pg_upgrade工具为PostgreSQL进行版本升级

    公司的测试环境和生产环境都是9.2.4版本,而开发环境是9.0.18版本. PS: 不知道公司里的其它同事,是如何做数据库迁移的,利用第三方可视化工具备份数据库,然后恢复到其它高版本的环境?反正我没成 ...

  7. linux下Postgresql-9.2安装及数据库的创建过程

    公司写部署手册需要,现总结一些linux下postgresql的安装及数据库创建的详细步骤吧! 1.1.1  软件安装   1.设置用户组和用户级别 Postgresql不能以root身份运行,要以其 ...

  8. PostgreSQL 使用PG_Rman进行物理备份

    背景 在Oracle下我们可以使用rman进行物理备份,支持数据库的全量.增量.归档的备份模式而PostgreSQL作为开源数据库,近些时间来也一直向商业版数据库看齐,也推出了开源功工具pg_rman ...

  9. win7 编译postgresql9.6.8

    一.环境 windows7 postgresql9.6.8 vs2010 perl5.24.3 二.编译安装 1.安装perl,安装到C:\Perl64路径下,安装完成后设置环境变量PATH和Perl ...

随机推荐

  1. eclipse 插件未安装成功定位

    以gef未安装成功为例 在eclipse根目录下: eclipse –clean –console –noExit 右击窗口标题栏,属性,勾中快速编辑模式,这样可以在命令行窗口点击右键将剪贴板上的内容 ...

  2. Oracle RAC 11.2.0.4 – RHRL 6.4: DiskGroup resource are not running on nodes. Database instance may not come up on these nodes

    使用DBCA创建新库的时候报错: 查看资源状态: $ crsctl stat res -t ------------------------------------------------------ ...

  3. java io读书笔记(3)数值类型的数据

    input stream读取字节:out stream写入字节.Readers读取字符而Writers写入字符.因此,如果我们想理解input和output,我们首先就要明白 java如何处理字节,整 ...

  4. 。。。无语的Eclipse+Tomact。。。

    晕哦,今天又被Eclipse给骗了,今天部署了一个SSH的环境,搞了半天,JAR包是通过BuildPath导入进去的,怎么搞都报错,说是找不到Spring-Web的一个Jar包,差点没有把我给弄死.. ...

  5. 插入多行数据和类似 select union 方法

    Cite:http://blog.csdn.net/downmoon/article/details/5936706 [ruby] view plaincopyprint? Create table ...

  6. Android中实现app版本更新

    1,获取本地程序apk版本,并开启服务(下面这段代码一般在主Activity中的onCreate()方法中执行的,并开启后台服务下载新版本的apk) //获取apk包文件的管理者对象 PackageM ...

  7. Kafka集群模式部署

    环境:kafka 0.8.1.1 基本概念 Kafka维护按类区分的消息,称为主题(topic) 生产者(producer)向kafka的主题发布消息 消费者(consumer)向主题注册,并且接收发 ...

  8. sql 数据库查看主外键关联

    SELECT 主键列ID=b.rkey ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) ,外键表ID=b. ...

  9. ORACLE CUP相关

    遭遇cpu过多占用,表现为%usr很高,top 或者topas中cpu占用最多的进程为oracle server process. 则根据pid可以找出该pid对应的sql_text select s ...

  10. 夺命雷公狗---node.js---3commonJs 与 nodeJs的简介

    JavaScript是一个强大面向对象语言,它有很多快速高效的解释器.官方JavaScript标准定义的API是为了构建基于浏览器的应用程序.然而,并没有定于一个用于更广泛的应用程序的标准库. Com ...