4.6 有效的清理和恢复结束

最近几年, recovery.conf 已经变得越来越强大了。早在初期(在 PostgreSQL 9.0之前), 仅有 restore_command 和一些 recovery_target_time 相关设置。更多的现代 PostgreSQL 版本提供了更多的东西,让您有机会以一个很好和专业的方式控制您的重放进程。

在本节中,您将学习有什么样的设置,您将怎样轻松地使用这些功能。

4.6.1 取得重启点的控制权

到现在为止,我们已经无限地归档了XLOG。就像在现实生活中,无限是一个引起麻烦的概念。正如John Maynard Keynes已经在他著名的书中所陈述,The General Theory of Employment, Interest, and Money:

"In the long run, we are all dead."

适用于Keynes的激励的东西对于XLOG归档同样是如此;您根本无法继续做下去。在有些时候,XLOG必须被扔掉。为了使清理更容易,您可以放一个archive_cleanup_command到recovery.conf中。就像大多数其他命令,(例如,restore_command),则是以通用的shell脚本。您会把该脚本放在这里,该脚本将在每个重启点被执行。那么,什么是重起点?每次PostgreSQL从基于文件重放转换到基于流的重放,您就正在面对一个重起点。事实上,再次启动流复制被认为是一个启动点。

重起点一到达,您就可以让PostgreSQL执行一些清理程序(或任何其他东西)。清理掉旧的XLOG或触发一些通知是很容易的。

如下脚本显示了您如何清理掉任何一天前的XLOG:

#!/bin/sh

find /archive -mtime +1 -exec rm -f {} \;

请记住,您的脚本可以是任何复杂的类型。您必须决定一个适当的策略来处理XLOG。每个企业的情况是不同的,您可以灵活地控制您的归档和复制行为。

4.6.2 调整您的恢复结束

recovery_end_command提供和archive_cleanup_command类似的目的。当您的恢复(或XLOG流)已经完成,它会触发一些脚本执行。

同样,您可以用它来清理掉旧XLOG,发出通知,或执行任何其他想执行的操作。

PostgreSQL Replication之第四章 设置异步复制(6)的更多相关文章

  1. PostgreSQL Replication之第四章 设置异步复制(1)

    执行完您的第一个即时恢复(PITR,Point-In-Time-Recovery),我们准备在一个真正的复制设置上工作.在本章,您将学会如何设置异步复制和流.我们的目标是确保您可以实现更高的高可用和更 ...

  2. PostgreSQL Replication之第四章 设置异步复制(2)

    4.2 配置级联复制 正如您在本章已经看到的,设置流复制真的很容易.只需要设置几个参数,做一个基础备份,并享受您的复制设置. 在许多情况下,这种情况更有一点点微妙.在这个例子中我们假设:我们要使用一个 ...

  3. PostgreSQL Replication之第四章 设置异步复制(4)

    4.4 基于流和基于文件的恢复 生活并不总只是黑色或白色:有时也会有一些灰色色调.对于某些情况下,流复制可能恰到好处.在另一些情况下,基于文件复制和PITR是您所需要的.但是也有许多情况下,您既需要流 ...

  4. PostgreSQL Replication之第四章 设置异步复制(8)

    4.8 处理时间线 时间线是一个您必须要知道的一个重要的概念,尤其是当您规划一个大型的设置的时候. 那么,什么是时间线呢?事实上,它是XLOG的一个分支.正常情况下,刚设置的一个数据库实例使用的时间线 ...

  5. PostgreSQL Replication之第四章 设置异步复制(7)

    4.7 冲突管理 在PostgreSQL中,流复制数据仅在一个方向流动.XLOG由master提供给几个slave,这些slave消耗事务日志并为您提供一个较好的数据备份.您可能想知道这怎么会导致冲突 ...

  6. PostgreSQL Replication之第四章 设置异步复制(5)

    4.5 使流复制更健壮 当连接到master时,slave要做的第一件事情是赶上master.但是,这会一直工作吗?我们已经看到,我们可以使用由基于流和基于文件组成的混合设置.这给了我们一些额外的安全 ...

  7. PostgreSQL Replication之第四章 设置异步复制(3)

    4.3 slave到master的切换 如果您想扩展读或您想做一个数据备份,一个 slave是件美好的事情.但是,slave可能不会一直是slave.在有些时候,您可能需要把slave转换为maste ...

  8. PostgreSQL Replication之第五章 设置同步复制(1)

    到目前为止,我们已经处理了基于文件的复制(或日志传送)和简单的基于流复制的设置.在两种情况中,在master上事务被提交之后,数据被提交,由slave接收.在master提交和slave实际上完全地接 ...

  9. PostgreSQL Replication之第五章 设置同步复制(2)

    5.2 理解实际影响和性能 在本章中,我们已经讨论了实际影响以及性能影响.但是,有什么好的理论性的例子吗?让我们做一个简单的基准测试,看看复制是怎么做的.我们做这样的测试来为您显示各种耐久性的级别不只 ...

随机推荐

  1. JAVA设计模式之【建造者模式】

    建造者模式 建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品 角色 Builder抽象建造者 buildPartX getResult ConcreteBuilder具体建 ...

  2. nyoj--1237--最大岛屿(dfs+数据处理)

    最大岛屿 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战 ...

  3. POJ 1948 DP

    题意:给你n个木棍(n<=40)每个木棍长度<=40,问用上所有的木棍拼成的三角形的面积的最大值,并输出面积*100的值(不四舍五入) 如果没有解,输出-1. 思路: 背包判断可达性. f ...

  4. iReport5.6.0使用说明

    1,需要安装jdk1.7,因为目前还不支持最新的jdk1.8 2,安装好软件之后,打开安装目录下的etc/ireport.conf文件,配置关联自己的jdk1.7的路径,如下: #jdkhome=&q ...

  5. gb2312和gbk互转

    String deStr = System.Web.HttpUtility.UrlEncode("欢迎", Encoding.GetEncoding("GBK" ...

  6. C++之易混淆知识点三---算法分析

    最近复习算法,感到有一丝丝忘记的困惑,赶紧记下来... 一.分治法 分治法的思想就是“分而治之”,很明显就是将规模比较庞大.复杂的问题进行分治,然后得到多个小模块,最好这些小模块之间是独立的,如果这些 ...

  7. handsontable在线编辑excel扩展功能-踩坑篇

    简述 先说一下背景,之所以封装handsontable插件,是因为公司要实现在线编辑导入excel文件的功能,然后我就找到了这个功能强大的插件handsontable. 具体功能 除了handsont ...

  8. JQuery实现的弹窗效果

    这是笔者实际项目中的一个需求,我们先来看看特效. 页面加载时弹出窗口,点击关闭按钮,窗口消失并呈现动画效果. 实现代码如下: <!DOCTYPE HTML PUBLIC "-//W3C ...

  9. oracle11g文件系统库迁移到ASM库上面

    最近把oracle11g的文件系统库迁移到了asm库上面. 迁移过程大致如下: 最少停机方案: 实例joinpay02 | |数据库joinpay02 需要改动的文件: 数据文件 控制文件 redo文 ...

  10. SpringCloud学习笔记(3)----Spring Cloud Netflix之深入理解Eureka

    1. Eureka服务端的启动过程 1.1  入口类EurekaServerInitializerConfiguration类, public void start() { (new Thread(n ...