高手問答第 301 期 —— 聊聊PostgreSQL高可用解決方案設計與實踐

OSC噠噠 發布于 05/31 17:46
閱讀 8K+
收藏 8

從數據到大模型應用,11 月 25 日,杭州源創會,共享開發小技巧

系統服務能(SLA)力提升是一項系統性的工程,數據庫有作為整個IT系統的核心組件,在不同的應用場景下,用戶對于數據庫各項能力的關注點也不同,如:讀寫延遲、吞吐量、擴展性、可靠性、可用性等等。不少數據庫系統通過系統架構優化、硬件設備升級等方式,來解決可用性、性能等問題,但隨著集群規模的逐漸擴大,對系統可用性的要求也越來越高。

OSCHINA 本期高手問答 (6 月 1 日 - 6 月 11 日) 我們請來了 崔鵬老師 和大家一起探討關于PostgreSQL數據庫在高可用架構、分布式架構、以及容災等方面的技術點以及解決方案話題。

可討論的內容包括但不限于以下幾個方面:
  • 高可用解決方案,Pgpool II、Patroni 等。
  • 分布式解決方案,CitusDB、PostgresXL 等。
  • 備份工具 pg_dump、pg_rman、pgbackrest、pg_probackup 等。
  • PostgreSQL后端特性矩陣中特性。
  • 基于PostgreSQL的信創數據庫。
以及其他關于PostgreSQL高可用解決方案的問題,歡迎提問。

嘉賓簡介

崔鵬,《PostgreSQL 高可用實戰》作者,擁有十年數據庫、操作系統、存儲領域的工作經驗。
2021 年度中國 PostgreSQL 最具價值技術專家 MVP、ORACLE OCM、MySQL OCP、PostgreSQL CM(中國首批 PG 數據庫大師)。

為了鼓勵踴躍提問,PG中文社區會在問答結束后從提問者中抽取 3 名幸運會員贈予PG專屬徽章。

OSChina 高手問答一貫的風格,不歡迎任何與主題無關的討論和噴子。

下面歡迎大家就 PostgreSQL高可用解決方案設計與實踐 相關問題向 崔鵬老師 提問,直接回帖提問既可。

加載中
0
yaosaya
yaosaya

高手問答第 301 期 —— 聊聊 PostgreSQL 高可用解決方案設計與實踐

@強尼唐  @墨子Zhai @xiaour 

恭喜以上三位網友分別獲得 PG 專屬徽章一份~

請于6月20日前登陸賬號, 私信  @yaosaya   告知快遞信息(格式:姓名+電話+地址),過期視為自動放棄哦~

6
南方Go
南方Go

@崔鵬_PG中文社區  1. 基于 PostgreSQL 的信創數據庫, 要考個postgresql數據庫管理員認證,這個有什么途徑嗎?

2.備份工具 pg_dump、pg_rman、pgbackrest、pg_probackup 這個幾個備份工具怎么用比較好??都用在哪些地方比較方便,,優點和缺點?

崔鵬_PG中文社區
崔鵬_PG中文社區
另外幾種pg_rman pgbackrest pg_probackup 物理熱備份工具還需要關注一下備份數據支持的壓縮算法和壓縮比率。 這個點對長期存儲成本的節約有幫助。
崔鵬_PG中文社區
崔鵬_PG中文社區
pgbackrest、 功能比較多,配置較復雜。 pg_probackup 是基于pg_rman擴展而來??梢詫Ρ镜睾瓦h程進行備份;并且可以將數據在遠端進行恢復(靚點); 但是有個較大的缺點,尋址范圍只有4G,也就是如果數據庫的segment_size改為4G+(默認1G)將會出現問題。 我這邊在實際生產環境中,使用的就是這個工具。
崔鵬_PG中文社區
崔鵬_PG中文社區
pg_dump、 優點 PG自帶工具無需安裝、可以導出整庫、單獨表、單獨導出數據。 缺點 邏輯備份,對中大型數據庫備份不友好,速度較慢。 適用場景 小數據量靈活導出 pg_rman、 配置簡單;使用方便 ;但是需要和數據節點安裝在一起。
崔鵬_PG中文社區
崔鵬_PG中文社區
1. 基于 PostgreSQL 的信創數據庫, 要考個postgresql數據庫管理員認證,這個有什么途徑嗎? 這個可以直接去,廠家的官網上看一下,每個國產數據庫廠家都會開設認證學院,比如達夢學院、瀚高、進倉等等
1
疾風利亞
疾風利亞

