到现在为止,您已经掌握了一定的理论。因为生活不仅由理论组成(它可能同样重要),是时候深入实际的工作了。

本章的目标是让您明白如何恢复数据到一个给定的时间点。当您的系统崩溃或者有人意外地删除了一个表,不重放整个事务日志,而是重放 其中的一小部分,这是非常重要的。即时恢复(PITR,Point-In-Time-Recovery)将是做这种部分事务日志重放的工具。

在本章中,您将学到关于即时恢复(PITR)的所有您需要知道的信息,并且会有实际的例子来引导您。因此,我们将应用所有您已经在第二章所学习的概念,理解 PostgreSQL 事务日志,建立增量备份或者设置一个简单的,基本的备份系统。

下面是我们将在本章讲解的主题的概述:

• 理解 PITR 背后的概念

• 配置 PostreSQL PITR

• 运行 pg_basebackup

• 恢复 PostgreSQL 到一个特定的时间点

3.1 理解PITR的作用

PostgreSQL 提供了一个可以备份一个数据库的工具,叫做pg_dump。基本上,pg_dump 会连接到数据库,读取事务隔离级别“序列化”所有的数据,并把数据以文本的形式返回。由于我们使用的是“序列化”,转储始终保持一致。所以,如果您的pg_dump 在午夜开始,结束于上午六点。您将创建一个备份,其包含截至午夜的所有数据,但没有进一步的数据。对从少量到中量的数据来说,这种快照创建是非常方便,并且是完全可行的。

[转储始终保持一致。这意味着所有的外键都完好无损;开始转储后,新添加的数据将丢失。这可能是最有可能的执行标准备份的最常见的方式。]

但是,如果您的数据是如此宝贵并且规模也是如此之大,以至于您要对它进行整理备份;对于高度关键的数据,它显然不是。除此之外,以文本形式重放20TB的数据效率也不高。已经设计了即时恢复来解决这个问题。它是如何工作的呢?基于数据库的快照,稍后,XLOG 将会被重放。这可以无限制地执行,或者到一个您选择的时间点。通过这种方式,您可以到达任何时间点。此方法打开了许多不同的方法和功能的大门。

• 还原数据库实例到一个给定的时间点

• 创建一个备份数据库,其中包含原始数据库的副本

• 创建一个所有更改的历史记录

在本章中,我们将专门研究增量备份的功能。并描述如何通过增量归档改变一个选择的媒介使您的数据更安全。

3.1.1移动到架构角度

下面的图片提供了一个使用即时恢复的通用架构图的概貌:

我们已经在前面的章节看到PostgreSQL产生16MB的事务日志段。每当这些段中的一个被填满并准备就绪是,PostgreSQL将调用所谓的archive_command。archive_command 的目的是把 XLOG文件从数据库实例传输到存档。在我们的图片中,归档在图片的右下角的小方框表示。

该设计的妙处在于,您基本上可以使用任意的shell脚本来归档事务日志。这里有一些想法:

• 使用一些简单的复制来传输数据到一个NFS共享

• 运行 rsync 来移动文件

• 使用定制脚本来校验XLOG文件并将其移动到一个FTP服务器

• 复制 XLOG 文件到磁带

可能的管理XLOG的选择值受到想象力的限制。

restore_command 准确地与archive_command 相对应。它的作用是从归档获取数据并将其提供给实例,这是为了重放它(在我们的图片中,这被标记为还原备份)。正如您所看到的,如本章所述,重放可能被用于复制或者仅仅恢复一个数据库到一个给定的时间点。同样,restore_command 只是一个简单的可以一个文件一个文件地做您所希望的事情的脚本。

[ 作为全能的管理者的您负责归档是很重要的。您必须决定保持多少的XLOG,什么时候删除它。这项任务的重要性不能被低估。]

请记住,当由于某种原因archive_command 失败时,PostgreSQL 将保持XLOG文件几秒钟后会重新尝试。如果归档从某个特定的点不断地失败,可能是master填满了。XLOG文件的顺序不能被中断;如果一个文件丢失了,您就不能继续重放XLOG了。所有的XLOG文件必须存在,因为PostgreSQL需要一个序列不间断的XLOG文件。如果一个文件丢失,恢复进行将停止在最新的位置。

