PostgreSQL流複製

來源:互聯網
上載者:User

標籤:帳號   配置環境   replica   priority   資料庫配置   create   組成   時間   postgre   

原理機制

參考--https://yq.aliyun.com/articles/51009

主備總體結構

PG主備流複製的核心部分由walsender,walreceiver和startup三個進程組成。

  • walsender進程是用來發送WAL日誌記錄的
  • walreceiver進程是用來接收WAL日誌記錄的
  • startup進程是用來apply日誌的
配置環境
主機名稱    IP地址    角色    資料目錄postgres202    192.168.1.202    primary    /home/postgres/datapostgres203    192.168.1.203    standby    /home/postgres/data
同步類型
  1. 非同步方式
  2. 同步方式
【非同步方式配置】
主要資料庫配置1. 主機192.168.1.2021.1 首先需要配置一個帳號進行主從同步。建立replica使用者佈建密碼,登入和備份許可權。CREATE ROLE replica login replication encrypted password ‘replica‘1.2 修改pg_hba.conf,增加replica使用者,進行同步。host    replication     replica     192.168.1.0/24              md5這樣,就設定了replica這個使用者可以從192.168.1.0對應的網段進行流複製請求。1.3 修改postgresql.conf,注意設定下下面幾個地方:wal_level = hot_standby   # 這個是設定主為wal的主機max_wal_senders = 5       # 這個設定了可以最多有幾個流複製串連,差不多有幾個從,就設定幾個wal_keep_segments = 128   # 設定流複製保留的最多的xlog數目wal_sender_timeout = 60s  # 設定流複製主機發送資料的逾時時間max_connections = 100     # 這個設定要注意下,從庫的max_connections必須要大於主庫的1.4 重啟主庫2. 備資料庫配置主機192.168.1.2032.1 使用pg_basebackup建備庫pg_basebackup -F p --progress -D /home/postgres/data -h 192.168.1.202 -p 5432 -U replica --password這裡使用了pg_basebackup這個命令,/home/postgres/data這個目錄是空的成功之後,就可以看到這個目錄中現有的檔案都是一樣的了。2.2 進入到/home/postgres/data目錄,修改recovery.conf,只要修改幾個地方就行了standby_mode = on  # 這個說明這台機器為從庫primary_conninfo = ‘host=192.168.1.202 port=5432 user=replica password=replica‘  # 這個說明這台機器對應主庫的資訊recovery_target_timeline = ‘latest‘ # 這個說明這個流複製同步到最新的資料2.3 postgresql.conf中也有幾個地方要進行修改max_connections = 200              # 一般查多於寫的應用從庫的最大串連數要比較大hot_standby = on                   # 說明這台機器不僅僅是用於資料歸檔,也用於資料查詢max_standby_streaming_delay = 30s  # 資料流備份的最大延遲時間wal_receiver_status_interval = 10s # 多久向主報告一次從的狀態,當然從每次資料複製都會向主報告狀態,這裡只是設定最長的間隔時間hot_standby_feedback = on          # 如果有錯誤的資料複製,是否向主進行反饋2.4 啟動備【主庫】查看配置結果postgres=# select * from pg_stat_replication ;-[ RECORD 1 ]----+------------------------------pid              | 1793usesysid         | 24576usename          | replicaapplication_name | walreceiverclient_addr      | 192.168.1.203client_hostname  | client_port      | 32250backend_start    | 2017-09-01 22:23:16.924496+08backend_xmin     | 1676state            | streamingsent_location    | 0/60003E0write_location   | 0/60003E0flush_location   | 0/60003E0replay_location  | 0/60003E0sync_priority    | 0sync_state       | async

【非同步更改為同步方式】

1. 主要資料庫配置主機192.168.1.2021.1 修改postgresql.confsynchronous_standby_names = ‘standby01‘2. 備資料庫配置主機192.168.1.2032.2 vi recovery.conf standby_mode = onprimary_conninfo = ‘application_name=standby01 host=192.168.1.202 port=5432 user=replica password=replica‘recovery_target_timeline = ‘latest3.重啟動主備庫【主庫】查看postgres=# select * from pg_stat_replication ;-[ RECORD 1 ]----+----------------------------pid              | 1706usesysid         | 24576usename          | replicaapplication_name | standby01client_addr      | 192.168.1.203client_hostname  | client_port      | 59550backend_start    | 2017-09-01 23:36:05.7176+08backend_xmin     | 1676state            | streamingsent_location    | 0/70000D0write_location   | 0/70000D0flush_location   | 0/70000D0replay_location  | 0/70000D0sync_priority    | 1sync_state       | sync

 

PostgreSQL流複製

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.