共用方式為


讀取「適用於 MySQL 的 Azure 資料庫」中的複本

適用於: 適用於 MySQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 MySQL 的 Azure 資料庫單一伺服器位於淘汰路徑上。 強烈建議您升級至適用於 MySQL 的 Azure 資料庫彈性伺服器。 如需移轉至適用於 MySQL 的 Azure 資料庫彈性伺服器的詳細資訊,請參閱適用於 MySQL 的 Azure 資料庫單一伺服器會發生什麼事?

讀取複本功能可讓您將資料從適用於 MySQL 的 Azure 資料庫伺服器複寫到唯讀伺服器。 您可以從來源伺服器複寫到最多五個複本。 複本會使用 MySQL 引擎的原生二進位記錄 (binlog) 檔案位置型複寫技術來進行非同步更新。 若要深入了解 binlog 複寫,請參閱 MySQL binlog 複寫概觀 \(英文\)。

複本是新伺服器,管理方式類似於一般適用於 MySQL 的 Azure 資料庫伺服器。 針對每個讀取複本,系統每月會針對在虛擬核心中所佈建的計算量,以及在儲存體中所佈建的容量 (以 GB 為單位) 向您收費。

若要深入了解 MySQL 複寫功能與問題,請參閱 MySQL 複寫文件 \(英文\)。

注意

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

何時應該使用讀取複本

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

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

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

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

跨區域複寫

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

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

全球的複本區域

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

區域 複本可用性
澳大利亞東部 ✔️
澳大利亞東南部 ✔️
巴西南部 ✔️
加拿大中部 ✔️
加拿大東部 ✔️
美國中部 ✔️
美國東部 ✔️
美國東部 2 ✔️
東亞 ✔️
日本東部 ✔️
日本西部 ✔️
南韓中部 ✔️
南韓南部 ✔️
北歐 ✔️
美國中北部 ✔️
美國中南部 ✔️
東南亞 ✔️
瑞士北部 ✔️
英國南部 ✔️
英國西部 ✔️
美國中西部 ✔️
美國西部 ✔️
美國西部 2 ✔️
西歐 ✔️
印度中部* ✔️
法國中部* ✔️
阿拉伯聯合大公國北部* ✔️
南非北部* ✔️

注意

*Azure MySQL Database 有公開預覽版一般用途儲存體 v2 的區域
*針對這些 Azure 區域,您可以選擇同時在一般用途儲存體 v1 和 v2 中建立伺服器。 針對公開預覽版中以一般用途儲存體 v2 建立的伺服器,您只能在支援一般用途儲存體 v2 的 Azure 區域中建立複本伺服器。

配對的區域

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

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

不過,其中有一些限制需要考慮:

  • 區域可用性:法國中部、阿拉伯聯合大公國北部和德國中部,提供適用於 MySQL 的 Azure 資料庫。 不過,卻沒有提供其配對區域。

  • 單向配對:某些 Azure 區域只會單向配對。 這些區域包括印度西部、巴西南部和 US Gov 維吉尼亞州。 這表示位於印度西部的來源伺服器可以在印度南部建立複本。 但位於印度南部的來源伺服器無法在印度西部建立複本。 其原因是印度西部的次要區域是印度南部,但印度南部的次要區域卻不是印度西部。

建立複本

重要

  • 讀取複本功能僅供「適用於 MySQL 的 Azure 資料庫」伺服器用於一般用途或記憶體最佳化定價層。 請確定來源伺服器處於這些定價層中。
  • 如果您的來源伺服器沒有現有的複本伺服器,來源伺服器可能需要重新啟動,才能根據使用的儲存體 (v1/v2) 來準備複寫。 請考量重新啟動伺服器,並在離峰時段執行此作業。 如需詳細資訊,請參閱來源伺服器重新啟動

當您開始建立複本的工作流程時,系統會建立空白的「適用於 MySQL 的 Azure 資料庫」伺服器。 新的伺服器會有來源伺服器上的資料。 建立時間取決於來源伺服器上的資料量,以及距離上次執行每週完整備份所經過的時間。 時間的範圍可能介於數分鐘到數小時。 複本伺服器一律會在與來源伺服器相同的資源群組和訂閱中建立。 如果您想要將複本伺服器建立到不同的資源群組或不同的訂閱,您可以在建立後移動複本伺服器

