postgreSQL hot stand by

博客被遺棄好久了,不是因爲忙,而是一直都很懶。今天也算是心血來潮吧。把最經剛剛在windows上配置的postgreSQL hot standby 的過程和大家分享一下。主要還是參考了別人的文章,然後再把自己配置過程中遇到的問題和注意點加以說明。主要是爲了做一個記錄備案,方便以後需要的時候,拿出來參考。同時給同樣需要配置這樣的環境的朋友一點參考。

這裏我主要參考了這邊的一篇博客:http://bbs.pgsqldb.com/index.php?t=msg&th=13110&start=0&rid=501&S=e98802133a29f3dc3313874966d5e986。

postgreSQL hot standby configurantion on windows

1、Hot standby

Standby技術基於PostgreSQL的預寫入日誌(wal)同步,建立服務器級的數據同步節點。他的節點間直接傳遞寫操作的二進制預寫入事務,傳輸效率高,性能好,一致性強,自動同步的DDL操作。流式同步允許slave節點連接到primary節點上,以流式獲取新的wal數據。Replication連接要求用於流式同步的登錄賬號必須是superuser,可以限定該用戶只能在primary節點中執行同步複製,提高安全性。

 

hot-standby的配置場景有三個:

(1) 正常運行時場景,配置master和slave,並且 master正常運行,slave也正常的運行

(2) Failover場景,即master壞了,slave提升爲master,然後修理master機器

(3) Switchover場景,即master修復好後,配置爲slave,即角色從原來的master轉換爲slave,而原來的slave轉換成爲master

 

2、Master節點

(1)下載安裝postgreSQL最新版本(9.1.3.zip),解壓到D盤

(2)創建postgres用戶,並且設置密碼123456

(3)在命令行輸入:runas/user:postgres cmd ,輸入postgres賬戶密碼,進入postgres命令行環境。進入pgsql\bin目錄initdb.exe -D ../data --no-locale 初始化數據羣d

 

打開d:\pgsql\data\postgresql.conf修改

listen_addresses= '*'

wal_level =hot_standby

max_wal_senders= 5

wal_keep_segments= 1000  #需要至少16*1000=16GB的pg_xlog目錄空間,否則可能空間溢出

(4)啓動master節點,增加一個用於管理流複製的數據庫用戶

       psql

       Create user rep SUPERUSER ENCRYPTENPASSWORD ‘110’

(5) 配置master節點,讓其可以接受slave節點連接

       打開D:\pgsql\data\pg_hba.conf

添加  host replication  rep  172.25.21.72/32  md5

注:這裏的紅色的ip就是slave服務器的ip地址

啓動master節點:pg_ctl restart-D ../data

(6) 對master做基礎備份

然後把 data目錄複製出來(在配置slave中會有到),接着執行下面的命令

<!—master節點配置完成-->

 

2、slave節點配置

同樣在slave機器上,解壓postsql到C盤

然後把master中複製出來的data目錄放到pgsql中

到c:\pgsql\share目錄複製recovery.conf.sample,改名爲recovery.conf,放到data目錄下,並且做如下修改

archive_cleanup_command='d:\\pgsql\\bin\\pg_archivecleanupc:\\pgsql\\data\\pg_xlog %r'

standby_mode= 'on'

primary_conninfo= 'host=172.25.21.47 port=5432 user=reppassword=110'

trigger_file= 'c:\\pgsql\\data5433\\trigger_active.5433'

注:這裏紅色的ip指的是master的IP地址

接着修改c:\pgsql\data\postgresql.conf文件

hot_standby=on  //注:這裏的on不能有引號

然後啓動就OK了。

 

注:兩臺機器需要時相同OS,如果操作系統不相同的話,當把data目錄,從master複製到slave時,在slave的機器上無法用postgres的賬戶啓動服務。

 

3、當作爲master的機器failover

(1)將原來的slave配置成master

在slave端的data目錄下,新建一個文件,trigger_active.5433 (這個文件時在recovery.conf中有配置的),然後

Slave端就成爲了master

執行命令:psql  -c “select pg_start_backup(‘third’)”

然後把data目錄複製出來,拷貝到原來的master機器上,替換其中data

然後在執行命令:psql–c “select pg_stop_backup()”

(2)將原來的master配置成slave

這邊的配置和配置slave的步驟一樣的

然後再啓動服務


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章