PostgreSQL使用pg_basebackup搭建主備流複製環境

來源:互聯網
上載者:User

標籤: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搭建主備流複製環境

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.