每個複本都會啟用儲存體自動成長。 自動成長功能可讓複本跟上複寫至其中的資料,並防止因儲存空間不足的錯誤而造成複寫中斷。

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

連線到複本

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

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

您可以使用複本的主機名稱和有效的使用者帳戶來連線到該複本,如同連線到一般適用於 MySQL 的 Azure 資料庫伺服器一樣。 若伺服器名稱為 myreplica,且統管理員使用者名稱為 myadmin,則您可以使用 mysql CLI 來連線到複本:

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

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

監視複寫

適用於 MySQL 的 Azure 資料庫會在 Azure 監視器中提供複寫延遲 (秒) 計量。 此計量僅適用於複本。 在計算此計量時,會使用可於 MySQL 的 SHOW SLAVE STATUS 命令中取得的 seconds_behind_master 計量。 請設定警示,以在複寫延遲接近工作負載無法接受的值時通知您。

如果您發現複寫延遲增加,請參閱針對複寫延遲進行疑難排解,瞭解可能原因並進行疑難排解。

停止複寫

您可以停止來源伺服器與複本伺服器之間的複寫。 當您停止來源伺服器和讀取複本之間的複寫,該複本就會成為獨立伺服器。 獨立伺服器中的資料是起始「停止複寫」命令時,複本上所包含的可用資料。 獨立伺服器不會與來源伺服器保持一致。

當您選擇停止複寫至複本時,其會失去與其先前來源伺服器和其他複本的所有連結。 來源伺服器及其複本之間沒有自動容錯移轉功能。

重要

獨立伺服器無法再次設定為複本。 在您停止讀取複本上的複寫之前,請確定該複本上已經有您所需要的所有資料。

了解如何停止複寫至複本

容錯移轉

來源伺服器及複本伺服器之間沒有自動容錯移轉功能。

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

提示

如果您容錯移轉至複本,則當您從來源伺服器取消複本連結時,延遲會指出遺失的資料數量。

當您決定要容錯移轉至複本後:

  1. 停止複寫至複本
    這是讓複本伺服器可接受寫入作業的必要步驟。 在此處理序中,系統會從來源伺服器取消複本伺服器的連結。 當您停止複寫時,後端處理序通常需要大約 2 分鐘才能完成。 請參閱本文的停止複寫章節,以了解此動作的含意。

  2. 將應用程式指向 (先前) 複本
    每部伺服器都具有唯一的連接字串。 更新應用程式以指向 (先前) 複本,而非來源伺服器。

在應用程式順利處理讀取和寫入作業後,您便完成容錯移轉。 應用程式的停機時間長度,取決於您偵測到問題,並完成先前所列步驟 1 和 2 的時間點。

全域交易識別碼 (GTID)

全域交易識別碼 (GTID) 是使用來源伺服器上,每個已認可交易所建立的唯一識別碼,且在適用於 MySQL 的 Azure 資料庫中,依預設為「關閉」狀態。 5.7 和 8.0 版僅支援最多 16 TB (一般用途儲存體 v2) 的伺服器上才支援 GTID。 若要深入瞭解 GTID 及其在複寫中的使用方式,請參閱 MySQL 的 使用 GTID 進行複寫 文件。

MySQL 支援兩種類型的交易:GTID 交易 (以 GTID 識別),以及匿名交易 (沒有配置 GTID)

下列伺服器參數可用於設定 GTID:

伺服器參數 說明 預設值
gtid_mode 指出是否使用 GTID 來識別交易。 模式之間的變更,只能以遞增順序,一次進行一個步驟 (例如OFF->OFF_PERMISSIVE->ON_PERMISSIVE->ON) OFF OFF:新交易和複寫交易都必須為匿名狀態
OFF_PERMISSIVE:新交易是匿名狀態。 複寫的交易可以是匿名交易或 GTID 交易。
ON_PERMISSIVE:新交易是 GTID 交易。 複寫的交易可以是匿名交易或 GTID 交易。
ON:新交易和複寫的交易都必須是 GTID 交易。
enforce_gtid_consistency 藉由僅允許執行可以交易安全方式記錄的陳述式,來強制執行 GTID 一致性。 啟用 GTID 複寫之前,必須先將此值設定為 ON OFF OFF:允許所有交易違反 GTID 一致性。
ON:禁止交易違反 GTID 一致性。
WARN:允許所有交易違反 GTID 一致性,但會產生警告。

