zoukankan      html  css  js  c++  java
  • PostgreSQL Replication之第三章 理解即时恢复(2)

    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。 ]

  • 相关阅读:
    孩子们的游戏(圆圈中最后剩下的数)
    求1+2+3+...+n
    扑克牌顺子
    Java 好文整理
    翻转单词顺序列
    左旋转字符串
    和为S的两个数字
    和为S的连续正数序列
    平衡二叉树
    java 构造函数
  • 原文地址:https://www.cnblogs.com/songyuejie/p/4743370.html
Copyright © 2011-2022 走看看