同步 OceanBase 數(shù)據(jù)庫的數(shù)據(jù)至 DataHub
本文為您介紹如何同步 OceanBase 數(shù)據(jù)庫(MySQL 和 Oracle 租戶)的數(shù)據(jù)至 DataHub。
前提條件
數(shù)據(jù)傳輸已具備云資源訪問權(quán)限。詳情請(qǐng)參見 數(shù)據(jù)傳輸遷移角色授權(quán)。
已為源端 OceanBase 數(shù)據(jù)庫創(chuàng)建專用于數(shù)據(jù)同步任務(wù)的數(shù)據(jù)庫用戶,并為其賦予了相關(guān)權(quán)限。詳情請(qǐng)參見 創(chuàng)建數(shù)據(jù)庫用戶。
使用限制
選擇全量同步時(shí),數(shù)據(jù)傳輸僅支持同步具有唯一鍵的表。
同步 DDL 僅支持 BLOB 類型的 Topic。
數(shù)據(jù)同步過程中,數(shù)據(jù)傳輸支持刪除表之后再新建表,即支持對(duì)已經(jīng)同步的表進(jìn)行
DROP TABLE
操作后,再執(zhí)行CREATE TABLE
。數(shù)據(jù)傳輸不支持通過重命名的方式新建表,即不支持執(zhí)行RENAME TABLE a TO a_tmp
操作。數(shù)據(jù)傳輸支持字符集配置為 UTF-8 和 GBK 的數(shù)據(jù)同步。
待同步的表名和其中的列名不能包含中文字符。
數(shù)據(jù)傳輸僅支持同步庫名、表名和列名為 ASCII 碼且不包含特殊字符(包括換行、空格,以及 .|"'`()=;/&\)的對(duì)象。
數(shù)據(jù)傳輸不支持 OceanBase 備庫作為源端。
DataHub 相關(guān)的使用限制如下:
DataHub 官方限制一條消息的具體大小取決于云環(huán)境,通常為 1 MB。
由于是攢批發(fā)送,DataHub 限制一次只能發(fā)送 4 MB 的消息。
DataHub 的官方限制和命名規(guī)范請(qǐng)參見 限制描述。
注意事項(xiàng)
在源端為 OceanBase 數(shù)據(jù)庫并開啟同步 DDL 的數(shù)據(jù)同步任務(wù)中,如果源端庫表發(fā)生重命名(
RENAME
)操作,建議您重新啟動(dòng)任務(wù),避免增量同步丟失數(shù)據(jù)。當(dāng) OceanBase 數(shù)據(jù)庫 V4.x 進(jìn)行增量同步時(shí),如果生成列沒有標(biāo)記 STORED 屬性,Tuple 類型的 Topic 寫入到目標(biāo)端為 NULL,而 BLOB 類型的 Topic 目標(biāo)端不會(huì)寫入該列。
當(dāng)更新的行包括 LOB 列時(shí):
如果 LOB 列為更新列,請(qǐng)勿依賴 LOB 列在
UPDATE
或DELETE
操作前的值。目前使用 LOB 列進(jìn)行存儲(chǔ)的數(shù)據(jù)類型包括 JSON、GIS、XML、UDT(用戶定義類型),以及 LONGTEXT、MEDIUMTEXT 等各類 TEXT。
如果 LOB 列為非更新列,LOB 列在
UPDATE
或DELETE
操作前或操作后的值均為 NULL。
如果在創(chuàng)建數(shù)據(jù)同步任務(wù)時(shí),您僅配置了 增量同步,數(shù)據(jù)傳輸要求源端數(shù)據(jù)庫的本地增量日志保存 48 小時(shí)以上。
如果在創(chuàng)建數(shù)據(jù)同步任務(wù)時(shí),您配置了 全量同步+增量同步,數(shù)據(jù)傳輸要求源端數(shù)據(jù)庫的本地增量日志至少保留 7 天以上。否則數(shù)據(jù)傳輸可能因無法獲取增量日志而導(dǎo)致數(shù)據(jù)同步任務(wù)失敗,甚至導(dǎo)致源端和目標(biāo)端數(shù)據(jù)不一致。
同步 OceanBase 數(shù)據(jù)庫的增量數(shù)據(jù)至 DataHub 時(shí),其中包含表結(jié)構(gòu)至 DataHub Schema 的初始化 Schema。下表為 DataHub 數(shù)據(jù)類型的支持情況,僅適用于 Tuple 類型的 Topic。
類型
描述
值域
BIGINT
8 字節(jié)有符號(hào)整型
-9223372036854775807 ~ 9223372036854775807
DOUBLE
8 字節(jié)雙精度浮點(diǎn)數(shù)
-1.0 _10^308 ~ 1.0 _10^308
BOOLEAN
布爾類型
True/False
true/false
0/1
TIMESTAMP
時(shí)間戳類型
表示到微秒的時(shí)間戳類型
STRING
字符串,僅支持 UTF-8 編碼
單個(gè) STRING 列最大支持 2 MB
INTEGER
4 字節(jié)整型
-2147483648 ~ 2147483647
FLOAT
4 字節(jié)單精度浮點(diǎn)數(shù)
-3.40292347_10^38 ~ 3.40292347_10^38
DECIMAL
數(shù)字型
- 10^38 +1 ~ 10^38 - 1
支持的源端和目標(biāo)端實(shí)例類型
下表中,OceanBase 數(shù)據(jù)庫 MySQL 租戶簡(jiǎn)稱為 OB_MySQL,OceanBase 數(shù)據(jù)庫 Oracle 租戶簡(jiǎn)稱為 OB_Oracle。
源端 | 目標(biāo)端 |
OB_MySQL(OceanBase 集群實(shí)例) | DataHub(阿里云 DataHub 實(shí)例) |
OB_MySQL(OceanBase 集群實(shí)例) | DataHub(VPC 內(nèi)自建 DataHub 實(shí)例) |
OB_MySQL(OceanBase 集群實(shí)例) | DataHub(公網(wǎng) DataHub 實(shí)例) |
OB_MySQL(Serverless 實(shí)例) | DataHub(阿里云 DataHub 實(shí)例) |
OB_MySQL(Serverless 實(shí)例) | DataHub(VPC 內(nèi)自建 DataHub 實(shí)例) |
OB_MySQL(Serverless 實(shí)例) | DataHub(公網(wǎng) DataHub 實(shí)例) |
OB_Oracle(OceanBase 集群實(shí)例) | DataHub(阿里云 DataHub 實(shí)例) |
OB_Oracle(OceanBase 集群實(shí)例) | DataHub(VPC 內(nèi)自建 DataHub 實(shí)例) |
OB_Oracle(OceanBase 集群實(shí)例) | DataHub(公網(wǎng) DataHub 實(shí)例) |
同步 DDL 支持的范圍
源端為 OceanBase 數(shù)據(jù)庫 MySQL 租戶時(shí),如果您選擇 Tuple 類型的 Topic,則同步 DDL 僅支持
ALTER ADD COLUMN
,并且會(huì)忽略 NOT NULL 約束。源端為 OceanBase 數(shù)據(jù)庫 Oracle 租戶時(shí),同步 DDL 僅支持 BLOB 類型的 Topic。
修改表
ALTER TABLE
添加列
ADD COLUMN
修改列的長(zhǎng)度
MODIFY COLUMN
刪除列
DROP COLUMN
創(chuàng)建索引
CREATE INDEX
刪除索引
DROP INDEX
清空表
TRUNCATE
說明延遲刪除場(chǎng)景下,同一個(gè)事務(wù)中會(huì)有兩條一樣的
TRUNCATE TABLE
DDL。此時(shí),下游消費(fèi)需要按照冪等方式處理。
數(shù)據(jù)類型映射
目前同步的 DataHub 類型僅支持 INTEGER、BIGINT、TIMESTAMP、FLOAT、DOUBLE、DECIMAL、STRING 和 BOOLEAN。
如果您選擇新建 Topic 的映射方式時(shí),創(chuàng)建了其他類型的 Topic,會(huì)導(dǎo)致數(shù)據(jù)同步失敗。
本文表格中提供的默認(rèn)映射規(guī)則為最合適的映射。如果您改變映射,可能會(huì)產(chǎn)生報(bào)錯(cuò)。
OceanBase 數(shù)據(jù)庫 MySQL 租戶和 DataHub 之間的數(shù)據(jù)類型映射
同步 OceanBase 數(shù)據(jù)庫 MySQL 租戶的數(shù)據(jù)至 DataHub 時(shí),支持選擇 Topic 類型為 BLOB 和 Tuple。下述表格為您介紹 DataHub(Tuple 類型)選擇序列化格式為 Default 和 DTSCompatible 的數(shù)據(jù)類型映射,DataHub(BLOB 類型)的數(shù)據(jù)類型映射詳情請(qǐng)參見 數(shù)據(jù)格式說明。
同步 OceanBase 數(shù)據(jù)庫 MySQL 租戶的數(shù)據(jù)至 DataHub(Tuple 類型) 時(shí),選擇序列化格式為 Default,數(shù)據(jù)類型映射如下。
OceanBase 數(shù)據(jù)庫 MySQL 租戶
默認(rèn)映射 DataHub 類型
BIT
STRING(Base64 編碼)
CHAR
STRING
BINARY
STRING(Base64 編碼)
VARBINARY
STRING(Base64 編碼)
INT
BIGINT
TINYTEXT
STRING
SMALLINT
BIGINT
MEDIUMINT
BIGINT
BIGINT
DECIMAL(因?yàn)闊o符號(hào)超過 Java 中的 LONG 大小)
FLOAT
DECIMAL
DOUBLE
DECIMAL
DECIMAL
DECIMAL
DATE
STRING
TIME
STRING
YEAR
BIGINT
DATETIME
STRING
TIMESTAMP
TIMESTAMP(使用毫秒級(jí)時(shí)間戳展示)
VARCHAR
STRING
TINYBLOB
STRING(Base64 編碼)
TINYTEXT
STRING
BLOB
STRING(Base64 編碼)
TEXT
STRING
MEDIUMBLOB
STRING(Base64 編碼)
MEDIUMTEXT
STRING
LONGBLOB
STRING(Base64 編碼)
LONGTEXT
STRING
同步 OceanBase 數(shù)據(jù)庫 MySQL 租戶的數(shù)據(jù)至 DataHub(Tuple 類型) 時(shí),選擇序列化格式為 DTSCompatible,數(shù)據(jù)類型映射如下。
OceanBase 數(shù)據(jù)庫 MySQL 租戶
默認(rèn)映射 DataHub 類型
CHAR
STRING
VARCHAR
STRING
BINARY
STRING
VARBINARY
STRING
BIT(1)
BIT 的取值包括 0 和 1。
BOOLEAN
BIT 列值 = 0 時(shí),則 DataHub 的 BOOLEAN 值是
false
。BIT 列值 = 1 時(shí),則 DataHub 的 BOOLEAN 值是
true
。
BIT(n)
STRING(HEX 編碼)
目前 BIT 類型的數(shù)據(jù)存在位數(shù)可能與數(shù)據(jù)庫位數(shù)無法對(duì)齊的問題。例如,bit(10),如果數(shù)據(jù)為 0,則 DTS 展示為 000,但數(shù)據(jù)傳輸展示為 00。
TINYINT
BIGINT
SMALLINT
BIGINT
MEDIUMINT
BIGINT
INT
BIGINT
BIGINT
BIGINT
由于 DataHub 的 BIGINT 是有符號(hào)的,范圍為 -9223372036854775807 ~ 9223372036854775807。如果存在超出 9223372036854775807(源端是無符號(hào)位 BIGINT)的數(shù)據(jù),會(huì)導(dǎo)致 DataHub 數(shù)據(jù)溢出,出現(xiàn)數(shù)據(jù)不一致的問題。
FLOAT
DOUBLE
有效位是 7 位,超出 7 位可能存在精度不一致的問題。
DOUBLE
DOUBLE
有效位是 16 位,超出 16 位可能存在精度不一致的問題。
DECIMAL
DECIMAL
DATE
TIMESTAMP(使用 +08:00 時(shí)區(qū)轉(zhuǎn)換,微妙精度)
TIME
STRING
YEAR
STRING
DATETIME
TIMESTAMP(使用 +08:00 時(shí)區(qū)轉(zhuǎn)換,微妙精度)
TIMESTAMP
TIMESTAMP(微妙精度)
TINYTEXT
STRING
MEDIUMTEXT
STRING
TEXT
STRING
LONGTEXT
STRING
TINYBLOB
STRING(HEX 編碼)
MEDIUMBLOB
STRING(HEX 編碼)
BLOB
STRING(HEX 編碼)
LONGBLOB
STRING(HEX 編碼)
OceanBase 數(shù)據(jù)庫 Oracle 租戶和 DataHub 之間的數(shù)據(jù)類型映射
OceanBase 數(shù)據(jù)庫 Oracle 租戶 | 默認(rèn)映射 DataHub 類型 |
CHAR | STRING |
NCHAR | STRING |
VARCHAR2 | STRING |
NVARCHAR2 | STRING |
CLOB | STRING |
BLOB | STRING(Base64 編碼) |
NUMBER | DECIMAL |
BINARY_FLOAT | DECIMAL |
BINARY_DOUBLE | DECIMAL |
DATE | STRING |
TIMESTAMP | STRING |
TIMESTAMP WITH TIME ZONE | STRING |
TIMESTAMP WITH LOCAL TIME ZONE | STRING |
INTERVAL YEAR TO MONTH | STRING |
INTERVAL DAY TO SECOND | STRING |
RAW | STRING(Base64 編碼) |
補(bǔ)充 Properties
如果自行創(chuàng)建 Topic,啟動(dòng)數(shù)據(jù)同步任務(wù)前,請(qǐng)?jiān)?DataHub 的 Schema 中補(bǔ)充下述 Properties。如果由數(shù)據(jù)傳輸自動(dòng)創(chuàng)建 Topic 和結(jié)構(gòu)同步,數(shù)據(jù)傳輸會(huì)自動(dòng)補(bǔ)充下述 Properties。
該部分內(nèi)容適用于在 同步選項(xiàng) > 高級(jí)選項(xiàng) 頁面,選擇 序列化方式 為 Default 的 Tuple 類型的 Topic。
名稱 | 類型 | 含義 |
oms_timestamp | STRING | 發(fā)生變更的時(shí)間。 |
oms_table_name | STRING | 源端為表時(shí),變更表名。 |
oms_database_name | STRING | 源端為數(shù)據(jù)庫時(shí),變更庫名。 |
oms_sequence | STRING | 數(shù)據(jù)至同步進(jìn)程內(nèi)存中的時(shí)間戳,由時(shí)間 + 5 位遞增數(shù)字組成。如果發(fā)生時(shí)鐘回退的情況,會(huì)導(dǎo)致數(shù)據(jù)不一致。 |
oms_record_type | STRING | 變更類型,包括 |
oms_is_before | STRING | 如果是 |
oms_is_after | STRING | 如果是 |
當(dāng)源端為 OceanBase 數(shù)據(jù)庫 MySQL 租戶,并且在 選擇同步對(duì)象 頁面,選擇 Topic 類型為 Tuple 時(shí),您在 同步選項(xiàng) > 高級(jí)選項(xiàng) 頁面,選擇 序列化方式 為 DTSCompatible,列名稱會(huì)統(tǒng)一加上 dts_
后綴。例如,源端 OceanBase 數(shù)據(jù)庫 MySQL 租戶中的 columnName
為 c1
,同步至目標(biāo)端 DataHub 中為 dts_c1
。字段轉(zhuǎn)換說明如下。
字段名稱 | 數(shù)據(jù)類型 | 描述 |
dts_record_id | STRING | 增量日志的記錄 ID,是該日志的唯一標(biāo)識(shí)。 通常記錄 ID 會(huì)自增,但在容災(zāi)遷移時(shí),不同機(jī)器時(shí)鐘不同步可能存在不一致的情況。 |
dts_operation_flag | STRING | 操作類型,取值包括:
|
dts_db_name | STRING | 數(shù)據(jù)庫的名稱。OceanBase 數(shù)據(jù)庫的格式為 |
dts_table_name | STRING | 表的名稱。 |
dts_utc_timestamp | STRING | 操作時(shí)間戳,即 Binlog 的時(shí)間戳(UTC 時(shí)間)。 |
dts_before_flag | STRING | 所有列的值是否為更新前的值,取值包括 Y 和 N。 |
dts_after_flag | STRING | 所有列的值是否為更新后的值,取值包括 Y 和 N。 |
操作步驟
登錄 OceanBase 管理控制臺(tái),購買數(shù)據(jù)同步任務(wù)。
詳情請(qǐng)參見 購買數(shù)據(jù)同步任務(wù)。
在 數(shù)據(jù)傳輸 > 數(shù)據(jù)同步 頁面,單擊新購買的數(shù)據(jù)同步任務(wù)后的 配置。
如果您需要引用已有的任務(wù)配置信息,可以單擊 引用配置。詳情請(qǐng)參見 引用和清空數(shù)據(jù)同步任務(wù)配置。
在 選擇源和目標(biāo) 頁面,配置各項(xiàng)參數(shù)。
參數(shù)
描述
同步任務(wù)名稱
建議使用中文、數(shù)字和字母的組合。名稱中不能包含空格,長(zhǎng)度不能超過 64 個(gè)字符。
源端
如果您已新建 OceanBase 數(shù)據(jù)源,請(qǐng)從下拉列表中進(jìn)行選擇。如果未新建,請(qǐng)單擊下拉列表中的 新建數(shù)據(jù)源,在右側(cè)對(duì)話框進(jìn)行新建。參數(shù)詳情請(qǐng)參見 新建 OceanBase 數(shù)據(jù)源。
目標(biāo)端
如果您已新建 DataHub 數(shù)據(jù)源,請(qǐng)從下拉列表中進(jìn)行選擇。如果未新建,請(qǐng)單擊下拉列表中的 新建數(shù)據(jù)源,在右側(cè)對(duì)話框進(jìn)行新建。參數(shù)詳情請(qǐng)參見 新建 DataHub 數(shù)據(jù)源。
標(biāo)簽(可選)
單擊文本框,在下拉列表中選擇目標(biāo)標(biāo)簽。您也可以單擊 管理標(biāo)簽 進(jìn)行新建、修改和刪除。詳情請(qǐng)參見 通過標(biāo)簽管理數(shù)據(jù)同步任務(wù)。
單擊 下一步。在 選擇同步類型 頁面,選擇當(dāng)前數(shù)據(jù)同步任務(wù)的同步類型。
同步類型包括 結(jié)構(gòu)同步、全量同步 和 增量同步。其中,結(jié)構(gòu)同步 實(shí)際為創(chuàng)建 Topic,增量同步 包括 DML 同步(包括
Insert
、Delete
和Update
)和 DDL 同步,您可以根據(jù)需求進(jìn)行自定義配置。詳情請(qǐng)參見 自定義配置 DDL/DML。說明當(dāng)源端為 OceanBase 數(shù)據(jù)庫 Oracle 租戶時(shí),如果您在此處選擇了 DDL 同步,則 選擇同步對(duì)象 頁面的 Topic 類型僅支持選擇 BLOB。
單擊 下一步。在 選擇同步對(duì)象 頁面,選擇當(dāng)前數(shù)據(jù)同步任務(wù)需要同步的 Topic 類型和對(duì)象。
Topic 類型包括 Tuple 和 BLOB。源端為 OceanBase 數(shù)據(jù)庫 Oracle 租戶時(shí),Tuple 類型的 Topic 不支持同步 DDL,支持類似于數(shù)據(jù)庫記錄的數(shù)據(jù),每條記錄包含多個(gè)列。BLOB 類型的 Topic 僅支持寫入一塊二進(jìn)制數(shù)據(jù)作為一個(gè) Record,數(shù)據(jù)將會(huì)以 BASE64 編碼傳輸。詳情請(qǐng)參見 DataHub 官方文檔。
選擇需要同步的 Topic 類型后,您可以通過 指定對(duì)象 和 匹配規(guī)則 兩個(gè)入口選擇同步對(duì)象。本文為您介紹通過 指定對(duì)象 方式選擇同步對(duì)象的具體操作,配置匹配規(guī)則的詳情請(qǐng)參見 配置匹配規(guī)則 中庫到消息隊(duì)列的通配規(guī)則說明和配置方式。
說明如果您在 選擇同步類型 步驟已勾選 DDL 同步,建議通過匹配規(guī)則方式選擇同步對(duì)象,以確保所有符合同步對(duì)象規(guī)則的新增對(duì)象都將被同步。如果您通過指定對(duì)象方式選擇同步對(duì)象,則新增對(duì)象或重命名后的對(duì)象將不會(huì)被同步。
在 選擇同步對(duì)象 區(qū)域,選中 指定對(duì)象。
在選擇區(qū)域左側(cè)選中需要同步的對(duì)象。
單擊 >。
根據(jù)業(yè)務(wù)需求,選擇映射方式。
如果您需要同步 Tuple 類型的單張表或同步 BLOB 類型的表,請(qǐng)?jiān)?將對(duì)象映射至 Topic 對(duì)話框中,選擇需要的映射方式進(jìn)行配置,單擊 確定。
如果選擇同步類型時(shí)未勾選 結(jié)構(gòu)同步,則僅支持選擇 已有 Topic。如果選擇同步類型時(shí)已選擇 結(jié)構(gòu)同步,則僅支持選擇一種映射方式進(jìn)行 Topic 的創(chuàng)建或選擇。
例如,已選擇結(jié)構(gòu)同步的情況下,您使用了新建 Topic 和選擇已有 Topic 兩種映射方式,或通過重命名的方式更改了 Topic 的名稱,會(huì)因?yàn)檫x項(xiàng)沖突導(dǎo)致預(yù)檢查報(bào)錯(cuò)。
參數(shù)
描述
新建 Topic
在文本框中輸入新建 Topic 的名稱。支持 128 位以內(nèi)的字母、數(shù)字或下劃線(_),且必須以字母開頭。
選擇 Topic
數(shù)據(jù)傳輸提供查詢 DataHub Topic 的能力,您可以單擊 選擇 Topic,在 已有 Topic 下拉列表中,搜索并選中需要同步的 Topic。
批量生成 Topic
批量生成 Topic 的規(guī)則為
Topic_${Database Name}_${Table Name}
。如果您選擇 新建 Topic 或 批量生成 Topic,結(jié)構(gòu)同步成功后,在 DataHub 側(cè)能夠查詢到新建的 Topic。其分片數(shù)量默認(rèn)為 2 個(gè),數(shù)據(jù)過期時(shí)間默認(rèn)為 7 天,且不支持修改。
如果您需要同步 Tuple 類型的多張表,請(qǐng)?jiān)趶棾龅膶?duì)話框中,單擊 確定。
如果您選擇 Tuple 類型的 Topic 但未勾選 結(jié)構(gòu)同步,選擇多張表時(shí),需要在 將對(duì)象映射至 Topic 對(duì)話框中選擇一個(gè)已有 Topic 并單擊 確定。
此時(shí),右側(cè)一個(gè) Topic 下會(huì)顯示多張表,但實(shí)際僅支持同步一張表。單擊 下一步,界面會(huì)彈出提示:Tuple 類型的 Topic 與表僅支持 One to One 映射關(guān)系。
數(shù)據(jù)傳輸支持通過文本導(dǎo)入對(duì)象,并支持對(duì)目標(biāo)端對(duì)象進(jìn)行重命名、設(shè)置行過濾、移除單個(gè)對(duì)象或全部對(duì)象等操作。目標(biāo)端對(duì)象的結(jié)構(gòu)為 Topic>Database>Table。
說明通過 匹配規(guī)則 方式選擇同步對(duì)象時(shí),重命名能力由匹配規(guī)則語法覆蓋,操作處僅支持設(shè)置過濾條件,以及選擇分片列和需要同步的列。詳情請(qǐng)參見 配置匹配規(guī)則。
操作
步驟
導(dǎo)入對(duì)象
在選擇區(qū)域的右側(cè)列表中,單擊右上角的 導(dǎo)入對(duì)象。
在對(duì)話框中,單擊 確定。
重要導(dǎo)入會(huì)覆蓋之前的操作選擇,請(qǐng)謹(jǐn)慎操作。
在 導(dǎo)入同步對(duì)象 對(duì)話框中,導(dǎo)入需要同步的對(duì)象。 您可以通過導(dǎo)入 CSV 文件的方式進(jìn)行庫表重命名、設(shè)置行過濾條件等操作。詳情請(qǐng)參見 下載和導(dǎo)入同步對(duì)象配置。
單擊 檢驗(yàn)合法性。
通過合法性的檢驗(yàn)后,單擊 確定。
更改 Topic
選擇 Topic 類型為 BLOB 時(shí),支持對(duì)目標(biāo)對(duì)象進(jìn)行更改 Topic 操作。詳情請(qǐng)參見 更改 Topic。
設(shè)置
數(shù)據(jù)傳輸支持
WHERE
條件實(shí)現(xiàn)行過濾,以及選擇分片列和需要同步的列。在選擇區(qū)域的右側(cè)列表中,鼠標(biāo)懸停至目標(biāo)表對(duì)象。
單擊顯示的 設(shè)置。
在 設(shè)置 對(duì)話框中,您可以進(jìn)行以下操作。
在 行過濾條件 區(qū)域的文本框中,輸入標(biāo)準(zhǔn)的 SQL 語句中的
WHERE
子句,來配置行過濾。詳情請(qǐng)參見 SQL 條件過濾數(shù)據(jù)。在 分片列 下拉列表中,選擇目標(biāo)分片列。您可以選擇多個(gè)字段作為分片列,該參數(shù)為可選。
選擇分片列時(shí),如果沒有特殊情況,默認(rèn)選擇主鍵即可。如果存在主鍵負(fù)載不均衡的情況,請(qǐng)選擇唯一性標(biāo)識(shí)且負(fù)載相對(duì)均衡的字段作為分片列,避免潛在的性能問題。分片列的主要作用如下:
負(fù)載均衡:在目標(biāo)端可以進(jìn)行并發(fā)寫入的情況下,通過分片列區(qū)分發(fā)送消息需要使用的特定線程。
有序性:由于存在并發(fā)寫入可能導(dǎo)致的無序問題,數(shù)據(jù)傳輸確保在分片列的值相同的情況下,用戶接收到的消息是有序的。此處的有序是指變更順序(DML 對(duì)于一列的執(zhí)行順序)。
在 選擇列 區(qū)域,選擇需要同步的列。詳情請(qǐng)參見 列過濾。
單擊 確定。
移除/全部移除
數(shù)據(jù)傳輸支持在數(shù)據(jù)映射時(shí),對(duì)暫時(shí)選中到目標(biāo)端的單個(gè)或多個(gè)對(duì)象進(jìn)行移除操作。
移除單個(gè)同步對(duì)象
在選擇區(qū)域的右側(cè)列表中,鼠標(biāo)懸停至目標(biāo)對(duì)象,單擊顯示的 移除,即可移除該同步對(duì)象。
移除全部同步對(duì)象
在選擇區(qū)域的右側(cè)列表中,單擊右上角的 全部移除。在對(duì)話框中,單擊 確定,即可移除全部同步對(duì)象。
單擊 下一步。在 同步選項(xiàng) 頁面,配置各項(xiàng)參數(shù)。
全量同步
在 選擇同步類型 頁面,選中 全量同步,才會(huì)顯示下述參數(shù)。
參數(shù)
描述
讀取并發(fā)配置
該參數(shù)用于配置全量同步階段從源端讀取數(shù)據(jù)的并發(fā)數(shù),最大限制為 512.并發(fā)數(shù)過高可能會(huì)造成源端壓力過大,影響業(yè)務(wù)。
寫入并發(fā)配置
該參數(shù)用于配置全量同步階段往目標(biāo)端寫入數(shù)據(jù)的并發(fā)數(shù),最大限制為 512。并發(fā)數(shù)過高可能會(huì)造成目標(biāo)端壓力過大,影響業(yè)務(wù)。
全量同步速率限制
您可以根據(jù)實(shí)際需求決定是否開啟全量同步速率限制。如果開啟,請(qǐng)?jiān)O(shè)置 RPS(全量同步階段每秒最多可以同步至目標(biāo)端的數(shù)據(jù)行數(shù)的最大值限制)和 BPS(全量同步階段每秒最多可以同步至目標(biāo)端的數(shù)據(jù)量的最大值限制)。
說明此處設(shè)置的 RPS 和 BPS 僅作為限速限流能力,全量同步實(shí)際可以達(dá)到的性能受限于源端、目標(biāo)端、實(shí)例規(guī)格配置等因素的影響。
增量同步
在 選擇同步類型 頁面,選中 增量同步,才會(huì)顯示下述參數(shù)。
參數(shù)
描述
寫入并發(fā)配置
該參數(shù)用于配置增量同步階段往目標(biāo)端寫入數(shù)據(jù)的并發(fā)數(shù),最大限制為 512。并發(fā)數(shù)過高可能會(huì)造成目標(biāo)端壓力過大,影響業(yè)務(wù)。
增量同步速率限制
您可以根據(jù)實(shí)際需求決定是否開啟增量同步速率限制。如果開啟,請(qǐng)?jiān)O(shè)置 RPS(增量同步階段每秒最多可以同步至目標(biāo)端的數(shù)據(jù)行數(shù)的最大值限制)和 BPS(增量同步階段每秒最多可以同步至目標(biāo)端的數(shù)據(jù)量的最大值限制)。
說明此處設(shè)置的 RPS 和 BPS 僅作為限速限流能力,增量同步實(shí)際可以達(dá)到的性能受限于源端、目標(biāo)端、實(shí)例規(guī)格配置等因素的影響。
增量同步起始位點(diǎn)
如果選擇同步類型時(shí)已選擇 全量同步,則不支持修改該參數(shù)。
如果選擇同步類型時(shí)未選擇 全量同步,但選擇了 增量同步,請(qǐng)?jiān)诖颂幹付ㄍ侥硞€(gè)時(shí)間節(jié)點(diǎn)之后的數(shù)據(jù),默認(rèn)為當(dāng)前系統(tǒng)時(shí)間。詳情請(qǐng)參見 設(shè)置增量同步位點(diǎn)。
高級(jí)選項(xiàng)
參數(shù)
描述
序列化方式
控制數(shù)據(jù)同步至 DataHub 的消息格式,目前支持 Default、Canal、DataWorks(支持 V2.0)、SharePlex、DefaultExtendColumnType、Debezium、DebeziumFlatten、DebeziumSmt 和 DTSCompatible。詳情請(qǐng)參見 序列化方式的格式說明。
重要僅在 選擇同步對(duì)象 頁面,選擇 Topic 類型為 BLOB 時(shí),或源端為 OceanBase 數(shù)據(jù)庫 MySQL 租戶并選擇 Topic 類型為 Tuple 時(shí),才會(huì)顯示該參數(shù)。
目前僅 OceanBase 數(shù)據(jù)庫 MySQL 租戶支持 Debezium、DebeziumFlatten、DebeziumSmt 和 DTSCompatible。
當(dāng)源端為 OceanBase 數(shù)據(jù)庫 MySQL 租戶,并且在 選擇同步對(duì)象 頁面,選擇 Topic 類型為 Tuple 時(shí),序列化方式支持 Default 和 DTSCompatible。
分區(qū)規(guī)則
同步源端數(shù)據(jù)至 DataHub Topic 的規(guī)則,目前支持 Hash 和 Table。推薦您選擇 Table,以確保下游在消費(fèi)消息時(shí),不會(huì)出現(xiàn) DDL 與 DML 消費(fèi)不統(tǒng)一的情況。
Hash 表示數(shù)據(jù)傳輸使用一定的 Hash 算法,根據(jù)主鍵值或分片列值 Hash 選擇 DataHub 的 Shard。
Table 表示數(shù)據(jù)傳輸將一張表中的全部數(shù)據(jù)投遞至同一個(gè)分區(qū)中,以表名作為 Hash 鍵。
說明如果在 選擇同步類型 頁面選擇了 同步 DDL,則分區(qū)規(guī)則僅支持 Table。
業(yè)務(wù)系統(tǒng)標(biāo)識(shí)(可選)
僅選擇 序列化方式 為 DataWorks 時(shí),會(huì)顯示該參數(shù),用于標(biāo)識(shí)數(shù)據(jù)的業(yè)務(wù)系統(tǒng)來源,以便您后續(xù)進(jìn)行自定義處理。該業(yè)務(wù)系統(tǒng)標(biāo)識(shí)的長(zhǎng)度限制為 1~20 個(gè)字符。
單擊 預(yù)檢查。
在 預(yù)檢查 環(huán)節(jié),數(shù)據(jù)傳輸僅檢查列名、列類型,以及是否為空,不檢查長(zhǎng)度和默認(rèn)值。如果預(yù)檢查報(bào)錯(cuò):
您可以在排查并處理問題后,重新執(zhí)行預(yù)檢查,直至預(yù)檢查成功。
您也可以單擊錯(cuò)誤預(yù)檢查項(xiàng)操作列中的 跳過,會(huì)彈出對(duì)話框提示您跳過本操作的具體影響,確認(rèn)可以跳過后,請(qǐng)單擊對(duì)話框中的 確定。
預(yù)檢查成功后,單擊 啟動(dòng)任務(wù)。
如果您暫時(shí)無需啟動(dòng)任務(wù),請(qǐng)單擊 保存。后續(xù)您只能在 同步任務(wù)列表 頁面手動(dòng)啟動(dòng)任務(wù)或通過批量操作啟動(dòng)任務(wù)。批量操作的詳情請(qǐng)參見 批量操作數(shù)據(jù)同步任務(wù)。
數(shù)據(jù)傳輸支持在數(shù)據(jù)同步任務(wù)運(yùn)行過程中修改同步對(duì)象,詳情請(qǐng)參見 查看和修改同步對(duì)象及其過濾條件。數(shù)據(jù)同步任務(wù)啟動(dòng)后,會(huì)根據(jù)選擇的同步類型依次執(zhí)行,詳情請(qǐng)參見 查看同步詳情。
如果數(shù)據(jù)同步任務(wù)運(yùn)行報(bào)錯(cuò)(通常由于網(wǎng)絡(luò)不通或進(jìn)程啟動(dòng)過慢導(dǎo)致),您可以在數(shù)據(jù)同步任務(wù)的列表或詳情頁面,單擊 恢復(fù)。