PostgreSQL Replication之第三章 理解即时恢复(1)的更多相关文章

  1. PostgreSQL Replication之第三章 理解即时恢复(3)

    3.3 做基础备份 在上一节中,您已经看到,启用归档只需要几行命令,并提供了极大的灵活性.在本节,我们将看到如何创建一个所谓的基础备份,稍后这可以使用XLOG.一个基本备份是一个最初的数据的拷贝. [ ...

  2. PostgreSQL Replication之第三章 理解即时恢复(4)

    3.4 重放事务日志 一旦我们创建了一个我们自己的初始基础备份,我们可以收集数据库创建的XLOG.当时间到时,我们可以使用所有这些XLOG 文件并执行我们所期望的恢复进程.这就像本节描述的一样工作. ...

  3. PostgreSQL Replication之第三章 理解即时恢复(2)

    3.2 归档事务日志 看过图片之后,我们可以看看如何使这些东西进入工作状态.当谈到及时归档时,您需要做的第一件事是归档XLOG.PostgreSQL通过postgresql.conf提供了所有与归档相 ...

  4. PostgreSQL Replication之第七章 理解Linux高可用(6)

    7.6 PostgreSQL和高可用性 数据库是我们日常数字生活的一部分,并期望它们快速工作. 您浏览网上论坛吗?那个帖子在数据库中.您看医生吗?您的医疗记录在数据库中.您在网上购物吗?那个货物,您的 ...

  5. PostgreSQL Replication之第七章 理解Linux高可用(1)

    高可用(HA)是工业长期持续的,不间断的服务.在本章,您将了解高可用软件的历史,概念和实现与PostgreSQL复制和高可用之间的关系. 本章将详细地讲述如下主题: •理解高可用性的目的 •衡量可用性 ...

  6. PostgreSQL Replication之第七章 理解Linux高可用(2)

    7.2 衡量可用性 可用性是提供商试图保证一定的可用性级别和客户可以期望的可用性或更多.在某些情况下(取决于服务合同) 收取罚款或减少申购费用是意外停机的原因. 可用性的质量使用百分数来衡量:例如,9 ...

  7. PostgreSQL Replication之第七章 理解Linux高可用(5)

    7.5 高可用性是所有冗余 让我们从一个不同的角度看一下前面的混合超市的例子.为了处理大量顾客无需长排队,无需关闭超市,混合超市雇用更多的出纳员以及安装许多(甚至更多)的收银机. 这样,如果一个收银机 ...

  8. PostgreSQL Replication之第七章 理解Linux高可用(4)

    7.4 术语与概念 一组计算机被称为集群.集群内的一台计算机被称为一个节点. 当集群内的节点数量是 N (2,,3,等.) ,那么我们讨论一个N节点的集群. 高可用性软件,传输层和集群管理层都运行于每 ...

  9. PostgreSQL Replication之第七章 理解Linux高可用(3)

    7.3 高可用软件的历史 有大量的专有的和开源的高可用性软件.专有的例子有:Solaris Cluster (有时称为Sun 集群 or SunCluster), SteelEye LifeKeepe ...

随机推荐

  1. TRIZ系列-创新原理-34-抛弃和再生部件原理

    抛弃和再生部件原理的详细描写叙述例如以下:1)物件的部件在完毕其功能,或者变得没用之后,就被扔掉(丢弃.溶解,挥发等),或者在工作过程已经改变.2)物体已经用掉的部件,应该在工作期间恢复: 对于抛弃原 ...

  2. 浅析JAVA设计模式之工厂模式(二)

    1 工厂方法模式简单介绍 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类.而是一个抽象工厂,提 ...

  3. Tesseract 3.04 + VS2013 配置心得(包括静态库版本号和Release版本号)

    研究Tesseract也有几个星期了 走了一些弯路 网上有非常多VS2010的配置心得 但没有VS2013的, 找到一篇之后, 又发现会有一些小问题, 这里记录下来, 也为新人提供一些帮助. Tess ...

  4. virtio netdev的创建

    Linux眼下支持至少了8种虚拟化系统: Xen KVM VMware's VMI IBM's System p IBM's System z User Mode Linux lguest IBM's ...

  5. ORA-1157错误解决

    一.错误描述 ORA-1157, "cannot identify/lock data file %s - see DBWR trace file" 引起的原因: 因为数据文件已经 ...

  6. 1. Git-2.12.0-64-bit .exe下载

    转自:https://blog.csdn.net/u011164906/article/details/59129835 之前一直用SVN最近接触git,Git-2.12.0-64-bit .exe文 ...

  7. Codeforces 676E The Last Fight Between Human and AI 规律

    链接 Codeforces 676E The Last Fight Between Human and AI 题意 给一个多项式,有些系数不确定.人和机器轮流填系数,系数可以是任何数,问是否能使得最后 ...

  8. Spark 运行机制及原理分析

  9. tabIndex-bootstrap中Get到的

    网页键盘的无障碍访问性 其实加了这个,可以控制Tab键切换的顺序,聚焦等 这个属性,任何标签都可以添加,没有兼容性限制,属性值的范围:0-32767 当一个元素设置tabindex属性值为-1的时候, ...

  10. Vue.js Ajax动态参数与列表显示

    一.动态参数显示 1.引入js <script type="text/javascript" src="/js/vue.min.js"></s ...