PostgreSQL Patroni 3.0 新功能規劃 2023年 紐約PG 大會 (音譯)

開頭還是介紹一下群,如果感興趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有問題,有需求都可以加群群內有各大數據庫行業大咖,CTO,可以解決你的問題。加群請聯系 liuaustin3 ,(共1730人左右 1 + 2 + 3 + 4 +5) 4群(230+),另歡迎 OpenGauss 的技術人員加入。

d6f04a65ca24c5bcce0cfdc00b817b75.png

基于alexander 的俄國口音,部分內容未能完全翻譯。

b405f4c5a5fdb307dfd659638e2fa0db.png

大家好我叫亞歷山大.庫是金,今天我給大家介紹的是patroni 3.0的一些新的規劃和功能,主要有以下的一些議題,功能介紹,問題的修復,以及新的功能。

4f6816625fd6a8e3bb7b961ea6dd6071.png

0b572a3d50a76cdbf09f1552057f6f9e.png

Patrnoi 本身支持多種部署,包含最小化部署,支持多種的分布式組件,主要是ETCD ,通過分布式服務,來自動發現節點的狀態情況,并將狀態進行匯總,通過leader key 來標識當前的primary point 節點,同時這里狀態會根據TTL 進行狀態在獲取,key 是有租約的,所以這些key會在租約到期失效后,進行key 的更新。

9e7865aee4ddf1afda8aaae7e3744c36.png

d541b2dbb1fde24d1174119bc2f313ae.png

當主庫出現故障,無法進行KEY 的狀態更新,相關的主鍵的信息就會被抹去,這里的故障的起因,有網絡的原因或者主機的原因,數據庫服務的原因等等。當超過最大的等待時間后,剩余的兩個節點 B C 開始進行選主的競爭,因為他們都發現A 節點不存在了。

1c9d125b70f4d7e2dc5ee6474c3acf18.png

4579a5cb98b69edd383f2909dd4ed1fe.png

1710bce87b031f9fe09e6f58ebf1382e.png

在確認A 節點不存在無法進行連接的情況下, B C 會開始申請主節點,經過分布式選主,最終成功申請到leader的KEY 的節點將成為新的主節點。

713bab1452a7c96ac7d95f3aead233b8.png

e6f140815879e4995705fa59e50b0313.png

在之前的版本的PATRIONI 中有一個問題關于 DCS 導致的誤切換的問題,DCS(Distributed configuration store) ,之前的版本的patroni 主要依賴DCS 來解決LEADER 的選舉和檢測網絡分區的工作,這里primary 節點必須在DCS 中更新數據,才能持續的成為主節點,但如果更新失敗,則無法成為主節點,PG 會將主節點降級,為解決這個問題,我們引入了一個新的選項,failsafe_mode 他通過在DCS/config 中的全局動態配置進行啟用,這里如果主節點可以通過patroni rest api訪問到集群中的其他成員,那么這個主節點即使無法更新數據,那么也會持續保留主節點的狀態,不會隨意降級。

55ac1d384b71e2c978eeb5ad893effc2.png

另一個更新主要是在生產系統中,有使用邏輯復制槽的情況,在進行主從切換的過程中,復制槽會丟失的問題,在之前我們不允許在Patroni 的系統中,重建邏輯復制槽,現在我們可以通過函數pg_replication_slot_advance 來重建復制槽。

5b97614ad0480a626a1a522920006336.png

同時在3.0?針對支持多個同步方式的從庫,切換是基于replication lag 的,切換中會更傾向于安全切換。

a5c2af62ced0c46c0331da9af862165d.png

支持PostgreS 13版本中PG_REWIND 中的?--restore-target-wal 的功能,通過但這里不包括在Debain/Ubuntu 中部署的PG13 14 版本。

1bd6d9b8546fd46c4a3d7550fd34a448.png

在配置文件中,也進行了更新,比如針對與配置的參數預先發現其中的錯誤的問題。

d59f31af78e1153c06e6409efba1c8a0.png

另外還有一些軟件方面的改進和增強,我們徹底不在支持低于3.6一下的PYTHON ,?并且要使用psycopg3 ,這里我們也會在操作pg_ctl promote 命令前來通過預先的一個腳本,我們認為是一個鉤子,來進行一些安全性的判斷和切換前的預先的工作。通過也在關閉節點命令前會通過腳步來做一些準備工作,必然把pgboucer先暫停了的工作等等。

cb270d27411acd5f69dddc47a9dd538a.png

e07b3786dabd17886010f2baa4fc8614.png

