《2024PG大會-唐成-PostgreSQL配套開源軟件CLup和ZQPool詳解(1)-唐成(最新版).pdf》由會員分享,可在線閱讀,更多相關《2024PG大會-唐成-PostgreSQL配套開源軟件CLup和ZQPool詳解(1)-唐成(最新版).pdf(33頁珍藏版)》請在三個皮匠報告上搜索。
1、PostgreSQL中文社區第13屆PostgreSQL中國技術大會聚焦云端創新匯聚智慧共享唐成PostgreSQL配套開源軟件CLup和ZQPool詳解PostgreSQL中文社區開源好用的CLupCLup解決了什么問題03開源連接池軟件ZQPool04個人介紹0102PostgreSQL中文社區目錄contentsPoarDB開源新玩法ConshFS0501個人介紹PostgreSQL中文社區PostgreSQL中文社區個人介紹PostgreSQL修煉之道:從小工到專家的作者,開源連接池軟件ZQPool作者。資深數據庫架構師,從業近20年,擁有十幾年數據庫、操作系統、存儲領域的工作經驗。精
2、通c/c+、golang和python,擅長使用C語言做數據庫內核開發以及使用golang和python寫高可用、數據同步、遷移等應用程序。02開源好用的CLupPostgreSQL中文社區PostgreSQL中文社區關于CLupCLup是由乘數科技自主研發和開源的PostgreSQL/PolarDB管理平臺,用戶可以在CLup中輕松管理、維護PostgreSQL/PolarDB數據庫高可用集群、管理VIP資源和ZQPool數據庫連接池。PostgreSQL中文社區高可用集群數據庫維護高可用集群管理CLup提供完整的數據庫高可用集群解決方案,一鍵創建并管理PostgreSQL/PolarDB高
3、可用集群,并實現故障自動切換、VIP池靈活調度以及ZQPool連接池高效管理,確保數據庫服務的持續穩定與高效運作。CLup整合了強大的數據庫創建與管理能力,能夠實時監控并操控PostgreSQL/PolarDB數據庫的會話活動及鎖的狀態,實現對數據庫資源的精細控制與高效運維。PostgreSQL中文社區設計理念專注造就專業,CLup專注于PostgreSQL及其相關衍生數據庫的運維管理,深挖PG生態內核,追求卓越的專業水準。乘數科技堅持深耕PG領域,打造既有深度又易于使用的CLup數據庫管理平臺,助力用戶實現高效的數據庫運維與管控。PostgreSQL中文社區設計理念防止hang的秘技:探測數
4、據庫是否正常的過程是通過啟動新的子進程,然后要求子進程在指定的超時時間內返回,如果在指定的時間內沒有返回,則認為出現問題。在很多故障時,會讓探測腳本hang住,原因有很多,首先是TCP協議不是消息的方式,而是流的方式。接收一個消息時,需要事先知道消息的長度,然后一直接收到指定長度的消息,如果沒有接收到指定長度的消息,則會一直等待,這時就hang了PostgreSQL中文社區擁抱開源CLup一經開源,便受到了廣泛的關注。開源地址:https:/ 9.4以上操作系統不支持windows,不支持國產操作系統,支持CentOS、Rhel、Debian,不支持windows,不支持國產操作系統,支持Ce
5、ntOS、Rhel、Debian,容災管理無,切換后,需手工調整無,切換后,需手工調整級聯流復制的管理功能無弱WEB管理不支持有限支持,二次開發多套集中管理不支持不支持是否有VIP無,需自己寫腳本無,需自己寫腳本CLup開源軟件開源社區支持PostgreSQL9.5以上不支持windows,支持CentOS、Rhel、Debian以及國產操作系統UOS、銀河麒麟有,切換后無需任何手工工作強,任意級聯關系,管理簡單支持支持是,自動PostgreSQL中文社區方案對比對比維度RepmgrPatroni+etcd切換方式自動/手動自動/手動切換可靠性中等,Repmgr整個程序是部署在數據庫主機上,如
6、果主機出現問題,Repmgr探測進程可能會不可用中等,etcd是golang編寫的,而patroni是python寫的,etcd的python客戶端有一些問題,在特殊的網絡與etcd的配合不是太好復雜切換邏輯的支持弱,需要自己寫腳本無FailBack(原主庫重新加回集群)手工,需要寫腳本,操作有一定的風險手工,需要寫腳本,操作有一定的風險配置復雜度中等1 安裝Repmgr包2 配置Repmgr參數文件復雜在參數文件中配置集群的名稱監控地址、集群切換的時間點、PostgreSQL數據庫的信息等十幾個配置參數即可啟動。參數文件為平面文件,使用與Python相同的縮進格式。備機可用性備機只讀備機只讀
7、備機提供只讀服務弱,高可用切換后需要自行處理只讀服務弱,高可用切換后需要自行處理只讀服務切換時間3分鐘30秒故障環境是否可自動恢復機可靠性否是,但有風險。默認可自動進行修復,可實現基于主節點自動恢復,即使備機數據文件全部刪除,也可自動恢復,不需要人為干預。ssh通道安全需要打通主備庫機器之間的ssh免密登陸,有一定安全風險無需要打通主備庫機器之間的ssh免密登陸CLup自動/手動高,通過連接主庫去更新心跳表是否成功來判斷數據庫是否可用強一鍵加回,無風險。WEB向導,簡單備機只讀,自動負載均衡查詢功能可提供只讀VIP和負載均衡30秒是,無風險。默認為手動一鍵恢復,也可以設置為自動進行修復。無需要
8、打通主備庫機器之間的ssh免密登陸,無安全風險PostgreSQL中文社區一行命令輕松部署體驗輸入下面一鍵部署命令,按下回車鍵后,站起來接杯水,開始體驗OpenCLup!wget-qO/tmp/clup.sh-no-check-certificate https:/ openclup install04開源連接池軟件ZQPoolPostgreSQL中文社區PostgreSQL中文社區為什么要開發ZQPoolJava應用已經有了連接池C3P0、DBCP,為啥還需要數據庫側的連接池軟件?已經有了pgbouncer和pgpool-II,為啥需要ZQPool?先說pgpool-II:pgpool-II
9、雖然名字中有pool,實際上起不到連接池作用?是不是很詫異?通常連接池是需要解決到數據庫本身連接太多的問題前面到pgpool-II有1萬個連接,pgpool-II到數據庫中就需要有1萬個連接?pgpool-II是一個偽裝成連接池的讀寫分離的軟件那么pgbouncer呢?pgbouncer是一個真實的連接池軟件但舊版本的pgbouncer其通常情況下不能減少java應用到數據庫上的連接壓力?為什么呢?聽我給大家娓娓道來PostgreSQL中文社區應用側的連接池不能解決什么問題有了C3P0、DBCP等等java應用側的連接池,軟件是否還需要數據庫側的連接池軟件?應用的機器數目遠遠超過數據庫機器。C
10、3P0、DBCP等等這些應用側的連接池并不能跨機器復用假設應用的臺數300臺,每臺機器上的應用C3P0或DBCP的連接數給30,這樣到數據庫的連接數就為300*30=9000應用機器1應用機器2應用機器3應用機器n數據庫PostgreSQL中文社區如何解決連接數過多問題應用機器1應用機器2應用機器3應用機器n數據庫改進方法是在應用和數據庫之間加入一個數據庫側連接池軟件,假設應用的臺數300臺的9000個連接到數據庫側連接池軟件上,然后連接池軟件通過連接復用的機制,把連接從9000個聚合成300個,然后再連接到數據庫上,這樣就大大的降低了數據庫上的連接數。數據庫側連接池軟件PostgreSQL中
11、文社區pgpool-II:一個偽裝成連接池的讀寫分離的軟件應用到pgpool-II有1萬個連接,pgpool-II到數據庫中也會產生1萬個連接也就是pgpool-II不能減少到數據庫上的連接pgpool-II目前主要做為透明讀寫分離的軟件使用PostgreSQL中文社區舊版本pgbouncer難以減少java應用到數據庫的連接數原因與綁定變量的prepare執行有關,jdbc執行SQL是分兩個步驟的:1.先使用Prepare的SQL,即:“prepare S_1 as select*from test01 where id=$1;”2.然后再“execute S1(1);”這兩個步驟必須一個連
12、接中執行,但pgbouncer連接池不能跟蹤的這兩個步驟,有可能把這兩個步驟分到兩個不同的數據庫連接中執行,導致了執行錯誤org.postgresql.util.PSQLException:ERROR:prepared statement S_1 already exists 而ZQPool通過跟蹤這兩個步驟,解決了此問題。PostgreSQL中文社區pgbouncer的優劣缺點:是單線程程序,單個pgbouncer無法支持海量的查詢pgbouncer使用了高性能的libevent,單線程內處理的效率是很高的,如果超過了單核性能,會立即進入瓶頸PostgreSQL中文社區ZQPool解決了pg
13、bouncer單核不支持高并發查詢的缺陷在一臺2顆 Intel(R)Xeon(R)Silver 4210R CPU 2.40GHz的物理機上做的測試:使用命令:pgbench-h 10.197.160.18-p 6432-Uu01 -S-P 2 -T 30-c 32pgbouncer最多到3萬每秒就上不去了。ZQPool的tps可以到10萬每秒05PoarDB開源新玩法ConshFSPostgreSQL中文社區PostgreSQL中文社區ConshFS與PolarDBConsFS替換了PolarDB的PFS。把本地的文件系統共享給PolarDB使用PostgreSQL中文社區ConshFS與PolarDB主數據庫只讀節點2只讀節點1共享存儲流復制流復制PFS主數據庫只讀節點2只讀節點1本地文件系統流復制流復制ConshFSConshFS是一個本地文件系統的代理PostgreSQL中文社區ConshFS+PolarDB能做什么?替代小規模的Greenplum集群,如10臺機器以下規模的Greenplum集群無需管理復雜的分布式數據庫跨節點join比較快并發比較好介紹文檔:https:/