分享方式:


如何設定適用於 MySQL 的 Azure 資料庫中的資料輸出複寫

適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

本文說明如何藉由設定來源和複本伺服器,在 適用於 MySQL 的 Azure 資料庫 彈性伺服器中設定數據輸出複寫。 本文假設您先前已具備一些使用 MySQL 伺服器和資料庫的經驗。

針對數據輸出復寫,來源一律 適用於 MySQL 的 Azure 資料庫 彈性伺服器。 複本可以是其他雲端提供者、內部部署或虛擬機器上的任何外部 MySQL 伺服器。 在執行本文中的步驟之前,請先檢閱資料輸入複寫的限制和需求。

注意

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

建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例,以作為來源使用。

  1. 建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器的新實例(例如,sourceserver.mysql.database.Azure.com)。 請參閱使用 Azure 入口網站 建立伺服器建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。 此伺服器是資料輸出複寫的「來源」伺服器。

  2. 建立重複的使用者帳戶和對應權限。

    1. 使用者帳戶不會從來源伺服器複寫到複本伺服器。 假設您打算為使用者提供複本伺服器的存取權。 在此情況下,您必須在此新建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例上手動建立所有帳戶和對應的許可權。

設定來源 MySQL 伺服器

下列步驟會準備並設定 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例作為來源。

  1. 網路需求

    請確定已建立您的網路設定,讓來源和複本伺服器能夠順暢地通訊。
    如果來源伺服器處於公用存取狀態,請確定防火牆規則允許複本伺服器 IP 位址。 如果複本伺服器裝載在 Azure 上,請確定您已從 Azure 入口網站中的網路頁面選取允許從任何 Azure 服務的公用存取選項。 如果來源伺服器處於私人存取狀態,請確定複本伺服器可以透過 Vnet 對等互連或 VNet 對 VNet VPN 閘道連線連接到來源。

  2. 開啟二進位記錄

    執行下列命令,以檢查來源伺服器是否已啟用二進位記錄:

    SHOW VARIABLES LIKE 'log_bin';
    

    如果變數 log_bin 傳回的值是「ON」,表示伺服器上的二進位記錄已啟用。

  3. 建立新的複寫角色並設定權限

    在使用複寫權限設定的來源伺服器上建立使用者帳戶。 此作業可透過 SQL 命令或 MySQL Workbench 等工具完成。 考慮是打算否使用 SSL 進行複寫,因為此設定必須在建立使用者時指定。 請參閱 MySQL 文件,了解如何在來源伺服器中新增使用者帳戶

    在下列命令中,新複寫角色除了從裝載來源伺服器的機器存取來源伺服器,還可從任何機器存取來源伺服器。 在建立使用者命令中指定 "syncuser@'%'",即可執行此作業。 請參閱 MySQL 文件,進一步了解指定帳戶名稱

    有一些工具可用來設定帳戶名稱。 選取最符合您環境的選項。

使用 SSL 的複寫

若要讓所有使用者連線都使用 SSL,請使用以下命令建立使用者:

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;

不使用 SSL 的複寫

若所有連線皆不需要使用 SSL,請使用以下命令建立使用者:

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';

傾印並還原來源伺服器。

如果是新建立的來源伺服器,且沒有現有的資料可移轉至複本,請略過本節。 此時,您可以解除鎖定資料表:

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

如果來源伺服器有現有的資料要遷移至複本,請遵循下列步驟。

  1. 判斷您要復寫到 適用於 MySQL 的 Azure 資料庫 彈性伺服器中的資料庫和數據表,然後從來源伺服器執行傾印。 您可使用 mysqldump 從主要伺服器傾印資料庫。 如需詳細資訊,請造訪傾印和還原。 您不需要傾印 MySQL 程式庫和測試程式庫。

  2. 將來源伺服器設為讀取/寫入模式。

傾印資料庫之後,將來源 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例變更為讀取/寫入模式。

SET GLOBAL read_only = OFF;
UNLOCK TABLES;
  1. 將傾印檔案還原至新的伺服器。 將傾印檔案還原至 適用於 MySQL 的 Azure 資料庫 彈性伺服器中建立的伺服器。 請參閱傾印和還原,以將傾印檔案還原至 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。 如果傾印檔案太大,請先在與複本伺服器所在區域相同的區域中,將檔案上傳至 Azure 內的虛擬機器。 從虛擬機將它還原至 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。

注意

如果您希望避免在傾印和還原時將資料庫設定為唯讀,您可以使用 mydumper/myloader

設定複本伺服器以啟動資料輸出複寫。

  1. 篩選

    假設 適用於 MySQL 的 Azure 資料庫 彈性伺服器與其他雲端提供者或內部部署上的外部 MySQL 之間設定資料輸出複寫。 在此情況下,您必須使用複寫篩選器來篩選複本伺服器上的 Azure 自訂資料表。 設定 Replicate_Wild_Ignore_Table = 「mysql.__%」 來篩選 適用於 MySQL 的 Azure 資料庫 彈性伺服器 mysql 內部數據表,即可達成此目的。 如需修改此伺服器參數的詳細資訊,請參閱 MySQL :: MySQL 5.7 Reference Manual :: 13.4.2.2 CHANGE REPLICATION FILTER 陳述式

  2. 連線至複本伺服器並開啟複本伺服器上的 MySQL 殼層,以設定複本伺服器。 從提示中執行下列作業,以同時設定數個 MySQL 複寫設定:

    CHANGE THE REPLICATION SOURCE TO
    SOURCE_HOST='<master_host>',
    SOURCE_USER='<master_user>',
    SOURCE_PASSWORD='<master_password>',
    SOURCE_LOG_FILE='<master_log_file>',
    SOURCE_LOG_POS=<master_log_pos>
    
    • master_host:來源伺服器的主機名稱 (範例 – 'source.mysql.database.Azure.com')
    • master_user:來源伺服器的使用者名稱 (範例 - 'syncuser'@'%')
    • master_password:來源伺服器的密碼
    • master_log_file:執行 show master status 產生的二進位記錄檔的名稱
    • master_log_pos:執行 show master status 產生的二進位記錄檔的位置

    注意

    若要針對連線使用 SSL,請將屬性 SOURCE_SSL=1 新增至命令。 如需在複寫內容中使用 SSL 的詳細資訊,請造訪 - https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html

  3. 使用下列命令啟動複本伺服器。

    START REPLICA;
    

    此時,複本執行個體會開始複寫對源伺服器資料庫所做的任何變更。 您可以在來源資料庫上建立範例資料表,並檢查是否成功複寫,藉此測試此資料表。

  4. 檢查複寫狀態。

    在複本伺服器上呼叫 show 從屬 status\G 命令,以檢視複寫狀態。

     show slave status;
    

    如果 Slave_IO_Running 和 Slave_SQL_Running 的狀態皆為 yes,且 Seconds_Behind_Master 的值為 0,則複寫可以運作良好。 Seconds_Behind_Master 會指出複本的延遲時間。 若值不是 0,則代表複本正在處理更新。

    如果複本伺服器裝載在 Azure VM 中,請將 [允許存取 Azure 服務] 在來源上設為 [開啟],以允許來源和複本伺服器通訊。 於連線安全性選項可以變更此項設定。 如需詳細資訊,請造訪使用入口網站管理防火牆規則

    如果您使用 mydumper/myloader 傾印資料庫,您可以從 /backup/metadata 檔案取得 master_log_file 和 master_log_pos。

後續步驟