標籤:
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。 ]
原文地址:http://www.cnblogs.com/songyuejie/p/4743370.html
PostgreSQL Replication之第三章 理解即時恢複(2)