fbpx

PostgreSQL 複製、高可用性 HA 和可擴充性

使用主從複製( Master-Slave Replication )、PgBouncer、PgPool II、HAProxy、分割槽、分片( Sharding )來擴充Postgres 的解決方案

從這 3 小時的課程,你會學到

  • 評估你的擴充需求
  • 如何使用複製和負載平衡來擴充讀取
  • 對於某種使用情況,哪種複製方案是最好的?
  • 如何用 PgBouncer 連線池管理資料庫連線
  • 如何利用雲端中的多個 PostgreSQL 實體(Google Cloud)?
  • 如何實現高可用性
  • 如何使用 PgPool II 執行自動故障轉移
  • 如何使用分割槽和分片來擴充寫入操作

要求

  • 你需要使用一台 Windows/Mac/Linux電腦,有10GB的可用磁碟空間
  • 需要對資料庫物件(如表和索引)有基本的熟悉。
  • 對Linux有一定的瞭解會有幫助

課程說明

PostgreSQL 是最強大和最容易使用的資料庫管理系統之一。它得到了社群的大力支援,並且正在積極開發,每年都有新的版本。

PostgreSQL 支援 SQL 標準中包含的最先進的功能。它還提供 NoSQL 能力和非常豐富的資料型別和擴充套件。所有這些都使 PostgreSQL 成為軟體系統中非常有吸引力的解決方案。

在這個課程中,我們討論了利用幾個伺服器的資源建立基於 PostgreSQL 的可擴充解決方案的問題。這種系統有一個自然的限制–基本上,在效能、可靠性和一致性之間總是有一個妥協。有可能改善一個方面,但其他方面會受到影響。在本課程中,我們將看到如何為我們的使用案例找到最好的匹配,以便我們確切地知道哪些方面需要擴充,並避免分散式系統的常見折衷。

擴充 PostgreSQL 是一個旅程。在這個課程中,你應該更有準備地評估你的擴充需求,瞭解如何擴充讀取和如何擴充寫入。

本課程中提出的每一個解決方案都會改善可擴充性主題的某些方面,但每一個都會增加一些複雜性,也許還有一些限制或約束。

我們必須提出正確的問題來獲得系統的要求,這就是為什麼我們要用一整堂課的時間,讓我們在開始擴充之旅之前,研究我們必須提出哪些問題。

在這個課程結束後,我們應該有更多的準備,瞭解如何擴充讀取。

我們對複製有幾種選擇,這取決於我們是喜歡效能還是靈活性。

複製可以作為一個備份或備用解決方案,在主伺服器崩潰時接管。

複製也可以用來提高軟體系統的效能,使其有可能在幾個資料庫伺服器上分配負載。

然後,如果我們有了一種複製,我們可以問自己是否要讓幾台電腦為同一資料服務。

為了實現這一點,我們應該有一個機制來分配請求。我們將在這裡看到兩種最流行的選擇。

接下來,如果資料庫連線的數量很大,那麼我們可能要使用一個連線池。同樣,我們將在這裡介紹兩種選擇。

我們還將看到,如何擴大寫入量,以及如何透過在你的架構中新增佇列使你的流量成長更可預測。

然後,我們將檢查分割槽,以應對那些我們必須處理大表( Big table )的情況。

此外,我們還將檢查分片來擴大寫入量,以及隨之而來的所有複雜決定。

最後,我們將很快看到多主機解決方案,這是一個相對較新的概念,似乎很有前途。

如果我們的目標只是為了實現高可用性,或者在叢集的一個部分發生故障的情況下繼續工作的能力,我們可以只檢查這些解決方案。

HA的前提條件是建立一個複製策略。

然後,我們可以使用工具來允許第二台伺服器在主伺服器發生故障時迅速接管。

擴充 PostgreSQL 的介紹

  • 為什麼要擴充 PostgreSQL?
  • 什麼是垂直擴充?
  • 什麼是水平擴充?
  • 讀取與寫入的工作負載
  • 為什麼統計是必要的?
  • 如何啟用和使用統計資料?(實踐)
  • 如何擴充 Postgres 的讀取量?
  • 複製是如何幫助擴充的?
  • 什麼是負載均衡器?
  • 如何擴充 Postgres 的寫入量?
  • 如何利用佇列?
  • 分割槽和分片是如何幫助擴充的?
  • 多主機的解決方案是什麼?

