此方法並不完全屬於熱備,因為主機宕掉備機無法自動替換,備機只是起到資料自動備份的功能,如果想實現自動備份需要使用pgpool
環境介紹
IP 角色
192.169.77.211
192.169.77.215
首先、務必保證兩臺都安裝有相同版本的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秒同步一次