讀取 適用於 MariaDB 的 Azure 資料庫 中的複本

重要

適用於 MariaDB 的 Azure 資料庫 位於淘汰路徑上。 強烈建議您移轉至 適用於 MySQL 的 Azure 資料庫。 如需移轉至 適用於 MySQL 的 Azure 資料庫 的詳細資訊,請參閱 適用於 MariaDB 的 Azure 資料庫 發生什麼事?

讀取複本功能可讓您將資料從適用於 MariaDB 的 Azure 資料庫伺服器複寫到唯讀伺服器。 您可以從來源伺服器複寫到最多五個複本。 複本會使用 MariaDB 引擎的二進位記錄檔 (binlog) 檔案位置型復寫技術與全域交易標識碼 (GTID) 以異步方式更新。 若要深入瞭解二進位記錄複寫,請參閱 binlog 複寫概觀

復本是您管理的新伺服器,類似於一般 適用於 MariaDB 的 Azure 資料庫 伺服器。 針對每個讀取複本,您會針對虛擬核心中布建的計算和以 GB/月為單位的記憶體計費。

若要深入瞭解 GTID 複寫,請參閱 MariaDB 複寫檔

注意

本文包含「從屬」一詞的參考,Microsoft 已不再使用該字詞。 從軟體中移除該字詞時,我們也會將其從本文中移除。

何時應該使用讀取複本

讀取複本功能可針對需大量讀取的工作負載,協助改善效能及調整能力。 讀取工作負載可隔離至複本,而寫入工作負載可以導向到主要伺服器。

常見的案例是讓 BI 與分析工作負載使用讀取複本做為報告的資料來源。

由於複本是唯讀狀態,因此不會直接降低主要伺服器上的寫入容量負擔。 這項功能不是以大量寫入的工作負載為目標。

讀取複本功能會使用異步複寫。 此功能不適用於同步復寫案例。 來源與複本之間會有可測量的延遲。 複本上的資料,最終仍會與主要伺服器上的資料保持一致。 請針對可接受此延遲的工作負載使用此功能。

跨區域複寫

您可以在來源伺服器的不同區域中建立讀取複本。 跨區域複寫有助於災害復原規劃或讓資料更接近使用者之類的案例。

您可以在任何 適用於 MariaDB 的 Azure 資料庫 區域中擁有來源伺服器。 來源伺服器可以在其配對區域或通用復本區域中擁有複本。 下圖顯示根據來源區域可用的複本區域。

Read replica regions

通用復本區域

不論來源伺服器位於何處,您都可以在任何下列區域中建立讀取複本。 支援的通用復本區域包括:

澳大利亞東部、澳大利亞東南部、巴西南部、加拿大中部、加拿大東部、美國中部、東亞、美國東部 2、日本東部、日本西部、韓國中部、美國中北部、北歐、美國中南部、東南亞、英國南部、英國西部、西歐、美國西部 2、美國中西部 2、美國中西部。

配對的區域

除了通用復本區域之外,您還可以在來源伺服器的 Azure 配對區域中建立讀取複本。 如果您不知道區域的配對,您可以從 Azure 配對區域一文深入瞭解

如果您使用跨區域複本進行災害復原規劃,建議您在配對區域中建立複本,而不是其他區域之一。 配對的區域可避免同時更新,並排定實體隔離和數據落地的優先順序。

不過,有一個限制需要考慮:

  • 區域可用性:適用於 MariaDB 的 Azure 資料庫 位於法國中部、阿聯酋北部和德國中部。 不過,其配對區域無法使用。

  • 單向配對:某些 Azure 區域只會以單向配對。 這些區域包括印度西部、巴西南部和美國州長弗吉尼亞州。 這表示印度西部的來源伺服器可以在印度南部建立複本。 不過,印度南部的來源伺服器無法在印度西部建立複本。 這是因為印度西部的次要區域是印度南部,但印度南部的次要區域不是印度西部。

建立複本

重要

讀取複本功能僅適用於一般用途或記憶體優化定價層中的 適用於 MariaDB 的 Azure 資料庫 伺服器。 請確定來源伺服器位於下列其中一個定價層中。

如果來源伺服器沒有現有的複本伺服器,來源會先重新啟動以準備複寫。

當您啟動建立複本工作流程時,會建立空白 適用於 MariaDB 的 Azure 資料庫 伺服器。 新伺服器會填入來源伺服器上的數據。 建立時間取決於來源的數據量,以及上次每周完整備份之後的時間。 時間的範圍可能介於數分鐘到數小時。

注意

如果您的伺服器上未設定記憶體警示,建議您這麼做。 警示會在伺服器接近其記憶體限制時通知您,這會影響複寫。

了解如何在 Azure 入口網站中建立讀取複本

連線到複本

在建立時,複本會繼承來源伺服器的防火牆規則。 之後,這些規則與來源伺服器無關。

複本會從來源伺服器繼承系統管理員帳戶。 來源伺服器上的所有用戶帳戶都會復寫至讀取複本。 您只能使用來源伺服器上可用的用戶帳戶來連線到讀取複本。

您可以使用其主機名和有效的用戶帳戶來連線到複本,就像在一般 適用於 MariaDB 的 Azure 資料庫 伺服器上一樣。 針對名為 myreplica 且具有系統管理員用戶名稱 myadmin 的伺服器,您可以使用 mysql CLI 連線到複本:

