91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL中流復制的原理是什么

發布時間:2021-07-04 16:26:35 來源:億速云 閱讀:595 作者:Leah 欄目:大數據

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

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 可以設置數據的同步和異步 

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

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

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

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

1  walsender

2  walreceiver

3  startup

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

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

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

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

4 主庫會提供 WAL Segments 并開始進行復制的數據發送的工作

PostgreSQL中流復制的原理是什么

通過

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

PostgreSQL中流復制的原理是什么

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

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

2  使用replication slot 的方式和功能來靈活的進行WAL 數據的發送。

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

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

PostgreSQL中流復制的原理是什么

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

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

首先要打開 POSTGRESQL 的復制

1   wal_level =  replica

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

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

2  synchronous_commit    相關的選項

   on , remote_apply , remote_write , local

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

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

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

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

6  synchronous_standby_name = 'standby_name one by one'

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

同時需要在standby庫去設置

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

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

hot_standby = on   允許在recovery 的狀態下,進行查詢的語句

 

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

看完上述內容,你們對PostgreSQL中流復制的原理是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤岗市| 伊金霍洛旗| 浦北县| 洪泽县| 阳曲县| 山东省| 滨海县| 顺义区| 谷城县| 繁昌县| 太保市| 阳春市| 富阳市| 从江县| 闽侯县| 高安市| 马山县| 从化市| 仙桃市| 郑州市| 栾川县| 漯河市| 平度市| 泰州市| 兰州市| 桐城市| 林周县| 咸宁市| 行唐县| 丹寨县| 栖霞市| 基隆市| 开平市| 长阳| 鄂州市| 扎兰屯市| 自治县| 凤城市| 惠东县| 房产| 永康市|