@崔鵬_PG中文社區Pgpool II4.4.1 在從節點掉線之后,還是將查詢發送到從節點中,導致業務系統報錯,還有在從節點恢復之后,也是處于down的狀態,要手動pcp_attach_node回來,這些問題要怎么處理?

疾風利亞
疾風利亞
回復 @崔鵬_PG中文社區 : 好的,謝謝大佬:smile:
崔鵬_PG中文社區
崔鵬_PG中文社區
正常從節點掉線后,應該不會再往該節點發送SQL了。建議可以仔細查看下官方手冊,進行配置檢查。 高可用這塊建議使用Patroni,我的生產環境,在3年前使用Pgpool II的時候 也確實是使用pcp_attach_node管理工具命令加入。
1
崔鵬_PG中文社區
崔鵬_PG中文社區

首先說PostgreSQL的分布式解決方案,基本都用在OLAP的業務場景中,主要的解決方案有citusdb、greenplum、PostgreSQL-XL、pg_shard等,代碼層面主要是考慮分布式解決方案在,幾個維度是否支持、比如增加片區后是否可以數據自動平衡分布、跨片區事務、分區建修改、跨片區join查詢、Order by、group by等。時效性保證多數都是使用2PC、3PC來保證。數據片區的冗余,一般是小表做復制表每個片區存同一份數據、片區的冗余有一些方案自身支持、有一些需要依賴PG的流復制來做冗余。

部署維護、主要考慮備份、容災、以及擴容等成本上。 @崔鵬_PG中文社區

強尼唐
回復 @崔鵬_PG中文社區 : 感謝崔老師花出寶貴時間回復,深入一點點后感覺數據庫又是一個全新的領域,由其是pg,像是變色龍,加入擴展后能適應多種場景。所以有什么推薦的書嗎,能比較系統性的學習pg,也不用很深,能在出問題時或者找方案時,能想到有這本書。
1
o
osc_71639041

@崔鵬_PG中文社區 ,你好,崔老師,我日常工作也有使用pg,我有這樣一個問題,pg有著對一次性入庫最大數量的限制,大概是32767/表字段數,但如果遇到高并發,大業務量場景,這塊pg是如何處理的呢?

崔鵬_PG中文社區
崔鵬_PG中文社區
您好~ 1.如果是批量靜態加載數據建議使用COPY來批量加載。 2.如果必須使用insert也建議使用insert .. ... values values...這種形式。 3.如果只能使用單insert values那么建議把insert values多個小事務進行分批提交。
1
墨子Zhai
墨子Zhai

@崔鵬_PG中文社區 您好, 談一下 PolarDB for PostgreSQL Ceph 共享存儲方式 的特點。謝謝

墨子Zhai
墨子Zhai
回復 @崔鵬_PG中文社區 : 計算和存儲分離了, 對存儲/計算的擴容,可獨立進行,增強了可擴展性; 可以支持大數據量的場景; 同時對存儲的要求就更高了。 當然系統也變的更復雜了,維護成本也更高一些。 這個理解是否正確?
墨子Zhai
墨子Zhai
回復 @崔鵬_PG中文社區 : 非常感謝您抽出寶貴的時間回復。
崔鵬_PG中文社區
崔鵬_PG中文社區
詳細技術細節 可以參考 http://www.polardbpg.com/document 官方文檔
崔鵬_PG中文社區
崔鵬_PG中文社區
基于 Shared-Storage 的 PolarDB-PG 的架構原理。 主節點為可讀可寫節點(RW),只讀節點為只讀(RO)。 Shared-Storage 層,只有主節點能寫入,因此主節點和只讀節點能看到一致的落盤的數據。 只讀節點的內存狀態是通過回放 WAL 保持和主節點同步的。 主節點的 WAL 日志寫到 Shared-Storage,僅復制 WAL 的 meta 給只讀節點。 只讀節
崔鵬_PG中文社區
崔鵬_PG中文社區
基于 Shared-Storage 之后,數據庫由傳統的 share nothing,轉變成了 shared storage 架構。需要解決如下問題: 數據一致性:由原來的 N 份計算+N 份存儲,轉變成了 N 份計算+1 份存儲。 讀寫分離:如何基于新架構做到低延遲的復制。 高可用:如何 Recovery 和 Failover。 IO 模型:如何從 Buffer-IO 向 Direct-IO
0
xiaour
xiaour

