postgresql 9.5 (主備庫)流複製簡單配置
阿新 • • 發佈:2019-01-28
本人是用了兩臺虛擬機器搭建主備流複製環境,操作流程很簡單:
虛擬機器 的 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;