- 架設多部 PostgreSQL Server,並且設定 Replication 進行同步資料與備援!
- 請參考這一篇的設定,架設好多部 PostgreSQL Server!
-
切換成 postgres 使用者:
#su - postgres
-
建立用於 replication 的使用者帳密:
$createuser --replication -P replica
-
修改 PostgreSQL Server 相關設定:
$vim /var/lib/pgsql/data/postgresql.conf (只修改下列設定:) listen_addresses = '*' wal_level = hot_standby ### 修改同步方式 #### # on ⇒ sync # remote_write ⇒ memory sync # local ⇒ slave is asynchronous # off ⇒ asynchronous synchronous_commit = local archive_mode = on archive_command = 'cp %p /var/lib/pgsql/archive/%f' ### 設定 Master 以及 Slave 主機數量 ### max_wal_senders = 2 wal_keep_segments = 10 ### 同步的主機名稱(可以任意定) ### synchronous_standby_names = 'slave01'
-
設定 pg_hba.conf 檔:
$vim /var/lib/pgsql/data/pg_hba.conf ### 在檔尾追加下列設定 ### # host replication [replication user] [allowed IP addresses] password host replication replica 127.0.0.1/32 password host replication replica 192.168.5.244/32 password host replication replica 192.168.5.243/32 password
-
重新啟動 PostgreSQL Server:
$pg_ctl restart
-
切換成 postgres 使用者:
#su - postgres
-
由 Master 備份資料到 Slave (需要 replica 的密碼):
$pg_basebackup -h 192.168.5.244 -U replica -D /var/lib/pgsql/data -P --xlog
-
修改 PostgreSQL Server 相關設定:
$vim /var/lib/pgsql/data/postgresql.conf (只修改下列設定,其餘設定保留) hot_standby = on
-
從範例檔複製設定檔:
$cp /usr/share/pgsql/recovery.conf.sample /var/lib/pgsql/data/recovery.conf
-
編修設定檔 /var/lib/pgsql/data/recovery.conf:
$ vi /var/lib/pgsql/data/recovery.conf (只修改下列設定,其餘設定保留) restore_command = 'scp 192.168.5.244:/var/lib/pgsql/archive/%f %p' standby_mode = on ### 設定 Master Server 相關設定 ### primary_conninfo = 'host=192.168.5.244 port=5432 user=replica password=a123456 application_name=slave01'
-
重新啟動 PostgreSQL Server:
$pg_ctl stop $pg_ctl start
參考文獻:
- http://www.server-world.info/en/note?os=CentOS_7&p=postgresql&f=3