之前一些鏈接在判斷的時候,是長連接,在這樣的方式下會等待很長時間來完成準備的工作,這邊進行改善,通過TTL 秒的方式將連接進行關閉。

26ec533ab20955ba32360f91e6220980.png

另外在判斷PG 是否存活中,也需要去檢測PGDATA 變量, 之前是通過os.listdir()函數來進行判斷,但是這里反映的速度很慢,這里我們改變方式通過pg_control文件來獲得第一次的數據。

e7473c73f913c95377a468a9f33f4ed4.png

在之前的版本,patroni 在更新狀態前會等待postgres 被關閉,但基于PG的關閉在某些情況比較慢,而現在patroni 判斷一個節點的關閉是通過pg_controldata 中打印出shut down即可,判斷節點關閉。

be3cc7774d6c2e4443efec1cb6d723fa.png

今天是星期六,外面的陽光真好,我沒有那么多的時間說,(這不是杜撰這是他的原話),5年前PG10 添加的功能,關于同步復制節點的設置,我們看下面的例子 ANY2(node1 node2)? ANY2(node1,node2,node3),如果要切換我應該切換那個,誰能告訴我怎么辦??

c9ee96fe76a0c787134ea608cb426e0f.png

7aa0c07687a8bd678057c11741b638cb.png

當節點M4加入后,怎么修改相關的配置選擇項,怎么能保證修改的選擇項是正確的。

e6bcd1220d1f6d162e93447b42aea803.png

另外我們也準備在patroni 中整合關于復制槽failover的部分,雖然patroni我們有了自己的解決方案,但是我們有一些問題沒有解決,所以我們在后面要整合新的解決方案,來彌補我們自己的解決方案的問題。

dfe6aac7907748815af75eea4c7e888d.png

除此以外,我們還將添加對于citus的支持的部分,對于read scaling 的改造是簡單的。

1512c653c8ff93b82935a830ac420091.png

69025cb5aa31194e522fab2c1b294b51.png

fadec1e002ea09ef2c899045922c1b02.png

基于我們之前的一些問題,我們建議老的版本盡快升級到3.0?.

62668834ce518898cd72d87b9be4a853.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168005.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React Hooks函數之useRef

useRef 是 React 中常用的 Hook 之一,它返回一個可變的 ref 對象,其 .current 屬性被初始化為傳入的參數(initialValue)。返回的 ref 對象在組件的整個生命周期內保持不變。 以下是一些使用 useRef 的場景和示例: 1、…

Mathorcup數學建模競賽第一屆-【媽媽杯】B題:圖像識別

目錄 知識儲備 傳統圖像處理方法進行瑕疵檢測 傳統算法方向的選擇 瑕疵檢測關注的兩個問題 瑕疵的標注

【技術分享】RK3399 Ubuntu通過Python實現錄音和播放功能

?本文基于IDO-SBC3968 Ubuntu 系統通過Python腳本實現錄音和播放功能。 IDO-SBC3968采用RK3399國產六核64位CPU高性能處理器,支持4K HDMI2.0顯示,接口豐富,擁有千兆以太網,全協議TypeC接口,USB3.0 ,eDP 和…

Redis高并發緩存架構

前言: 針對緩存我們并不陌生,而今天所講的是使用redis作為緩存工具進行緩存數據。redis緩存是將數據保存在內存中的,而內存的珍貴性是不可否認的。所以在緩存之前,我們需要明確緩存的對象,是否有必要緩存,怎…

ElasticSearch之配置

ElasticSearch主要的配置文件,如下: elasticsearch.yml,ElasticSearch的相關參數。jvm.options,JVM的相關參數。log4j2.properties,日志的相關參數。 默認情況下,ElasticSearch從$ES_HOME/config目錄下讀…

1 動態規劃解不同的子序列

來源: LeetCode第115題 難度: 困難 問題描述 給定一個字符串S和一個字符串t,計算在S的子序列中t出現的個數。 注解: 字符串的一個子序列是指,通過刪除一些(也可以不刪除)字符且不干擾剩余字符的相對位置所組成的…

2022年03月 Scratch(三級)真題解析#中國電子學會#全國青少年軟件編程等級考試

Scratch等級考試(1~4級)全部真題?點這里 一、單選題(共25題,每題2分,共50分) 第1題 以下四個選項中,運行哪個積木塊,可能得到523這個數值? A: B: C: D: 答案:B 四個選項都遵循統一的公式:隨機數ⅹ10+3=523,因此可以得出隨

ZXing創建二維碼位圖

