[原創] PostgreSQL Plus Advanced Server在Windows中配置雙機熱備流複製

1、系統環境

操做系統:Windows Server 2003/2008sql

兩個節點分別爲master與slave。數據庫

主節點master:172.27.19.28安全

備機點slave:172.27.19.31工具

PostgreSQL Plus Advanced Server:9.2.1.3post

 

2、安裝EnterpriseDB

安裝EnterpriseDB時,請將master節點和slave節點設置爲相同的密碼!測試

在Windows中安裝PPAS須要注意一點:不要將PPAS安裝在帶有空格的目錄中,例如默認安裝的Program Files目錄,這樣有可能影應用開發。推薦安裝在根目錄,例如"X:\PostgresPlus"。操作系統

爲方便命令行的使用,能夠在系統環境變量中增長"X:\PostgresPlus\9.2AS\bin",這樣能夠在命令行中方便運行psql命令。命令行

 

3、配置PPAS流複製

一、分別中止master節點與slave節點上的PPAS服務

在Windows中啓動、中止、重啓與Linux中略有不一樣,請在控制面板管理工具中的服務控制檯進行上述操做,同時建議在生產環境中將PPAS服務設置爲手動啓動模式。以下圖所示:3d

點擊"中止此服務"按鈕,中止PPAS服務。postgresql

使用上面的方法,分別中止master節點與slave節點上的PPAS服務,並移除slave節點的data目錄;

二、修改master節點的postgresql.conf文件

使用記事本或者其餘的文本編輯工具修改master節點的postgresql.conf文件,該文件位於"X:\PostgresPlus\9.2AS\data"目錄下。如下爲修改的內容:

將listen_addresses的值設置爲'*'

listen_addresses = '*'

配置歸檔模式爲hot_standby

wal_level = hot_standby

配置最大備機數量,這裏能夠設置的稍大於實際狀況,方便往後擴展

max_wal_senders = 5

打開hot_standby模式

hot_standby = on

修改完成以後保存退出。

三、修改master節點的pg_hba.conf文件

使用記事本或者其餘的文本編輯工具修改master節點的pg_hba.conf文件,該文件位於"X:\PostgresPlus\9.2AS\data"目錄下。如下爲修改的內容:

增長如下行

host all all 0.0.0.0/0 md5

在文件結尾處增長如下行

host replication enterprisedb 172.27.19.28/32 trust

host replication enterprisedb 172.27.19.31/32 trust

host all all 172.27.19.28/32 trust

host all all 172.27.19.31/32 trust

四、啓動master節點上的PPAS服務

點擊紅色矩形內箭頭指出的"啓動此服務"按鈕,啓動PPAS服務。

五、在master節點上執行一次基礎備份

a)使用psql工具鏈接master節點

點擊WIN+R鍵,在彈出的"運行"對話框中運行"cmd"命令,並切換到X:\PostgresPlus\9.2AS\bin目錄中,X爲您的PPAS安裝的盤符。

在命令提示符下輸入"cd c:/PostgresPlus/9.2AS/bin",切換到上面PPAS安裝目錄中的bin目錄以後,運行"edb-psql --version",能夠看到PPAS的版本信息:

運行edb-psql -U enterprisedb -p 5444 -d edb鏈接到PPAS數據庫,看到以下圖所示,說明鏈接成功:

b)開始執行基礎備份

edb=# select pg_start_backup('fullbackup');

c)將data目錄徹底拷貝至slave節點,並刪除postmaster.pid文件

d)結束基礎備份

edb=# select pg_stop_backup();

六、刪除slave節點的data目錄中的postmaster.pid文件

七、建立recover.conf文件

在slave節點的data目錄中建立recover.conf文件,這個文件能夠從PPAS安裝路徑下的share目錄中複製recover.conf.simple到data目錄並重命名爲recover.conf,編輯內容以下:

recovery_target_timeline = 'latest'

standby_mode = 'on'

primary_conninfo = 'host=172.27.19.28 port=5444 user=enterprisedb'

trigger_file = 'D://recovery_trigger'

八、檢查和配置slave節點中PPAS的data目錄的權限

在data目錄上鼠標右鍵點擊屬性按鈕,在彈出的對話框中,且還到安全選項卡,檢查箭頭所指部分是否有enterprisedb用戶,若是有enterprisedb用戶,請檢查enterprisedb用戶是否對data目錄有徹底控制權限;

若是沒有enterprisedb用戶,則點擊編輯按鈕,在彈出的"權限"設置對話框中,點擊添加按鈕,以下圖所示:

點擊添加按鈕以後,會彈出選擇用戶的對話框,這裏您可能看不到enterprisedb用戶,或者不知道如何填寫完整的用戶名稱,因此點擊高級按鈕,進行選擇:

選擇enterprisedb用戶,雙擊以後一路肯定,以下圖所示:

在data權限對話框中,必定要選擇徹底控制,如圖紅色矩形標註的地方:

九、啓動slave節點的PPAS服務

在slave節點控制面板中管理工具的服務控制檯,點擊下圖因此的啓動按鈕啓動PPAS服務:

4、流複製測試

一、master節點上進行寫入記錄測試

在master節點的edb數據庫的dept表中插入一條記錄

edb=# INSERT INTO dept VALUES(50,'CEO','BEIJING');

在slave節點上查詢,看是否有剛纔寫入的記錄:

能夠看到咱們剛纔寫入的記錄已經在slave節點上同步了。

二、在slave節點進行一樣的寫入測試

INSERT INTO dept VALUES(60,'CFO','TIANJIN');

能夠看到以下的錯誤信息:

這個消息是正確的,slave節點做爲當前的備機,是隻讀模式的,因此不能進行寫入操做。這裏得出一個結論,master節點是可讀可寫的,而slave是可讀不可寫的!

三、建立新表及刪除表

在master節點上建立測試數據庫testdb,建立測試表tb_test,並在tb_test表中寫入測試數據,同時檢查slave節點,能夠看到slave節點已經有了master節點中新寫入的數據。

在slave節點上查看

能夠看到剛纔創建的表及寫入的數據都已經存在。

在master節點執行刪除表的命令:

edb=# drop table weather;

在slave節點能夠看到剛纔創建的表weather已經被刪除!

5、主備切換

一、模擬故障

經過中止master節點上的PPAS服務或者其餘方式,模擬master節點發生故障;

二、創建trigger文件將slave節點切換爲主機

創建一個空文件並命名爲recovery.conf文件中trigger_file參數指定的文件名;咱們的recovery.conf文件中trigger_file參數的值爲D://recovery_trigger,因此在D盤下創建一個空文件,命名爲recovery_trigger文件;

在文件創建好時,slave節點即開始恢復動做;

通過恢復後成功的將業務切換到slave節點,這時的slave節點成爲主機,同時,slave節點目錄中的recovery.conf文件已經被改名爲recovery.done,而且會自動刪除D://recovery_trigger文件。

這時的slave節點已是可讀可寫的,說明它已經且還爲主機

INSERT INTO DEPT VALUES(80,'MDL','GUANGZHOU');

SELECT * FROM DEPT;

三、啓用原主機(master節點)

修復出現故障的原master節點後,一樣須要在原master節點的data目錄中建立recovery.conf文件,以後的步驟與三(五、六、七、八、9)操做相同。

在第7小步驟配置recovery.conf文件時,由於這時的data已經存在一個recovery.done文件,因此只須要將這個文件更名爲recovery.conf,而且修改文件中的host一節的ip地址便可!其餘的操做都是相同的,此處再也不重複。

相關文章
相關標籤/搜索