mysql -h myreplica.mariadb.database.azure.com -u myadmin@myreplica -p

在出現提示時,請輸入使用者帳戶的密碼。

監視複寫

適用於 MariaDB 的 Azure 資料庫 提供Azure 監視器中的復寫延遲以秒為單位計量。 此計量僅適用於複本。

此計量是使用 seconds_behind_master MariaDB SHOW SLAVE STATUS 命令中可用的計量來計算。

設定警示,以在復寫延隔時間達到工作負載無法接受的值時通知您。

停止複寫

您可以停止來源與複本之間的複寫。 在來源伺服器與讀取複本之間停止複寫之後,複本會變成獨立伺服器。 獨立伺服器中的數據是啟動停止複寫命令時複本上可用的數據。 獨立伺服器無法趕上來源伺服器。

當您選擇停止複寫至複本時,它會遺失其先前來源和其他複本的所有連結。 來源與其複本之間沒有自動故障轉移。

重要

獨立伺服器無法再次製作成複本。 在停止讀取複本上的複寫之前,請確定複本具有您需要的所有數據。

瞭解如何停止複 寫至複本

容錯移轉

來源和復本伺服器之間沒有自動故障轉移。

由於復寫是異步的,來源與複本之間會有延遲。 延隔時間量可能會受到許多因素的影響,例如在來源伺服器上執行的工作負載有多重,以及數據中心之間的延遲。 在大部分情況下,複本延遲範圍介於幾秒鐘到幾分鐘之間。 您可以使用計量複本延隔時間來追蹤實際複寫延遲,此計量適用於每個複本。 此計量會顯示上次重新執行交易之後的時間。 建議您藉由觀察複本在一段時間內的延遲來識別您的平均延隔時間。 您可以設定複本延隔時間的警示,使其超出預期範圍,您可以採取動作。

提示

如果您故障轉移至複本,當您從來源取消連結複本時,延遲會指出遺失多少數據。

決定要故障轉移至複本之後,

  1. 停止複寫至複本。

    此步驟是讓複本伺服器能夠接受寫入的必要步驟。 在此程式中,複本伺服器將會從主要伺服器取消連結。 起始停止復寫之後,後端程式通常需要大約 2 分鐘才能完成。 請參閱本文的停止復寫一節,以瞭解此動作的影響。

  2. 將您的應用程式指向 (先前) 複本。

    每部伺服器都有唯一的 連接字串。 更新您的應用程式以指向 (先前) 複本,而不是主要複本。

在應用程式成功處理讀取和寫入之後,您已完成故障轉移。 當您偵測到問題並完成上述步驟 1 和 2 時,應用程式體驗的停機時間將取決於。

考量與限制

定價層

讀取複本目前僅適用於一般用途和記憶體優化定價層。

注意

執行複本伺服器的成本是以複本伺服器執行所在的區域為基礎。

來源伺服器重新啟動

當您為沒有現有複本的來源建立複本時,來源會先重新啟動以準備複寫。 將此納入考慮,並在離峰期間執行這些作業。

新複本

讀取複本會建立為新的 適用於 MariaDB 的 Azure 資料庫 伺服器。 現有的伺服器無法製作成複本。 您無法建立另一個讀取複本的複本。

複本組態

復本是使用與主要複本相同的伺服器組態所建立。 建立複本之後,可以從來源伺服器獨立變更數個設定:計算產生、虛擬核心、記憶體、備份保留期限和 MariaDB 引擎版本。 除了基本層之外,定價層也可以獨立變更。

重要

在來源伺服器組態更新為新值之前,請將複本組態更新為等於或更大的值。 此動作可確保複本能夠跟上對主要複本所做的任何變更。

建立複本時,防火牆規則和參數設定會繼承自來源伺服器到複本。 之後,複本的規則是獨立的。

已停止的複本

如果您停止來源伺服器與讀取複本之間的複寫,則停止的複本會變成接受讀取和寫入的獨立伺服器。 獨立伺服器無法再次製作成複本。

已刪除的來源和獨立伺服器

刪除來源伺服器時,會將復寫停止至所有讀取複本。 這些複本會自動成為獨立伺服器,而且可以接受讀取和寫入。 來源伺服器本身已刪除。

使用者帳戶

來源伺服器上的用戶會復寫至讀取複本。 您只能使用來源伺服器上可用的使用者帳戶連線到讀取複本。

伺服器參數

若要防止資料不同步,以及避免潛在的資料遺失或損毀,則會在使用讀取複本時,有些伺服器參數會被鎖定而無法更新。

來源與復本伺服器上鎖定下列伺服器參數:

參數 event_scheduler 已鎖定在複本伺服器上。

若要在來源伺服器上更新上述其中一個參數,請刪除複本伺服器、更新主要伺服器上的參數值,然後重新建立複本。

其他

  • 不支援建立複本的複本。
  • 記憶體內部數據表可能會導致復本無法同步。這是 MariaDB 複寫技術的限制。
  • 確定來源伺服器數據表具有主鍵。 缺少主鍵可能會導致來源與複本之間的複寫延遲。

下一步