3.2 归档事务日志

看过图片之后,我们可以看看如何使这些东西进入工作状态。当谈到及时归档时,您需要做的第一件事是归档XLOG。PostgreSQL通过postgresql.conf提供了所有与归档相关的选项。让我们一步一步地看,要启动归档需要在postgresql.conf中做什么:

1. 首先,您应该把archive_mode设置为 on。

2. 第二步,您应该配置您的归档命令。归档命令是一个简单的带有两个参数的shell命令:

1. %p: 这是一个表示应该被归档的的XLOG的占位符,包括它的全路径(源)。

2. %f: 这个变量保存了没有路径指向的XLOG的名字。

现在让我们来设置归档。要做到这一点,我们应该创建一个存放XLOG的位置。理想情况下,您要归档的XLOG不与数据库实例存储在同一硬件上。为了这个例子,我们假设我们要应用一个archive 到/archive。需要在postgresql.conf中做如下改变:

wal_level = archive

# minimal, archive, or hot_standby

# (change requires restart)

archive_mode = on

# allows archiving to be done

# (change requires restart)

archive_command = 'cp %p /archive/%f'

# command to use to archive a logfile segment

# placeholders: %p = path of file to archive

# %f = file name only

一旦做了这些更改之后,就准备好了归档,您只需要重新启动数据库来激活归档。

在我们重新启动数据库实例之前,我们要您把注意力放在wal_level上。目前有三个不同的wal_level设置可供选择:

• minimal

• archive

• hot_standby

迄今为止,在单个节点的情况下,所产生的事务日志的量不足以同步整个第二个实例。在PostgreSQL中有一些优化,在单节点模式情况下,这让XLOG写被跳过。下面的指令可以从wal_level被设置为minimal中受益:CREATE TABLE AS, CREATE INDEX, CLUSTER, 和 COPY(如果在同一个事务中,表被创建或者被清空)。

要重放事务日志,archive是必要的。archive与hot_standby的不同之处是,archive 不需要知道当前运行的事务。对流复制而言,这个信息是至关重要的。

[重新启动可以通过直接使用 pg_ctl –D /data_directory –m fast restart 或者通过一个标准的init 脚本。]

检查我们的归档工作最简单方法是在数据库中创建一些无用的数据。下面的代码片段显示了可以很容易地产生一百万行数据的方法:

test=# CREATE TABLE t_test AS SELECT * FROM generate_series(1,

1000000);

SELECT 1000000

test=# SELECT * FROM t_test LIMIT 3;

generate_series

-----------------

1

2

3

(3 rows)

我们只是创建了一系列数字。重要的是,一百万行数据将出发相当数量的XLOG的交通。您将看到大量的文件使它成了归档:

iMac:archivehs$ ls -l

total 131072

-rw------- 1 hs wheel 16777216 Mar 5 22:31

000000010000000000000001

-rw------- 1 hs wheel 16777216 Mar 5 22:31

000000010000000000000002

-rw------- 1 hs wheel 16777216 Mar 5 22:31

000000010000000000000003

-rw------- 1 hs wheel 16777216 Mar 5 22:31

000000010000000000000004

这些文件可以很容易地用于未来的重放操作。

[如果您要节省存储,您也可以假设这些 XLOG 文件。只需要把gzip添加到您的archive_commmand。 ]

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

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

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

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

    到现在为止,您已经掌握了一定的理论.因为生活不仅由理论组成(它可能同样重要),是时候深入实际的工作了. 本章的目标是让您明白如何恢复数据到一个给定的时间点.当您的系统崩溃或者有人意外地删除了一个表,不 ...

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

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

  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. Android开发之视图动画基础

    Android的animation由四种类型组成 XML中  alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转 ...

  2. android官网被封掉了,仅仅好用这个站点进谷歌了!嘎嘎

         http://developer.android.com/sdk/index.html    这个能够进去.可是必须是搜狐 .360,uc都不用特意FQ     http://173.1 ...

  3. akka 原理分析优秀博客

    http://www.nyankosama.com/2014/12/15/akka-source/ http://blog.csdn.net/aigoogle/article/details/4210 ...

  4. luogu 1941 飞扬的小鸟

    这道题对于第13个数据点,不知为什么f数组第二位开到2000以下就不能过,求指教 飞扬的小鸟 传送门 题目大意 一个小鸟在\(n*m\)的方阵里,然后有许多管道你们玩过就不多介绍了,然后每一个位置,点 ...

  5. Kali linux 2016.2(Rolling)的利用MSF攻击windows小案例(exploits + payloads + taegets)(博主推荐)

    不多说,直接上干货! 本博文举的例,是利用远程溢出windows服务器. Exploit/windows/smb/ms08_067_netapi. Payload :    windows/shell ...

  6. POJ 1064 Cable master (二分答案,G++不过,C++就过了)

    题目: 这题有点坑,G++过不了,C++能过. 条件:n个数据a[],分成k段,结果精度要求两位小数. 问题:每段最长为多少? 思路:因为精度要求为两位小数,我先把所有的长度a[]*100. 我们对答 ...

  7. PIC kit3问题

    1.通过pic kit3烧录pic16F1938的时候,pic kit3自动更新了firmware,但是仍然烧录不了pic16F1938,然后再次用pic kit3烧录pic18F45k80时,一直显 ...

  8. [Java] Protect, Private and Public的区别

    Java中的private.protected.public和default的区别 (2014-03-21 22:29:14) 转载▼ 标签: java java修饰符 it   (1)对于publi ...

  9. win10关闭更新

    计算机--管理: 找到windows update 服务关闭:

  10. swift语言点评十三-Lazy

    Lazy Stored Properties A lazy stored property is a property whose initial value is not calculated un ...