支持的源和目標數據庫
表支持的數據庫
| 源數據庫 | 目標數據庫 |
|---|---|
| 本地自建MySQL數據庫 ECS自建MySQL數據庫 |
Kafka |
前提條件
- 已登錄數據復制服務控制臺。
- 滿足實時同步支持的數據庫類型和版本,詳情請參見實時同步。
使用建議
- 數據庫同步與環境多樣性和人為操作均有密切關系,為了確保同步的平順,建議您在進行正式的數據庫同步之前進行一次演練,可以幫助您提前發現問題并解決問題。
- 建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,避免同步對業務造成性能影響。
使用建議
在創建同步任務前,請務必閱讀以下使用須知。
表 使用須知
類型名稱 使用和操作限制 數據庫權限設置
源數據庫賬號需要具備如下權限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT、RELOAD。
同步對象約束
支持表數據的同步。
不支持非MyISAM和非InnoDB表的同步。
源數據庫要求
MySQL源數據庫的binlog日志必須打開,且binlog日志格式必須為Row格式。
在磁盤空間允許的情況下,建議源數據庫binlog保存時間越長越好,建議為3天。
源數據庫expire_logs_days參數值為0,可能會導致同步失敗。
增量同步時,必須設置MySQL源數據庫的server_id。如果源數據庫版本小于或等于MySQL5.6,server_id的取值范圍在2-4294967296之間;如果源數據庫版本等于MySQL5.7,server_id的取值范圍在1-4294967296之間。
源數據庫中的庫、表名不能包含:'<`>/\以及非ASCII字符。
目標數據庫要求
目標庫為社區Kafka。
操作須知
相互關聯的數據對象要確保同時同步,避免因關聯對象缺失,導致同步失敗。常見的關聯關系:視圖引用表、視圖引用視圖、存儲過程/函數/觸發器引用視圖/表、主外鍵關聯表等。
不支持外鍵級聯操作。
不支持強制清理binlog,否則會導致同步任務失敗。
如果源庫MySQL不支持TLS1.2協議,或者為版本較低的自建庫(低于5.6.46或在5.7-5.7.28之間),需提交運維申請才能使用SSL測試連接。
同步程中,不允許刪除和修改源庫的用戶名、密碼、權限,或修改目標數據庫的端口號。
當在同步過程中,對MyISAM表執行修改操作時,可能造成數據不一致。
選擇表級對象同步時,同步過程中不建議對表進行重命名操作。
由于kafka的機制,Topic名字格式不能以"__" , "."開頭,或以".internal","-internal" 結尾,這些命名格式的Topic會被當做為kafka的內部Topic,業務無法使用。
操作步驟
步驟 1 在“實時同步管理”頁面,單擊“創建同步任務”。
步驟 2 在“同步實例”頁面,填選任務名稱、描述、同步實例信息,單擊“下一步”。
表 任務和描述
| 參數 | 描述 |
|---|---|
| 任務名稱 | 任務名稱在4-50位之間,必須以字母開頭,不區分大小寫,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。 |
| 描述 | 描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
表 同步實例信息
| 參數 | 描述 |
|---|---|
| 數據流動方向 | 選擇“自建-自建”。 |
| 源數據庫引擎 | 選擇“MySQL”。 |
| 目標數據庫引擎 | 選擇“Kafka”。 |
| 網絡類型 | 此處以“公網網絡”為示例。目前支持可選公網網絡、VPC網絡和VPN、專線網絡。 |
| 可用區 | 選擇DRS實例創建在哪個可用區,選擇跟源或目標庫相同的可用區性能更優。 |
| VPC | 選擇可用的虛擬私有云。 |
| 同步實例所在子網 | 請選擇同步實例所在的子網。也可以單擊“查看子網”,跳轉至“網絡控制臺”查看實例所在子網幫助選擇。 默認值為當前所選數據庫實例所在子網,請選擇有可用IP地址的子網。為確保同步實例創建成功,僅顯示已經開啟DHCP的子網。 |
| IP類型 | 選擇遷移實例的IP類型,目前支持選擇“IPv4”或“IPv4&IPv6雙棧”。只有所選擇的VPC及子網都開啟了IPv6雙棧功能,才能選擇IP類型為“IPv4&IPv6雙棧”。 |
| 內網安全組 | 請選擇內網安全組。內網安全組限制實例的安全訪問規則,加強安全訪問。 |
| 同步類型 | * 增量增量同步通過解析日志等技術,將源端產生的增量數據同步至目標端。 無需中斷業務,實現同步過程中源業務和數據庫繼續對外提供訪問。 |
| 標簽 | * 可選配置,對同步任務的標識。使用標簽可方便管理您的任務。每個任務最多支持10個標簽配額。任務創建成功后,您可以單擊任務名稱,在“標簽”頁簽下查看對應標簽。關于標簽的詳細操作,請參見 標簽管理。 |
步驟 3 在“源庫及目標庫”頁面,同步實例創建成功后,填選源庫信息和目標庫信息,單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
表 源庫信息
| 參數 | 描述 |
|---|---|
| IP地址或域名 | 源數據庫的IP地址或域名。 |
| 端口 | 源數據庫服務端口,可輸入范圍為1~65535間的整數。 |
| 數據庫用戶名 | 源數據庫的用戶名。 |
| 數據庫密碼 | 源數據庫的用戶名所對應的密碼。 |
| SSL安全連接 | 通過該功能,用戶可以選擇是否開啟對遷移鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 說明 * 最大支持上傳500KB的證書文件。* 如果不使用SSL證書,請自行承擔數據安全風險。 |
說明源數據庫的數據庫用戶名和密碼,會被系統加密暫存,直至刪除該遷移任務后自動清除。
表 源庫信息
| 參數 | 描述 |
|---|---|
| IP地址或域名 | 目標數據庫的IP地址或域名。 |
步驟 4 在“設置同步”頁面,選擇同步策略、數據格式和同步對象,單擊“下一步”。
表 同步對象
參數 描述 同步Topic策略 同步Topic策略,可選擇
集中投遞到一個Topic:適合源庫業務量不大的場景。
自動生成Topic名字:適合每張表數據量都較大的場景,按每一張庫表來確定一個Topic。
Topic 選擇目標端需要同步到的Topic,同步Topic策略選擇集中投遞到一個Topic時可見。 Topic名字格式 Topic名字格式,同步Topic策略選擇自動生成Topic名字時可見。
Topic名字格式支持database和tablename兩個變量,其他字符都當做常量。分別用$database$代替數據庫名,$tablename$代替表名。
例如:配置成$database$-$tablename$時,如果數據庫名稱為db1,表名為tab1,則Topic名字為db1-tab1。如果是DDL語句,$tablename$為空,則Topic名字為db1。
由于kafka的機制,Topic名字格式不能以"__" , "."開頭,或以".internal","-internal" 結尾,這些命名格式的Topic會被當做為kafka的內部Topic,業務無法使用。同步到kafka partition策略 同步到kafka partition策略。
按庫名+表名的hash值投遞到不同Partition:適用于單表的查詢場景,可以提高單表讀寫性能,推薦使用此選項。
全部投遞到Partition 0:適用于有事務要求的場景,寫入性能比較差,如果沒有強事務要求,不推薦使用此選項。
按表的主鍵值hash值投遞到不同的Partion:適用于一個表一個Topic的場景,避免該表都寫到同一個分區,消費者可以并行從各分區獲取數據。
投送到kafka的數據格式 選擇MySQL投送到kafka的數據格式。
Avro:可以顯示Avro二進制編碼,高效獲取數據。
JSON:為Json消息格式,方便解釋格式,但需要占用更多的空間。
JSON-C:一種能夠兼容多個批量,流式計算框架的數據格式。
詳細格式可參考 Kafka消息格式。
同步對象 同步對象支持表級同步、庫級同步,您可以根據業務場景選擇對應的數據進行同步。
選擇對象的時候支持搜索,以便您快速選擇需要的數據庫對象。
在同步對象右側已選對象框中,可以使用對象名映射功能進行源數據庫和目標數據庫中的同步對象映射,具體操作可參考對象名映射。
步驟 5 在“數據加工”頁面,選擇需要加工的列,進行列加工。
- 如果不需要數據加工,單擊“下一步”。
- 如果需要加工列,參考數據加工章節,設置相關規則。
步驟 6 在“預檢查”頁面,進行同步任務預校驗,校驗是否可進行實時同步。
- 查看檢查結果,如有不通過的檢查項,需要修復不通過項后,單擊“重新校驗”按鈕重新進行任務預校驗。
- 預檢查完成后,且所有檢查項結果均通過時,單擊“下一步”。
說明所有檢查項結果均通過時,若存在請確認項,需要閱讀并確認詳情后才可以繼續執行下一步操作。
步驟 7 在“任務確認”頁面,設置同步任務的啟動時間,并確認同步任務信息無誤后,單擊“啟動任務”,提交同步任務。
表 任務啟動設置
| 參數 | 描述 |
|---|---|
| 啟動時間 | 同步任務的啟動時間可以根據業務需求,設置為“立即啟動”或“稍后啟動”。 說明 預計同步任務啟動后,會對源數據庫和目標數據庫的性能產生影響,建議選擇業務低峰期,合理設置同步任務的啟動時間。 |
步驟 8 同步任務提交后,您可在“管理”頁面,查看并管理自己的任務。
- 您可查看任務提交后的狀態,狀態請參見 任務狀態說明。
- 在任務列表的右上角,單擊
刷新列表,可查看到最新的任務狀態。