Postgresql主從配置

來源:互聯網
上載者:User

標籤:最新   sel   丟失   本機   預設   bsp   pass   安裝   效果   

 

一、   簡介

PostgreSql在9.0之後引入了主從的流複製機制,所謂流複製,就是從伺服器通過tcp流從主伺服器中同步相應的資料。這樣當主伺服器資料丟失時從伺服器中仍有備份。

與基於檔案記錄傳送相比,流複製允許保持從伺服器更新。 從伺服器串連主伺服器,其產生的流WAL記錄到從伺服器, 而不需要等待主伺服器寫完WAL檔案(關於Wal可以看看官方的說法https://www.postgresql.org/docs/10/static/different-replication-solutions.html)。

PostgreSQL流複製預設是非同步。在主伺服器上提交事務和從伺服器上變化可見之間有一個小的延遲,這個延遲遠小於基於檔案記錄傳送,通常1秒能完成。如果主伺服器突然崩潰,可能會有少量資料丟失。

同步複製必須等主伺服器和從伺服器都寫完WAL後才能提交事務。這樣在一定程度上會增加事務的回應時間。

配置同步複製僅需要一個額外的配置步驟: synchronous_standby_names必須設定為一個非空值。synchronous_commit也必須設定為on。

注: 主從伺服器所在節點的系統、環境等最好一致。PostgreSQL版本也最好一致,否則可能會有問題。

二、   安裝部署(使用Ubuntu的普通使用者安裝部署)

角色

IP地址

系統版本

資料庫版本

主伺服器

192.168.100.71

Ubuntu18.04  amd64

PostgreSQL10

從伺服器

192.168.100.70

Ubuntu18.04  amd64

PostgreSQL10

 

註:18.04版本預設的PostgreSQL版本是10,要安裝其他版本可以採用編譯的方式或者apt-get 指定版本號碼安裝

 

1、兩台伺服器都要安裝PostgreSQL

sudo apt-get updatel

sudo apt-get install postgresql

sudo vi /etc/postgresql/10/main/postgresql.conf

在檔案末尾添加或者找到該行,將peer改為trust

local         all           all        trust

  

重啟PostgreSQL服務

sudo service postgresql restartt

這樣PostgreSQL就安裝完畢

2、配置主伺服器

切換成postgres使用者

sudo su – postgres

進入資料庫,建立一個普通的資料庫使用者使用者進行主從同步(只需賦予登入和複製的許可權即可)

 

 postgres=# create role guoxm login replication encrypted password ‘guoxm‘

然後退出

postgres=# \q

在exit退出到原使用者

然後,修改postgresql的pg_hba.conf,配置運行剛剛建立的guoxm使用者可以進行串連

sudo vi /etc/postgresql/10/main/pg_hba.conf

在檔案尾添加如下兩行

host   all all  192.168.100.70/32   trust   #運行70伺服器串連到本機host    replication  guoxm    192.168.100.70/32   md5   #運行guoxm使用者在70上複製本機資料

  

註:第二個的角色必須是replication

最後,再次配置postgresql.conf

sudo vi /etc/postgresql/10/main/ postgresql.conf

這次需要配置的是主機的角色

listen_addresses = ‘*’   #監聽所有iparchive_mode = on   #開啟歸檔模式archive_command = ‘cp %p /var/lib/postgresql/10/main/%f’   #歸檔命令wal_level = hot_standby    #熱備模式max_wal_senders = 1   #最多有1個流複製串連wal_sender_timeout = 60s    #流複製逾時時間max_connections = 100   #最大連線時間,必須要小於從庫的配置

  

儲存退出後,重啟資料庫服務

sudo service postgresql restartt

 

3、配置從伺服器

首先,先測試一下是否能串連主伺服器

psql -h 192.168.100.70  -U  postgres

如果可以,說明主機配置正常,否則檢查一下主機的pg_hba.conf配置

進入到postgres使用者

sudo su - postgres

先清空main目錄下的資料(main檔案夾就是PostgreSQL資料的隱藏檔夾)

rm -rf 10/main/*

或者

rm -rf /var/lib/postgresql/10/main/*

因為PostgreSQL的home目錄就在/var/lib/postgresql中

所以上面兩條命令到達的效果是一樣的

然後,開始從主伺服器上copy資料到本機上,這一步叫做“基礎備份”

pg_basebackup -h 192.168.100.71 -U guoxm –D 10/main/ -X stream –P

或者

pg_basebackup -F p --progress -D 10/main/ -h 192.168.100.71 -p 5432 -U guoxm --password

pg_basebackup是PostgreSQL內建的基礎備份工具

這樣,基礎備份就完成了

然後,建立recovery.conf用於從庫恢複從主庫擷取的資料

vi recovery.conf

然後編輯如下配置

standby_mode = on   #表示該節點是從庫primary_conninfo = ‘host=192.168.100.71  post=5432  user=guoxm  password=guoxm’#從機資訊和串連使用者recovery_target_timelint = ‘latest’ #說明恢複到最新狀態

  

保持並退出後,

複製或在移動到main檔案夾中

cp recovery.conf   10/main/

或者

mv recovery.conf   10/main/

然後,exit退出到原使用者

最後,配置從機的postgresql.conf檔案

sudo vi /etc/postgresql/10/main/postgresql.conf

在檔案末尾添加如下配置

wal_level = hot_standby    #熱備模式max_connections = 300   #最大連線時間,必須要小於從庫的配置hot_standby = on #說明這台機器不僅用於資料歸檔,還可以用於資料查詢max_standby_streaming_delay = 30s #流備份的最大延遲時間wal_receiver_status_interval = 10s  #向主機彙報本機狀態的間隔時間hot_standby_feedback = on #r出現錯誤複製,向主機反饋

  

儲存並退出

到這裡,從機配置完成

重啟資料庫服務

sudo service postgresql restart

 

4、驗證主從配置是否成功

在主機上,切換到postgres使用者

sudo su – postgres

進入資料庫

 

 

執行如下查詢

select client_addr,sync_state from pg_stat_replication;

如果看到如下查詢結果

 

 

說明192.168.100.70是從伺服器,在接收流,而且是非同步流複製。說明主從配置成功

註:必須切換到postgres使用者下進行查詢

 

此外,還可以查看相關進程來驗證是否配置成功

在主機、從機上分別執行

ps aux | grep postgres

主機上可以看到正在向從機發送資料流

 

 

從機上可以看到正在接收資料流

 

 

到此,主從配置完成;

 

參考連結:

https://www.jianshu.com/p/2d07339774c0

https://www.cnblogs.com/yjf512/p/4499547.html

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.