博客被遺棄好久了,不是因爲忙,而是一直都很懶。今天也算是心血來潮吧。把最經剛剛在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的步驟一樣的
然後再啓動服務