Postgresql基於流複製 (streaming replication)的hot-standby

panpong發表於2017-02-10

Postgresql基於流複製 (streaming replication)hot-standby

 

Primary:

l  歸檔設定:

         Wal_level=hot_standby

         Hot_standby=on

         Archive_mode=on

         archive_command = 'cp -i %p /data/pgsql/archived_wal/%f'

l  流複製相關設定:

         max_wal_senders = '10'       #啟動複製程式數量限制,必須大於0

max_replication_slots = '10'           #為使用replication slot,必須大於0replication slot作用是保證wal沒有同步到standby之前不能從pg_xlog移走;

wal_keep_segments = '50'              #指定pg_xlog中最少保留的wal數量

 

select pg_create_physical_replication_slot(‘gp1_a_slot’);  #建立replication slot

select * from pg_replication_slots;                        #查詢建立的replication slot

 

l  編輯pg_hba.conf

# Allow replication connections from localhost, by a user with the replication privilege.

#host    replication     postgres        127.0.0.1/32            trust

#host    replication     postgres        ::1/128                 trust

local   replication     postgres                                trust

host    replication     postgres        192.168.12.0/24            trust

l  聯機備份過程(基礎備份)

#touch /var/lib/pgsql/backup_in_progress

$psql –c "select pg_start_backup('hot_backup');"

$tar -cf /var/lib/pgsql/backup.tar /var/lib/pgsql/data/

$psql -c "select pg_stop_backup();"

#rm /var/lib/pgsql/backup_in_progress

tar -rf /var/lib/pgsql/backup.tar /var/lib/pgsql/archive/  #打包歸檔

Standby

l  編輯recovery.conf

recovery_target_timeline = 'latest'

standby_mode = 'on'

primary_conninfo = 'host=192.168.12.38 port=5666 user=postgres'

primary_slot_name='gp1_a_slot'

#restore_command = 'cp /data/pgsql/archived_wal/%f %p'

#archive_cleanup_command = 'pg_archivecleanup /data/pgsql/archived_wal %r'

 

l  將primary上的基礎備份傳輸到standby

$scp primary: /var/lib/pgsql/backup.tar .

解壓備份到standby上的$PGDATA

l  啟動standby

$pg_ctl start –D $PGDATA

啟動standby後,postgres開始從primary上接收wal日誌進行恢復,並且資料庫保持:read only connect狀態,psql能登入進行查詢操作;

 

Hot-Standby,只讀狀態下的可以執行的操作:

1.      查詢,所有select

2.      Checkpoint,可以執行不報錯,但是不產生log

3.      Select pg_create_physical_replication_slot(‘slot_name’); 等操作,如drop replication slot

 

Switchover:

         Hot-standby進行主備切換時注意事項:

1.      必須先停止primary,然後再在standbypg_ctl promote;

2.      為方便快速切換,主備配置儘量相同,並提前準備妥當,例如 .pgpasspg_hba.conf recovery.conf;

3.      使用replication slot時,主備分別指定不同primary_slot_name

主備切換步驟:

A.     主備分別準備recovery.conf,注意修改primary_conninfoprimary_slot_name引數設定

B.     停止主資料庫

C.     Standby上,pg_ctl promote,或者建立觸發檔案(切換成主庫)

D.     啟動原主庫,切換為備份庫

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-2133409/,如需轉載,請註明出處,否則將追究法律責任。

相關文章