中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

PG的延遲復制及相關參數的設置影響

發布時間:2020-08-01 21:13:14 來源:網絡 閱讀:742 作者:我的二狗呢 欄目:系統運維

說明: 下文的部分內容節選自《PostgreSQL實戰》

PG的延遲復制

參數: recovery_min_apply_delay

?

某些情況下,一個后備服務器會盡快恢復來自于主服務器的 WAL 記錄。有一份數據的延時拷貝是有用的,它能提供機會糾正數據丟失錯誤。這個參數允許你將恢復延遲一段固定的時間,如果沒有指定單位則以毫秒為單位。例如,如果你設置這個參數為5min,對于一個事務提交,只有當后備機上的系統時鐘超過主服務器報告的提交時間至少 5分鐘時,后備機才會重放該事務。

?

有可能服務器之間的復制延遲會超過這個參數的值,在這種情況下則不會增加延遲。注意延遲是根據主服務器上寫 WAL 的時間戳以及后備機上的當前時間來計算。由于網絡延遲或者級聯復制配置導致的傳輸延遲可能會顯著地減少實際等待時間。如果主服務器和后備機上的系統時鐘不同步,這會導致恢復比預期的更早應用記錄。但這不是一個主要問題,因為這個參數有用的設置比服務器之間的典型事件偏差要大得多。

?

只有在事務提交的 WAL 記錄上才會發生延遲。其他記錄還是會被盡可能快地重放,這不會成為問題,因為 MVCC 可見性規則確保了在對應的提交記錄被應用之前它們的效果不會被看到。

?

一旦恢復中的數據庫已經達到一致狀態,延遲就會產生,直到后備機被提升或者觸發。在那之后,后備機將會結束恢復并且不再等待。

?

這個參數的目的是和流復制部署一起使用,但是,如果指定了該參數,所有的情況下都會遵守它。使用這個特性也會讓hot_standby_feedback被延遲,這可能導致主服務器的膨脹,兩者一起使用時要小心。

?

?

延遲備庫的搭建很簡單, 只要在 recovery.conf 里面增加個配置項即可

recovery_min_apply_delay = 1min? # 這里我測試就設置1分鐘的延遲

## 默認的支持時間單位為 ms sminhd 毫秒 分鐘 小時

?

注意:修改后,需要重啟 standby節點才能生效。

?

?

?

然后,在主庫創建表并插入一條測試數據:

postgres=# create table test_delay(id int4,create_time timestamp(0) without time zone);

postgres=# insert into test_delay (id,create_time) values (1,now());

?

然后,等一分鐘左右到延遲standby節點去查看下數據是否同步過去

?

?

延遲復制場景下 recovery_min_apply_delay 參數對同步復制的影響

同步復制情況下, 通常要 synchronous_commit 配置為 on remote_apply

on 表示 standbywal接收到 --> 寫入wal日志文件 --> 向客戶端返回成功。

standby表示 standbywal接收到 --> 寫入wal日志文件 --> 并應用到standby --> 才會向客戶端返回成功。

?

?

下面對 synchronous_commit 不同參數下,并且設置了延遲復制的測試:

?

場景1 synchronous_commit=on? 并且 recovery_min_apply_delay = 1min

注意:

synchronous_commit是設置在主庫的postgresql.conf中的(支持會話級別設置,也可以修改配置文件reload后全局生效)

recovery_min_apply_delay 是設置在standbyrecovery.conf中的。

?

這種場景下, 我們在主庫上插入一條數據,主庫會立即返回執行成功or失敗的結果。 然后我們到延遲復制的standby去查詢,發現還是會需要1min后才能查到這條數據。

也就是說, 延遲備庫場景下, synchronous_commit 配置為on 異步流復制是一致的。

?

?

?

?

場景2 synchronous_commit=remote_apply? 并且 recovery_min_apply_delay = 1min

注意:

synchronous_commit是設置在主庫的postgresql.conf中的(支持會話級別設置,也可以修改配置文件reload后全局生效)

recovery_min_apply_delay 是設置在standbyrecovery.conf中的。

?

這種場景下, 我們在主庫上插入一條數據,主庫會hang住等待1min(等待從庫完成apply操作)后,然后才能返回執行成功or失敗的結果。

然后我們到延遲復制的standby去查詢,發現立即就能查到這條數據。

?

也就是說, 延遲備庫場景下, synchronous_commit 配置為 remote_apply時,會造成主庫上面的事務的提交的阻塞。

生產環境用到延遲從庫的場景下,一定要避免設置 synchronous_commit=remote_apply (當然從性能角度考慮也很少會設置為remote_apply)

?

?

?


向AI問一下細節

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

AI

赤峰市| 白玉县| 屯留县| 名山县| 苍南县| 齐齐哈尔市| 苏尼特左旗| 锡林浩特市| 微博| 登封市| 卓尼县| 金寨县| 石泉县| 尤溪县| 江川县| 邢台县| 新干县| 东方市| 金平| 香港| 同心县| 松原市| 奈曼旗| 杭州市| 阿拉善左旗| 通榆县| 建昌县| 壶关县| 曲松县| 邵东县| 保亭| 庆云县| 武夷山市| 探索| 沅陵县| 松原市| 琼结县| 龙岩市| 阿坝县| 通河县| 通许县|