標籤:postgresql database 備份 centos
今天用pg_basebackup搭建了主備流複製環境,操作流程很簡單,可線上操作,相當方便。
環境均為CentOS6.6 + postgresql9.4,我用已安裝的庫做測試,連接埠不一致,不影響環境搭建,但要注意某些相關配置:
主:192.168.3.201 port:5431
備:192.168.3.202 port:5432
資料庫安裝過程省略。可參考
http://blog.csdn.net/baiyinqiqi/article/details/45560229
主庫參數配置postgresql.conf:
wal_level = hot_standby
checkpoint_segments = 16
checkpoint_timeout = 5min
archive_mode = on
max_wal_senders = 3
wal_keep_segments = 16
主庫建立具有replication許可權的使用者:
create user rep replication login encrypted password ‘udbac‘;
主庫修改認證設定檔,添加rep的replication認證資訊:
host replication rep 192.168.3.202/32 md5
主庫重載資料庫配置資訊:pg_ctl reload
從庫只安裝資料庫軟體,不進行資料庫初始化。
根據主庫相關路徑配置,建立日誌目錄,資料表空間目錄。
比如主庫的資料表空間如下:
在從庫中建立相同的目錄,並授權給postgres使用者:
[[email protected]_202 postgres]# mkdir -p /pg_tablespace/pg_5431/ts_bigtable
[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace
[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431
[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431/ts_bigtable
[[email protected]_202 postgres]# mkdir -p /pg_tablespace/pg_5431/ts_udbac
[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431/ts_udbac
[[email protected]_202 postgres]# chmod 0700 /pg_tablespace
[[email protected]_202 postgres]# chmod 0700 /pg_tablespace/pg_5431
[[email protected]_202 postgres]# chmod 0700 /pg_tablespace/pg_5431/ts_bigtable
[[email protected]_202 postgres]# chmod 0700 /pg_tablespace/pg_5431/ts_udbac
當然$PGDATA目錄同樣不可少。
配置從庫無密碼訪問主庫的密碼檔案:
在postgres使用者home目錄下建立.pgpass檔案,添加如下內容:
192.168.3.201:5431:replication:rep:udbac
.pgpass檔案許可權為0600:chmod 0600 .pgpass
測試無密碼是否可串連主庫:
psql -h 192.168.3.201 -p 5431 -U rep -d postgres
使用pg_basebackup進行Database Backup恢複:
pg_basebackup -D $PGDATA -F p -X stream -v -P -h 192.168.3.201 -p 5431 -U rep
查看資料檔案恢複情況:
資料表空間恢複情況:
配置備庫參數postgresql.conf:
hot_standby=on
注意:我這裡主備庫所用連接埠不一樣,需要詳細修改設定檔,比如port,有些目錄是以連接埠命名的也需要修改。第一次做就碰到找不到log日誌的情況,因為我的安裝目錄帶有連接埠號碼,所以找不到。一般情況下,盡量使用一樣的連接埠。
配置備庫recovery.conf設定檔:
cp $PGHOME/share/recovery.conf.sample $PGDATA/recovery.conf
vi $PGDATA/recovery.conf
修改下列參數:
standby_mode = on
primary_conninfo = ‘host=192.168.3.201 port=5431 user=rep‘
trigger_file = ‘/usr/local/postgresql/9.4.1/pg5432/data/postgresql.trigger.5431‘
啟動備庫,查看服務進程,請注意有一個wal receiver progress進程,這個是接收wal日誌的進程:
同樣主庫也多了一個wal sender process進程,用於日誌發送。
測試:
在主庫中建立一張表tbl6,並插入一些資料:
在從庫中進行查詢,從庫可查詢,但不可更新資料:
參考文章:
http://francs3.blog.163.com/blog/static/4057672720136210240967/
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
PostgreSQL使用pg_basebackup搭建主備流複製環境