注意

  • 啟用 GTID 之後,您無法將其關閉。 如果您需要關閉 GTID,請連絡支援人員。

  • 若要將 GTID 從一個值變更為另一個值,您只能以遞增順序的模式,一次執行一個步驟。 例如,如果 gtid_mode 目前設為 OFF_PERMISSIVE,則可能可以變更為 ON_PERMISSIVE,但無法變更為 ON。

  • 若要讓複寫保持一致性,您無法更新主要/複本伺服器的複寫。

  • 建議您先將 enforce_gtid_consistency 設為 ON,才能設定 gtid_mode=ON

若要啟用 GTID 並設定一致性行為,請使用 Azure 入口網站Azure CLIPowerShell,更新gtid_modeenforce_gtid_consistency

如果在來源伺服器上啟用 GTID (gtid_mode = ON),新建立的複本也會啟用 GTID,並使用 GTID 複寫。 為了確保複寫具有一致性,建立具有已啟用 GTID 的主要或複本伺服器後,gtid_mode便無法變更。

考量與限制

定價層

目前只有「一般用途」與「記憶體最佳化」定價層提供讀取複本。

注意

執行複本伺服器的成本,是取決於複本伺服器執行所在的區域。

來源伺服器重新啟動

具有一般用途儲存體 v1 的伺服器,log_bin參數將預設為關閉。 當您建立第一個讀取複本時,值將會開啟。 如果來源伺服器沒有現有的讀取複本,則來源伺服器會先重新啟動,以準備進行複寫。 請考慮重新啟動伺服器,並在離峰時段執行此作業。

具有一般用途儲存體 v2 的來源伺服器,log_bin參數將預設為開啟,而且當您新增讀取複本時,不需要重新開機。

新複本

讀取複本會建立為最新適用於 MySQL 的 Azure 資料庫伺服器。 現有伺服器無法設定為複本。 您無法為另一個讀取複本建立複本。

複本設定

系統會使用與來源伺服器相同的伺服器設定來建立複本。 建立複本之後,以下設定可以個別從來源伺服器進行變更:計算世代、虛擬核心、儲存體及備份保留期間。 定價層也可以個別變更,但不能變更為基本層,或從基本層變更為別的層。

重要

在將來源伺服器設定更新為新值之前,應將複本的設定更新為相等或更大的值。 此動作可確保複本可以跟上來源伺服器上所做的變更。

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

已停止的複本

如果您停止在來源伺服器和讀取複本之間進行複寫,已停止的複本就會成為獨立伺服器,同時接受讀取和寫入作業。 獨立伺服器無法再次設定為複本。

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

刪除來源伺服器時,系統會在所有讀取複本上停止複寫。 這些複本會自動變成獨立伺服器,並且可以同時接受讀取和寫入。 來源伺服器本身會被刪除。

使用者帳戶

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

伺服器參數

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

來源伺服器和複本伺服器都會鎖定下列伺服器參數:

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

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

GTID

支援 GTID 者:

  • MySQL 5.7 和 8.0 版本。
  • 支援最多 16 TB 儲存體的伺服器。 如需可支援 16 TB 儲存體的區域完整清單,請參閱定價層一文。

GTID 預設為關閉。 啟用 GTID 之後,您無法將其關閉。 如果您需要關閉 GTID,請連絡支援人員。

如果在來源伺服器上啟用 GTID,新建立的複本也會啟用 GTID,並使用 GTID 複寫。 若要保持複寫一致,您不可以在來源或複本伺服器上更新gtid_mode

其他

  • 不支援建立複本的複本。
  • 記憶體內資料表可能會導致複本不同步。這是 MySQL 複寫技術的限制。 如需詳細資訊,請參閱 MySQL 參考文件 \(英文\)。
  • 請確定來源伺服器資料表,具有主索引鍵。 缺少主索引鍵,可能會造成來源伺服器和複本伺服器之間,所產生的複寫延遲。
  • 檢閱 MySQL 文件 \(英文\) 中的完整 MySQL 複寫限制清單

下一步