瞭解擴充 PostgreSQL 的侷限性

  • CAP定理的解釋
  • PostgreSQL 與 Cassandra 的對比
  • 使用案例。CA系統
  • 使用案例。AP系統

如何使用串流式複製?

  • 什麼是串流式複製?
  • 非同步複製與同步複製的比較
  • 如何初始化主資料庫?(實際操作)
  • 如何為複製配置主資料庫? (實踐)
  • 如何配置複製例項? (實踐)
  • 測試複製設定(實戰)

如何使用邏輯複製?

  • 什麼是 Postgres 的邏輯複製?
  • 逐步設定邏輯複製
  • 如何設定邏輯複製的伺服器?(實際操作)
  • 如何對資料進行選擇性複製?(實踐)
  • 如何建立釋出?(實踐)
  • 如何建立訂閱?(實踐操作)
  • Postgres 邏輯複製的侷限性
  • 如何監控邏輯複製?(實踐)
  • 使用邏輯複製的最佳應用案例

如何利用PgBouncer?

  • 什麼是PgBouncer?
  • 連線池的基本概念
  • 如何建立一個 PgBouncer 設定?(實際操作)
  • 如何安裝和配置 PgBouncer? (實踐)
  • 如何為 PgBouncer 建立一個基本的配置檔案? (實踐)
  • 如何連線到 PgBouncer? (實踐)
  • 解釋效能的高階設定
  • 哪些是可用的池模式?
  • 使用 PgBouncer 執行基準測試(上機)

如何在谷歌雲j端中擴充 PostgreSQL?

  • 簡介
  • 谷歌雲端上的關鍵元件
  • 架構的主要特點
  • 如何在谷歌雲端上建立 PostgreSQL例項? (實踐)
  • 如何為 HAProxy 建立一個谷歌雲端引擎(GCE)?(實際操作)
  • 如何配置 HAProxy的負載平衡?(實踐)
  • 測試負載平衡

如何利用 PostgreSQL 的分割槽?

  • 什麼是分割槽?
  • 哪些表需要分割槽?
  • 應該如何對 Table 進行分割槽?
  • 宣告式分割槽與繼承式分割槽
  • 如何建立一個分割槽的表?(實際操作)
  • 分割槽方法

如何對PostgreSQL進行分片管理?

  • 什麼是分片?
  • 分片管理的痛點?
  • 什麼是二級分片?
  • 什麼是好的分片?
  • 如何在多個分片上進行查詢?

如何在PostgreSQL上設定高可用性(HA)?

  • 為什麼是高可用性?
  • 實現高可用性的步驟
  • 設定高可用性前的基本問題
  • 日誌運送複製
  • 串流複製和邏輯複製
  • 級聯複製
  • 同步複製與非同步複製
  • 自動故障切換和永遠線上策略
  • 簡單的 HA 解決方案例項
  • 更好的 HA 解決方案示例

如何利用PgPool II?

  • 什麼是PgPool II?
  • Pgpool-II的特點
  • 如何配置帶流式複製的Pgpool-II?(實際操作)
  • 如何設定串流式複製?(實踐操作)
  • 如何配置Pgpool-II進行負載平衡? (實踐)
  • 測試負載平衡和讀/寫分離(上機)
  • 如何為 PostgreSQL 的高可用性配置Pgpool? (實踐)
  • 如何配置 PostgreSQL 主伺服器?(實踐操作)
  • 如何配置 Pgpool-II 伺服器? (實踐操作)
  • 如何配置 PostgreSQL Replica 伺服器? 實踐操作 (Hands-on)
  • 測試故障轉移(實踐)
  • 如何恢復失敗的節點?(實踐操作)。

目標受眾

  • 對在 PostgreSQL 基礎上設計可擴充和HA解決方案感興趣的軟體工程師
  • 資料庫管理員
  • 對建立更好的PostgreSQL應用感興趣的所有人

講師簡介

Lucian Oprea 軟體工程師 ( 更多講師課程介紹 )

我是一名來自羅馬尼亞的軟體工程師,有很強的電腦科學背景,有超過8年的專業經驗。

我熱衷於開發易於使用、智慧和架構良好的產品。我提倡編寫遵循最佳設計實踐的精心製作的程式碼。我力求把同樣的熱情和完整的水平帶到教學中。

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

報名參加課程

Sponsored by Udemy


🛫使用關鍵字連結獲得更多線上學習資訊?請參考這個網頁說明


幫我們個小忙!

使用 e-mail 追蹤 Soft & Share

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: