1. 程式人生 > >postgresql 9.5 (主備庫)流複製簡單配置

postgresql 9.5 (主備庫)流複製簡單配置

本人是用了兩臺虛擬機器搭建主備流複製環境,操作流程很簡單: 虛擬機器 的 IP和 埠     主庫:   192.168.1.189 5432  使用者:postgres     備庫:  192.168.1.200 5432   使用者:postgres 虛擬機器必須先安裝postgres資料庫, 2. 解壓解壓postgresql-9.5.5.tar.gz: tar -xzvf postgresql-9.5.5.tar.gz 3.編譯postgres程式碼 (在root使用者下操作) cd postgresql-9.5.5 mkdir  -p /opt/sql ./configure --prefix=/opt/sql make  make install 至此,完成postgresql的安裝。進入/opt/sql目錄可以看到安裝後的postgresql的檔案  4.切回postgres使用者,配置環境變數 vi .bash_profile 主庫 設定以下環境變數 export PGHOME=/opt/sql export PGDATA =~/data 備庫 設定以下環境變數 export PGHOME=/opt/sql export PGDATA =~/standby 5. 初始化資料庫 主備分別執行iniitdb 6.檢查資料庫是否安裝成功 pg_ctl start 7.修改主庫的配置檔案 cd $HOME/data/ vi postgresql.conf 配置修改為: wal_level = hot_standby  #synchronous_commit = on(同步複製,-- 實時,如果需要非同步改為off) checkpoint_timeout = 5min  archive_mode = on archive_command = '/bin/date' max_wal_senders = 2 wal_keep_segments = 16  hot_standby = on max_standby_archive_delay = 300s max_standby_streaming_delay = 30s wal_receiver_status_interval = 1s hot_standby_feedback = on wal_receiver_timeout = 60s ----------------------------------------------- vi pg_hba.conf 配置修改為: host all all 127.0.0.1/32 trust host all all 0.0.0.0/0 trust 新增IP 可以讓備庫訪問到主庫 host replication repuser 192.168.1.200/32 md5 replication  資料庫必須是這個名字 repuser 資料庫使用者名稱 建立資料庫使用者repuser psql postgres  postgres postgres-# create role repuser login replication encrypted password '123'; 5.新增密碼檔案 登陸備庫  cd && vi  .pgpass 192.168.1.189:5432:replication:repuser:123 .pgpass檔案許可權為0600:chmod 600 .pgpass cd && rm -rf standby 
使用
pg_basebackup進行資料庫備份恢復:  pg_basebackup -F p -D $PGDATA -h 192.168.1.189 -p 5432 -U repuser 配置備庫引數postgresql.conf:

standby_mode = on

primary_conninfo = 'host=192.168.1.189  port=5432  user=repuser'

trigger_file = '/home/postgres/standby/postgresql.trigger.5432'

啟動備庫,檢視服務程序,請注意有一個wal receiver progress程序,這個是接收wal日誌的程序:

同樣主庫也多了一個wal sender process程序,用於日誌傳送。

測試:

在主庫中新建一張表,並插入一些資料:

create table t1(id int);

insert into t1 values (1);

在從庫中進行查詢,從庫可查詢,但不可更新資料:

select * from t1;