@崔鵬_PG中文社區 您好我是剛使用PGSQL的,還是不太熟

  1. PGPOOL 支持哪些故障轉移方式?
  2. PGPOOL 如何監控數據庫的狀態?
崔鵬_PG中文社區
崔鵬_PG中文社區
2.PGPOOL 如何監控數據庫的狀態? 使用工具,連接到PGPOOL后??刹樵冞@幾個視圖。 pool_status, 獲取配置 pool_nodes, 獲取節點信息 pool_processes, 獲取pgPool-II 進程信息 pool_pools, 獲取pgPool-II 所有的連接池信息 pool_version, 獲取pgPool_II 版本信息
崔鵬_PG中文社區
崔鵬_PG中文社區
1.PGPOOL 支持哪些故障轉移方式? 其實PGPOOL 支持的故障轉移方式還是PG提供的: 第一種備升?。篴.pg_ctl promote b.使用tigger觸發器文件方式。 第二種原主降備:需要自定義腳本,腳本樣例可以參考PGPOOL 的文檔。
0
怎能累了就說放棄
怎能累了就說放棄

@崔鵬_PG中文社區 老師,之前外部公司給我們做了一個產品,大概4000多個模式和每個模式大概600張表,共占用存儲700G左右,目前用prometheus導出指標都無法導出,備份也不能執行,但是訪問目前問題不大,你覺得是什么問題,該怎么優化,雖然數據結構目前存在問題(正在解決,但是需要時間),有點不相信國外應用規模這么大的數據庫4000個模式就不行了

怎能累了就說放棄
怎能累了就說放棄
回復 @崔鵬_PG中文社區 : 不是存儲prometheus監控數據,存儲的業務數據,用的prometheus監控,類似像pg_database_size基本跑不出來,這個database大概有200g左右,所有數據庫有700g左右,備份只能進行文件形式的備份,使用邏輯備份哪怕備份一個模式都跑不出來結果
怎能累了就說放棄
怎能累了就說放棄
回復 @崔鵬_PG中文社區 : https://oscimg.oschina.net/oscnet/up-af41b95bdd54aade607472b4c9cd908dcee.png
怎能累了就說放棄
怎能累了就說放棄
回復 @崔鵬_PG中文社區 : 1、是的,使用prometheus做的監控,目前監控執行很慢,無法導出指標; 2、備份目前已經使用第三方的工具去做了,但是700g數據,依然需要接近6-8小時 3、確實,我也很驚訝,4000個模式都不支持很奇怪,回復不能截圖,數據庫參數見鏈接:https://oscimg.oschina.net/oscnet/up-af41b95bdd54aade607472
崔鵬_PG中文社區
崔鵬_PG中文社區
您可以補充一些信息,讓我更詳細的了解您遇到的問題!
崔鵬_PG中文社區
崔鵬_PG中文社區
您好, 1.目前用prometheus導出指標都無法導出? 該數據庫是存儲prometheus的監控數據么? 2.備份也不能執行? 目前使用什么工具進行備份? 700GB的庫需要使用pg_probackup這種物理熱備份工具。不建議使用邏輯備份工具。 3.有點不相信國外應用規模這么大的數據庫4000個模式就不行了。 目前按照您提供的信息,您遇到的問題應該和模式數量無關。
0
怎能累了就說放棄
怎能累了就說放棄

@崔鵬_PG中文社區 目前配置參數是這樣的,服務器16cpus 64g內存

OSCHINA
登錄后可查看更多優質內容
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间