Win環境下Postgresl的備份庫的相關配置
1.修改主伺服器和備伺服器上的修改備資料庫的pg_hba.conf檔案連線許可權:
修改成:
這時候必須確保在備份機器上能連上主資料庫機器,主資料庫機器器也能連線上備份機器(網路通暢,對應的埠可以訪問):
2.對主資料庫做一個基礎備份(手動備份),然後把基礎備份拷貝到standby機器(備資料庫),再備份機器上新建一個數據庫(雖然與主資料庫不同名也不會影響資料庫恢復,但是不建議。),把基礎備份恢復到standby機器上新建的這個資料庫中
3.在主資料庫上建一個超級使用者,standby資料庫會使用這個使用者連線到主庫上拖WAL日誌。(停止主備資料庫的服務)
注意:建立的超級使用者必須要用初始化複製和備份許可權。
4.在主資料庫上的postgresql.conf檔案中設定wal_level = hot_standby。
修改成
4.1.在主資料庫上的postgresql.conf檔案中設定wal_keep_segments為一個足夠大的值,以防止主庫生成WAL日誌太快,日誌還沒有來得及傳送到standby,就會迴圈覆蓋了;
修改成
4.2.在主資料庫上的postgresql.conf檔案中設定max_wal_sender引數,這個引數是控制主庫可以最多有多少個併發的standby資料庫;
修改成
5.在主資料庫上的pg_hba.conf中設定listen_addresses和連線驗證選項,允許standby資料庫連線到主庫上來拖WAL日誌資料;其中資料庫名必須填 “replication”, 這是一個為standby連線使用了一個虛擬的資料庫名稱。使用者hexinfei就是步驟2上給standby連線使用的在主庫上建的一個超級使用者。192.168.2.78就是standby資料庫的IP地址。圖示:
修改為
6. 在備份資料庫上的C:\Program Files\PostgreSQL\9.1\data資料夾下建一個recovery.conf,設定以下二項:
standby_mode = 'on'
primary_conninfo = 'host=192.168.2.58 port=5432 user=hexinfei password=leagsoft'
standby_mode設定為'on',表明資料庫恢復完成後,不會被找開,仍然處理等待日誌的模式。
primary_conninfo上standby連線到主資料庫所需要的連線串。Host:主機的ip地址;port:主機的postgreSQL的埠,user:步驟2建立的超級使用者;password:步驟2建立的超級使用者的密碼
然後在備份資料庫上C:\Program Files\PostgreSQL\9.1\data\postgresql.conf檔案配置項修改成如下圖所示:
7.所有修改的地方:
在主資料庫的C:\Program Files\PostgreSQL\9.1\data\postgresql.conf檔案中設定如下配置項:
wal_level = hot_standby
max_wal_senders = 2
wal_keep_segments = 32
在主資料庫中的C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf中新增如下配置:
host all all 0.0.0.0/0 md5
host replication hexinfei 192.168.2.78/32 md5
在備資料庫中的C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf中新增如下配置:
host all all 0.0.0.0/0 md5
在備資料庫上C:\Program Files\PostgreSQL\9.1\data\postgresql.conf檔案中設定如下配置項:
hot_standby = on
8.啟動主資料庫服務,連線資料庫,重新整理幾次,重新載入配置讓上面修改的配置生效,在停止服務。
9.拷貝主資料庫上C:\Program Files\PostgreSQL\9.1\data目錄下的base和global資料夾去覆蓋備資料庫的這兩個資料夾(此時主備資料庫的服務是停止的)(注:這裡是覆蓋不是刪除後再粘過去。覆蓋之前可以把備份電腦中的這兩個資料夾先拷貝出來,如果出錯還可以換回來)
10.最後啟動主資料庫服務,連線主資料庫;然後啟動備資料庫的服務,連線備資料庫。主備資料庫服務都能成功啟動,檢視一下備伺服器的C:\Program Files\PostgreSQL\9.1\data\pg_pog資料夾下日誌,如果是如下圖則是成功搭建好,可以對主資料庫進行建/刪表,增,刪,改測試,在備資料庫上進去檢視是否實時同步了,不會有延遲和錯誤。