如何設定適用於 MySQL 的 Azure 資料庫中的資料輸出複寫
適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器
本文說明如何藉由設定來源和複本伺服器,在 適用於 MySQL 的 Azure 資料庫 彈性伺服器中設定數據輸出複寫。 本文假設您先前已具備一些使用 MySQL 伺服器和資料庫的經驗。
針對數據輸出復寫,來源一律 適用於 MySQL 的 Azure 資料庫 彈性伺服器。 複本可以是其他雲端提供者、內部部署或虛擬機器上的任何外部 MySQL 伺服器。 在執行本文中的步驟之前,請先檢閱資料輸入複寫的限制和需求。
注意
本文參照「從屬」一詞,而 Microsoft 已不再使用該字詞。 從軟體中移除該字詞時,我們也會將其從本文中移除。
建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例,以作為來源使用。
建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器的新實例(例如,sourceserver.mysql.database.Azure.com)。 請參閱使用 Azure 入口網站 建立伺服器建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。 此伺服器是資料輸出複寫的「來源」伺服器。
建立重複的使用者帳戶和對應權限。
- 使用者帳戶不會從來源伺服器複寫到複本伺服器。 假設您打算為使用者提供複本伺服器的存取權。 在此情況下,您必須在此新建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例上手動建立所有帳戶和對應的許可權。
設定來源 MySQL 伺服器
下列步驟會準備並設定 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例作為來源。
網路需求
請確定已建立您的網路設定,讓來源和複本伺服器能夠順暢地通訊。
如果來源伺服器處於公用存取狀態,請確定防火牆規則允許複本伺服器 IP 位址。 如果複本伺服器裝載在 Azure 上,請確定您已從 Azure 入口網站中的網路頁面選取允許從任何 Azure 服務的公用存取選項。 如果來源伺服器處於私人存取狀態,請確定複本伺服器可以透過 Vnet 對等互連或 VNet 對 VNet VPN 閘道連線連接到來源。注意
如需詳細資訊 - 網路概觀 - 適用於 MySQL 的 Azure 資料庫 彈性伺服器。
開啟二進位記錄
執行下列命令,以檢查來源伺服器是否已啟用二進位記錄:
SHOW VARIABLES LIKE 'log_bin';
如果變數 log_bin 傳回的值是「ON」,表示伺服器上的二進位記錄已啟用。
建立新的複寫角色並設定權限
在使用複寫權限設定的來源伺服器上建立使用者帳戶。 此作業可透過 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;
如果來源伺服器有現有的資料要遷移至複本,請遵循下列步驟。
判斷您要復寫到 適用於 MySQL 的 Azure 資料庫 彈性伺服器中的資料庫和數據表,然後從來源伺服器執行傾印。 您可使用 mysqldump 從主要伺服器傾印資料庫。 如需詳細資訊,請造訪傾印和還原。 您不需要傾印 MySQL 程式庫和測試程式庫。
將來源伺服器設為讀取/寫入模式。
傾印資料庫之後,將來源 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例變更為讀取/寫入模式。
SET GLOBAL read_only = OFF;
UNLOCK TABLES;
- 將傾印檔案還原至新的伺服器。 將傾印檔案還原至 適用於 MySQL 的 Azure 資料庫 彈性伺服器中建立的伺服器。 請參閱傾印和還原,以將傾印檔案還原至 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。 如果傾印檔案太大,請先在與複本伺服器所在區域相同的區域中,將檔案上傳至 Azure 內的虛擬機器。 從虛擬機將它還原至 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。
注意
如果您希望避免在傾印和還原時將資料庫設定為唯讀,您可以使用 mydumper/myloader。
設定複本伺服器以啟動資料輸出複寫。
篩選
假設 適用於 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 陳述式。
連線至複本伺服器並開啟複本伺服器上的 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
使用下列命令啟動複本伺服器。
START REPLICA;
此時,複本執行個體會開始複寫對源伺服器資料庫所做的任何變更。 您可以在來源資料庫上建立範例資料表,並檢查是否成功複寫,藉此測試此資料表。
檢查複寫狀態。
在複本伺服器上呼叫 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。
後續步驟
- 深入了解資料輸出複寫
- 深入了解資料輸入複寫
- 如何設定資料輸入複寫
- 深入了解如何在 Azure 中使用讀取複本進行複寫