Android生成二維碼通常使用ZXing庫,其中提供了QRCodeWriter類。QRCodeWriter可將字符串編譯為位矩陣BitMatrix,然后我們可以將位矩陣轉為Int數組,通過bitmap.setPixels()方法將數組繪制于位圖上。 1. 添加依賴 //Gradle Scripts -> buil…

和數集團出席中科院上海高研院?第三十三期“高研交叉論壇”信息能源融合專場

2023年11月21日,中國科學院上海高等研究院第三十三期“高研交叉論壇”信息能源融合專場在上海高研院成功舉辦。本次論壇由中國科學院上海高等研究院智能信息通信技術研究與發展中心、中國科學院低碳轉化科學與工程重點實驗室、中科院和數智能區塊鏈與能源系統應用聯…

【文末送書】機器學習高級實踐

2023年初是人工智能爆發的里程碑式的重要階段,以OpenAI研發的GPT為代表的大模型大行其道,NLP領域的ChatGPT模型火爆一時,引發了全民熱議。而最新更新的GPT-4更是實現了大型多模態模型的飛躍式提升,它能夠同時接受圖像和文本的輸入…

仿 美圖 / 餓了么,店鋪詳情頁功能

前言 UI有所不同,但功能差不多,商品添加購物車功能 正在寫,寫完會提交倉庫。 效果圖一:左右RecyclerView 聯動 效果圖二:通過點擊 向上偏移至最大值 效果圖三:通過點擊 或 拖動 展開收縮公告 效果圖四&…

SpringBoot3核心原理

SpringBoot3核心原理 事件和監聽器 生命周期監聽 場景:監聽應用的生命周期 可以通過下面步驟自定義SpringApplicationRunListener來監聽事件。 ①、編寫SpringApplicationRunListener實現類 ②、在META-INF/spring.factories中配置org.springframework.boot.Sprin…

上市公司-股權性質數據(國企、央企)2003-2022年

上市公司-股權性質數據(國企、央企)是一個針對上市公司的數據集,主要涵蓋了A股公司股權性質的詳細信息,區分了公司是否為民營企業、國企或央企。這份數據集提供了每家上市公司的股權結構背景,對投資者、市場分析師和經…

Shell循環:for(二)

一、通過用戶列表文件創建用戶 需求:通過用戶列表文件創建用戶 [rootlocalhost ~]# cat user.txt qian yoa huang演示: [rootlocalhost ~]# vim foruser.sh #編寫腳本 #!/bin/bash for i in cat user.txt do useradd $i if [ $? -eq 0 ] thenech…

2023年亞太杯數學建模C題新能源汽車成品文章(思路模型代碼成品)

一、翻譯 新能源汽車是指采用先進的技術原理、新技術和新結構,以非常規車用燃料(非常規車用燃料是指汽油和柴油以外的燃料(非常規車用燃料是指汽油和柴油以外的燃料),并集成了汽車動力控制和驅動等先進技術的汽車。新能源汽車包括…

C++入門第九篇---Stack和Queue模擬實現,優先級隊列

前言: 我們已經掌握了string vector list三種最基本的數據容器模板,而對于數據結構的內容來說,其余的數據結構容器基本都是這三種容器的延申和擴展,在他們的基礎上擴展出更多功能和用法,今天我們便來模擬實現一下C庫中…

superset 后端增加注冊接口

好煩啊-- &#xff1a;< 1.先定義modes: superset\superset\models\user.py # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information…

Tars框架 Tars-Go 學習

Tars 框架安裝 網上安裝教程比較多&#xff0c;官方可以參數這個 TARS官方文檔 (tarsyun.com) 本文主要介紹部署應用。 安裝完成后Tars 界面 增加應用amc 部署申請 amc.GoTestServer.GoTestObj 名稱不知道的可以參考自己創建的app config 點擊刷新可以看到自己部署的應用 服…

獲取當日的日期三個月后的日期

使用 java.time.LocalDate 類進行計算 import java.time.LocalDate;public class ThreeMonthsLaterExample {public static void main(String[] args) {// 獲取當前日期LocalDate currentDate LocalDate.now();// 添加三個月LocalDate threeMonthsLater currentDate.plusMont…

【阿里云服務器】2023安裝寶塔面板8.0.4

文章目錄 前言安裝寶塔遠程鏈接服務器輸入安裝寶塔命令放行寶塔端口 一鍵安裝環境附錄重裝系統Linux系統卸載寶塔方式一方式二 遇見的問題 前言 鏡像是CentOS 7.9.4 安裝寶塔 遠程鏈接服務器 輸入安裝寶塔命令 yum install -y wget && wget -O install.sh https://…