真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

PostgreSQL中流復制的原理是什么

今天就跟大家聊聊有關PostgreSQL中流復制的原理是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。

井岡山ssl適用于網站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

和MySQL 不同,MYSQL的復制是基于邏輯復制,而PG 具有流復制和邏輯復制兩個功能。提到流復制如果讓我理解,想到就是ORACLE Dataguard 這樣的功能,當然ORALCE 也有流復制和高級復制等功能,這里就不再提及。

這里復制的技術很多,有shared disk failover , write-Ahead log shipping , logincal replication , 等等今天我們要學習的就是 

Write-ahead log shipping ,這個功能。

那使用這個功能對我們有什么好處

1 它是一個內建功能

2 連接的方式是通過 wal ahead log 的方式

3 沒有特別的硬件需求

4 對主機的運行基本沒有影響

5 可以設置數(shù)據(jù)的同步和異步 

6 Standy 庫是可以進行只讀的活動

讀完上面的點,發(fā)現(xiàn)通過流的方式復制其實比邏輯的復制好的地方,就是1 沒有事務沖突  2 不會有事務較大,造成延遲的問題  3 數(shù)據(jù)在切換過程中,不會有數(shù)據(jù)丟失的擔心。

以上都是MYSQL 在復制的過程中,我可能會擔心的問題。

流復制是PostgreSQL 在 9.0 推出的功能,其中主要由三個進程

1  walsender

2  walreceiver

3  startup

這三者是怎么工作的我們的畫一個圖來 分析一下。

1  Standby 庫通過 walreciever 來嘗試連接到 主庫

2  Primary 主庫會通過wal sender來進行 tcp -IP 方式的連接,握手確認連接

3  從庫的standby 會發(fā)送目前他最后的一次的LSN 號碼給主庫,從庫的LSN 號必然必須小于主庫(如果是反向的,說明主庫的數(shù)據(jù)落后于從庫,或是其他問題,這樣的復制是沒有辦法進行的)

4 主庫會提供 WAL Segments 并開始進行復制的數(shù)據(jù)發(fā)送的工作

PostgreSQL中流復制的原理是什么

通過

select application_name,state from pg_stat_replication;以下的語句來查看當前庫是否在進行sender 的狀態(tài)。

PostgreSQL中流復制的原理是什么

說到這里,其實每種數(shù)據(jù)庫的復制都會存在一個問題就是如果STANDBY 庫重新啟動或者STANDBY 沒有跟上 PRIMARY 庫的發(fā)送日志的速度,則結果就是復制失敗。而PostgreSQL有兩個方法來盡力拯救這樣的事情,

1  提高 wal_keep_segments  這讓我想起了 MongoDB 提高OPLOG 的存儲大小來讓MONGODB 復制不會產生類似的問題。

2  使用replication slot 的方式和功能來靈活的進行WAL 數(shù)據(jù)的發(fā)送。

其實大白話就是  要不我在 發(fā)送端做點什么,要不我在接收端做點什么。

同時我們可以通過 sent_lsn, write_lsn,flush_lsn, replay_lsn, 來判斷我們的復制的狀態(tài)如何。

PostgreSQL中流復制的原理是什么

3  PG 的復制中,可以是多從的結構。

說完這些,需要探討配置流復制中的參數(shù)了

首先要打開 POSTGRESQL 的復制

1   wal_level =  replica

確定寫入WAL 的信息的多少, 如果想調整這個參數(shù),需要在開啟服務前就進行設置

如果設置為 minimal level 則類似 create table as  create index , copy 等命令的日志就不會被記錄

2  synchronous_commit    相關的選項

   on , remote_apply , remote_write , local

默認的安全值是ON  同時 如果你選擇 remote_apply  或者 remote_write  則會等待standby的主機進行相關的回饋,主庫才能繼續(xù)后面操作。

3 max_wal_sender  設置最大的primary standby的 連接數(shù),默認為10

4  wal_keep_segments 這里指定最大可以保持多少  wal 日志的數(shù)量,一個WAL 的日志數(shù)量是 16MB 。 

5 wal_sender_timeout  默認檢測 standby 的沒有響應的時間默認是60 秒

6  synchronous_standby_name = 'standby_name one by one'

  在PG的設置中有一個功能是可以設置一個備用機,與PG 的主機進行流復制,當備用機停止工作的時候,主機也停止工作。在上面的參數(shù)選項中,需要填寫具體的那臺standby機器需要,與主庫中這樣的關系。

同時需要在standby庫去設置

需要在從庫的recovery.conf 中來設置

7  以下的設置時在 standby下進行的

hot_standby = on   允許在recovery 的狀態(tài)下,進行查詢的語句

 

其他,在配置完相關的參數(shù)后,需要使用 pg_basebackup 將主庫的數(shù)據(jù)拉到備庫,配置參數(shù)后啟動備庫,則類似 ORACLE dataguard  的PG 流復制就生效了。

看完上述內容,你們對PostgreSQL中流復制的原理是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


文章名稱:PostgreSQL中流復制的原理是什么
URL網址:http://weahome.cn/article/jjpidp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部