注意
本文包含 SLAVE 一詞的參考,Microsoft 已不再使用該字詞。 從軟體中移除該字詞時,我們也會將其從本文中移除。
本文說明如何將 MySQL 異動數據擷取來源新增至事件數據流。 目前,可從下列服務支援 MySQL 資料庫 CDC,其中可以公開存取資料庫:
- 適用於 MySQL 的 Azure 資料庫
- Amazon RDS for MySQL(適用於MySQL的Amazon關聯式資料庫服務)
- 亞馬遜 Aurora MySQL
- Google Cloud SQL for MySQL (GCP)。
本指南使用 適用於 MySQL 的 Azure 資料庫 CDC 作為範例。
將 MySQL 資料庫 CDC 來源新增至事件數據流之後,它會擷取指定數據表的數據列層級變更。 然後,這些變更可以實時處理,並傳送到不同的目的地,以進行進一步分析。
必要條件
- 在 Fabric 容量授權模式或具有參與者或更高許可權的試用版授權模式中存取工作區。
- 存取 MySQL 資料庫的實例,例如:適用於 MySQL 的 Azure 資料庫中的資料庫 - 彈性伺服器。
- 您的 MySQL 資料庫必須可公開存取,且不可位於防火牆後方或在 Azure 虛擬網路中受保護。
- 如果您沒有 eventstream, 請建立 eventstream。
設定 MySQL DB
連接器會使用Debezium MySQL連接器來擷取 MySQL 資料庫中的變更。 您必須在傳訊連接器可從中擷取變更的所有資料庫上,定義具有適當權限的 MySQL 使用者。 您可以直接使用 系統管理員使用者 連線到通常具有適當許可權的資料庫,或者您可以遵循下列步驟來建立新的使用者:
注意
新的使用者或系統管理員帳戶和對應的密碼將用於稍後在 Eventstream 內連線到資料庫。
在
mysql命令提示字元中,建立 MySQL 使用者:mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';將所需的權限授與使用者:
mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%';注意
當無法使用全域讀取鎖定時,在像 Amazon RDS 或 Aurora 等雲端託管服務中,使用數據表層級鎖定來建立一致的快照集。 在此情況下,您必須將
LOCK TABLES許可權授與使用者。 此外,若要在快照集期間支援FLUSH作業,您可能也需要賦予RELOAD或FLUSH_TABLES許可權。完成使用者的權限:
mysql> FLUSH PRIVILEGES;
若要確認使用者或系統管理員是否已授與必要許可權,請執行此命令,然後顯示步驟 2 中的必要許可權:
SHOW GRANTS FOR user;
如需將必要權限授與使用者的詳細資訊,請參閱 MySQL 的 Debezium 連接器:Debezium 檔。
啟用 binlog
您必須啟用 MySQL 複寫的二進位記錄。 二進制日誌會記錄交易更新,以供同步工具傳播變更。 本節使用 Azure 資料庫適用於 MySQL 的 CDC 作為範例來顯示設定步驟。
在適用於 MySQL 的 Azure 資料庫帳戶的 Azure 入口網站頁面中,在左側導覽中選取 [設定] 下的 [伺服器參數]。
在 [ 伺服器參數] 頁面上,設定下列屬性,然後選取 [ 儲存]。
針對 binlog_row_image,選取 完整。
針對 binlog_expire_logs_seconds,設定服務在清除二進位記錄檔之前等候的秒數。 設定值以符合環境的需求,例如 86400。
將 MySQL DB (CDC) 新增為來源
如果你還沒在事件串流中新增任何來源,請選擇 「使用外部來源 」磁磚。
如果你是將原始碼加入已發布的事件串流,請切換到 編輯 模式。 在色帶上選擇 新增來源>外部來源。
在 選取數據源 頁面上,搜尋 MySQL DB(CDC) 圖格並選取 連線。
設定並連線到 MySQL DB (CDC)
在 [連線] 畫面的 [連線] 底下,選取 [新增連線] 以建立雲端連線。
輸入下列 連線設定 和 MySQL DB 連線憑證,然後選取 [連線]。
伺服器: MySQL 資料庫的伺服器位址,例如 my-mysql-server.mysql.database.azure.com。
資料庫:資料庫名稱,例如 my_database。
線上名稱:自動產生,或者您可以輸入此連線的新名稱。
Username 和 Password:輸入 MySQL 資料庫的認證。 請確定您輸入 伺服器管理帳戶 或 擁有必需權限的用戶帳戶。
輸入下列資訊來配置 MySQL DB CDC 資料來源,然後選取 下一步。
埠:預設值為3306。 如果您在 管理連線和閘道中設定選取的雲端連線,請確定埠號碼符合該處設定的埠號碼。 如果兩者不相符,管理連線和閘道中的雲端連線埠號碼會優先。
表格: 選擇 所有表格 或 輸入表格名稱。 如果您選取後者,請使用完整資料表標識碼 (
databaseName.tableName) 或有效正則表達式的逗號分隔清單來指定資料表。 例如:- 使用
databaseName.test.*來選取名稱開頭為databaseName.test的所有數據表。 - 使用
databaseName\.(test1|test2)來選取databaseName.test1並databaseName.test2。
您可以使用逗號來混合這兩種格式。 整個專案的字元總計限製為 102,400 個字元。
- 使用
伺服器標識碼:輸入 MySQL 叢集中每個伺服器和復寫用戶端的唯一值。 預設值為 1000。
注意
為每個讀取器設定不同的伺服器識別碼。 讀取 binlog 的每個 MySQL 資料庫用戶端都應該有唯一標識碼,稱為伺服器識別碼。 MySQL 伺服器會使用此標識符來維護網路連線和 binlog 位置。 共用相同伺服器識別碼的不同作業可能會導致從錯誤的 binlog 位置讀取。 因此,建議為每個讀取器設定不同的伺服器標識符。
您可以展開 進階設定 以存取更多 MySQL 資料庫 CDC 來源的設定選項:
-
快照鎖定模式:選項如下:
-
Minimal (default):僅在初始階段保留全域讀取鎖以擷取結構與元資料。 快照的其餘部分使用 REPEATABLE READ 交易,允許在讀取資料時進行更新。 -
Extended:在整個快照期間維持全域讀取鎖,阻擋所有寫入。 如果能接受寫入封鎖,請使用此方法以達到完全一致性。 -
None:在快照中跳過取得表格鎖。 只有在程式期間沒有發生架構變更時,才安全。
-
-
十進位處理模式:指定連接器如何處理
DECIMAL和NUMERIC列值:-
Precise:表示使用精確十進位型別的值(例如 JavaBigDecimal),以確保數據表示的完整精確度和精確度。 -
Double:將值轉換成雙精確度浮點數。 這可改善可用性和效能,但可能會導致精確度降低。 -
String:將值編碼為格式化字串。 這可讓它們輕鬆地在下游系統中取用,但會遺失原始數值類型的語意資訊。
-
-
快照模式:在連接器啟動時指定執行快照的條件:
-
Initial:當沒有為邏輯伺服器名稱記錄偏移量,或偵測到先前的快照未完成時,連接器僅會執行快照。 快照完成後,連接器開始串流事件記錄以供後續資料庫變更使用。 -
InitialOnly:僅當邏輯伺服器名稱尚未記錄偏移時,連接器才會執行快照。 快照完成後,連接器停止運作。 它不會切換到串流來讀取binlog的變更事件。 -
NoData: 連接器執行一個快照,只捕捉結構,卻不捕捉任何資料表資料。 如果你不需要資料的一致快照,但只需要自連接器開始以來發生的變更,就設定這個選項。
-
您也可以在右側的 串流詳細資訊 區段中,選取 來源名稱 的 鉛筆按鈕 來編輯來源名稱。
-
快照鎖定模式:選項如下:
在 [檢閱 + 連線] 頁面上,檢閱 MySQL DB CDC 來源的摘要之後,選取 [新增] 以完成設定。
檢視更新的事件串流
相關內容
其他連接器: