PostgreSQL 增量备份详解以及相关示例

PostgreSQL 没有类似MySQL 的二进制日志, 但是有和MySQL 类似的REDO LOG,并且有MySQL 没有的REDO 归档功能。当然REDO 的归档已经MariaDB 和Percona-MySQL 已经实现。

那我们就利用PGSQL的REDO 归档,也叫WAL来实现增量备份。

假设我们已经做了一个物理的全备,并且相应的参数都已经设置完毕,比如以下:

  1. /home/full_backup 保存全备的目录。

  2.  

    /home/increment_log 保存增备的目录。

  3.  

  4.  

  5.  

    进入postgresql.conf

  6.  

    开启WAL.

  7.  

    wal_level = archive

  8.  

    wal_keep_segments=1

  9.  

    开启WAL 的归档模式.

  10.  

    archive_mode = on

  11.  

    archive_command = ‘test ! -f /home/increment_log/%f && cp %p /home/increment_log/%f‘ (归档,也就是增量)

那么关于WAL归档日志要注意的一点是,如果CRASH 掉了,那么没有归档的XLOG也可能没有提交到数据文件,所以有可能这部分数据会丢失掉。所以在之后恢复的时候我们要把这部分XLOG拷贝到全备的对应目录。

恢复方法:

  1. 1. 确保没有任何业务对PG服务进行访问。(有可能这个时候PG已经CRASH掉了。)

  2.  

    2. 先停掉POSTGRESQL 服务。

  3.  

    3. cd /home/pgsql;

  4.  

    4. mv data data_old

  5.  

    6. cp -rfp /home/full_backup/* /home/pgsql (拷贝全备)

  6.  

    7. cp -rfp data_old/pg_xlog/000* data/pg_xlog/ (这里是拷贝自从最后一个增量和系统CRASH之间的XLOG到对应的目录。)

  7.  

    8. cd data

  8.  

    9. vi recovery.conf (添加recovery.conf文件,让PG认为这次是在恢复。)

  9.  

    restore_command=‘test ! -f /home/increment_log/%f && cp /home/increment_log/%f %p‘

  10.  

    recovery_target_timeline = ‘latest‘

  11.  

    10. chown -R postgres.postgres recovery.conf

  12.  

    11. 启动postgresql 服务即可。

如果正确恢复了,那么recovery.conf 会自动更名为recovery.done.

以我的机器为例,我的版本是9.3,PG_XLOG中看到的BACKUP 信息:

  1. [[email protected] pg_xlog]# cat 000000010000000000000003.00000028.backup

  2.  

    START WAL LOCATION: 0/3000028 (file 000000010000000000000003)

  3.  

    STOP WAL LOCATION: 0/30000B8 (file 000000010000000000000003)

  4.  

    CHECKPOINT LOCATION: 0/3000028

  5.  

    BACKUP METHOD: pg_start_backup

  6.  

    BACKUP FROM: master

  7.  

    START TIME: 2014-01-07 03:35:02 EST

  8.  

    LABEL: ytt

  9.  

    STOP TIME: 2014-01-07 03:36:27 EST

日志中会看到恢复如下恢复信息:

    1. < 2014-01-07 05:02:47.361 EST >LOG: 00000: starting archive recovery

    2.  

      < 2014-01-07 05:02:47.361 EST >LOCATION: StartupXLOG, xlog.c:4983

    3.  

      < 2014-01-07 05:02:47.369 EST >LOG: 00000: redo starts at 0/3000028

    4.  

      < 2014-01-07 05:02:47.369 EST >LOCATION: StartupXLOG, xlog.c:5531

    5.  

      < 2014-01-07 05:02:47.371 EST >LOG: 00000: consistent recovery state reached at 0/303FC88

原文地址:https://www.cnblogs.com/telwanggs/p/11547274.html

时间: 2024-07-31 01:12:34

PostgreSQL 增量备份详解以及相关示例的相关文章

svn全量和增量备份详解

1.svn的安装: yum安装: yum install -y subversion mkdir /data/svn svnadmin create project-1 svnadmin create project-2 用统一配置方法: cp authz passwd  /data/svn cp svnserve.conf /data/svn vim svnserve.conf 修改: anon-access = read  #匿名用户可读 auth-access = write   #授权用

CentOS 6.5 MySQL/MariaDB数据备份与恢复备份详解

MySQL/MariaDB数据备份与恢复备份 数据对我们来说再重要不过了,那我们如何做到对数据尽可能的安全呢,当我们的数据丢失了那又该怎么做呢,所以说数据备份对我们的数据安全性来说太重要了. 数据对我们来说再熟悉不过了,也最平常不过了,我们每天都在接触各色各样的数据,数据记录了我们平常相关的业务信息,所以数据对于我们来说是很重要的,这么重要的数据如果我们的数据丢失了那我们是不是相关的业务都没法进行了呢,这应该是个很麻烦的问题,那我们怎么保护我们的数据的安全呢,这就要用到我们的数据备份了. 如何执

RMAN 备份详解

--====================== -- RMAN 备份详解 --====================== 一.数据库备份与RMAN备份的概念 1.数据库完全备份:按归档模式分为归档和非归档 归档模式 打开状态,属于非一致性备份 关闭状态,可以分为一致性和非一致性 非归档模式 打开状态,非一致性备份无效 关闭状态,一致性备份,非一致性备份不被推荐 2.RMAN备份 RMAN使用服务器会话来完成备份操作,从RMAN客户端连接到服务器将产生一个服务器会话 RMAN备份内容包括:整个

Oracle数据库备份详解

Oracle数据库备份详解 Oracle官方提供多种备份方式,日常使用最多的有exp/imp常规方式,及数据泵expdp/impdp方式:下面对这两种方式进行详解. 常规方式 exp/imp imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨论 一  EXP导出命令 exp 是数据的导出命令,可以用于表,用户,整个数据库,exp -help查看帮助 Export: Release 11.

支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 摘要:Twitter出道之初只是个奋斗在RoR上的小站点,而如今已拥有1.5亿的活跃用户,系统日传输tweet更多达4亿条,并已完成了以服务为核心的系统架构蜕变. Twitter如今在世界范围内已拥有1.5亿的活跃用户,为了给用户生成timeline(时间轴)需支撑30万QPS,其firehose每秒同样生成22MB数据.整个系统每天传输tweet 4亿条,并且只需要5分钟就可以让一条twe

grep 命令详解及相关事例

一.匹配字符 .    匹配任意单个字符 [ ]  匹配指定范围内的任意字符 [^]  匹配飞指定范围内的任意字符 [:alpha:] 字母字符 [:lower:] 小写字母字符 [:upper:] 大写字母字符 [:digit:] 数字 [:alnum:] 字母数字字符 [:space:] 空白字符(禁止打印),如回车符.换行符.竖直制表符和换页符 [:punct:] 标点字符 [:cntrl:] 控制字符(禁止打印) [:print:] 可打印字符 使用时一般使用两个中括号,具体会在下面的例

MySQL数据库备份详解

原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了, 我们不能使用从数据库上的数据来恢复主数据库上的数据,只能通过备份进行误删除数据的恢复 一. 备份的分类 1.按备份的结果来分: 逻辑备份 其备份结果为SQL语句,适合于所有存储引擎,恢复时需要较多时间,逻辑备份时,对于MyISAM存储引擎是需要进行锁表操作的,通过使用的mysq

Linux系统环境SVN服务器定时备份详解

Linux系统环境SVN服务器定时备份详解: 本篇文章主要介绍的内容是在Linux系统下如何定时备份SVN服务器,目的是为了防止一旦SVN服务器挂掉及数据丢失造成的损失,需要对SVN服务器数据定时备份处理,以便找回丢失的数据,具体如下所示: 一. 新建备份目录 #mkdir /opt/project_backup 二.编写备份脚本 #cd /home/svn #vim project_backup.sh cd /home/svn now=`/bin/date +%Y%m%d` /bin/tar

关于Linux的字符测试的详解和相关bash脚本的练习

关于Linux的字符测试的详解和相关bash脚本的练习 一.字符测试选项         == : 测试两个字符串是否相等,相等为真,不等为假.         != : 测试两个字符串是否不等,不等为真,相等为假.         -n string : 测试指定的字符串是否为空,空为真,不空为假.         -z string :测试指定的字符串是否为不空,不空为真,空为假. 二. 完成下面的bash脚本练习         练习:写一个脚本 传递一个参数(单字符就行)给脚本,如参数为