PostgreSQL 9.4 流複製環境搭建
阿新 • • 發佈:2019-02-14
此方法並不完全屬於熱備,因為主機宕掉備機無法自動替換,備機只是起到資料自動備份的功能,如果想實現自動備份需要使用pgpool
環境介紹
首先、務必保證兩臺都安裝有相同版本的Postgresql資料庫,兩個機器的postgres使用者做ssh免密碼
1、兩臺都安裝rsync
yum install rsync
2、修改主機的postgresql.conf 在postgres資料庫的data目錄中
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = ' rsync -av --exclude postmaster.pid --exclude postgresql.conf --exclude pg_ident.conf --exclude pg_hba.conf /var/lib/pgsql/9.4/data/* 192.169.77.215:/var/lib/pgsql/9.4/data/'
archive_timeout = 300 --這個是同步重新整理時間單位是秒 意思是300秒同步一次
max_wal_senders = 1
wal_keep_segments = 300
3、修改備機的postgresql.conf 在postgres資料庫的data目錄中
listen_addresses = '*'
hot_standby = on
4、備機在data目錄建立recovery.conf檔案,內容為:
restore_command = 'cp /var/lib/pgsql/archive/%f %p'
standby_mode = 'on'
primary_conninfo = 'host=192.169.77.211 port=5432 user=postgres password=postgres'
5、備機建立archive目錄,並授權
# mkdir /var/lib/pgsql/archive
# chmod 777 /var/lib/pgsql/archive/
6、修改pg_hba.conf 檔案讓兩個機器都可以免密碼
7、主機啟動資料庫然後進入psql執行 select pg_start_backup('base'); 然後在退出psql 執行
rsync -av --exclude postmaster.pid --exclude postgresql.conf --exclude pg_ident.conf --exclude pg_hba.conf /var/lib/pgsql/9.4/data/* 192.169.77.215:/var/lib/pgsql/9.4/data/
再回到psql 執行select pg_stop_backup(); 看提示按Ctrl+C終止即可
8、備機啟動資料庫 此時可以看到同步過來的資料,以後會每300秒同步一次
IP | 角色 |
192.169.77.211 | 主 |
192.169.77.215 | 備 |