遷移StarRocks數(shù)據(jù)
遷移StarRocks數(shù)據(jù)到云數(shù)據(jù)庫(kù) SelectDB 版的方式主要有Catalog和X2Doris兩種。您可依據(jù)遷移的數(shù)據(jù)量和業(yè)務(wù)場(chǎng)景,選擇合適的方式完成數(shù)據(jù)遷移。本文為您介紹StarRocks的離線數(shù)據(jù)遷移到云數(shù)據(jù)庫(kù) SelectDB 版的各個(gè)方式以及方式選擇規(guī)則。
方式選擇
根據(jù)不同的業(yè)務(wù)場(chǎng)景,選擇合適您的遷移方式。具體的方式選擇可以參考如下規(guī)則:
方式 | 適用場(chǎng)景 | 推薦原因 | 具體操作 |
Catalog | 數(shù)據(jù)存儲(chǔ)在阿里云平臺(tái)。 說明 包括阿里云EMR集群等場(chǎng)景。 |
| |
X2Doris |
|
|
本文將以Catalog方式,詳細(xì)介紹如遷移StarRocks的離線數(shù)據(jù)到SelectDB。
通過Catalog遷移數(shù)據(jù)
前提條件
已將StarRocks實(shí)例IP添加至SelectDB的白名單。具體操作,請(qǐng)參見設(shè)置白名單。
了解什么是Catalog,以及Catalog的基本操作。更多詳情,請(qǐng)參見湖倉(cāng)一體。
示例環(huán)境
本示例為將StarRocks的數(shù)據(jù)庫(kù)starRocks_db中表SR_t的數(shù)據(jù)遷移到SelectDB 數(shù)據(jù)庫(kù)test_db中表test_SR2SelectDB中。在實(shí)際使用中,請(qǐng)根據(jù)您的實(shí)際情況修改對(duì)應(yīng)參數(shù)。示例環(huán)境如下:
目標(biāo)庫(kù):test_db
目標(biāo)表:test_SR2SelectDB
源數(shù)據(jù)庫(kù):starRocks_db
源數(shù)據(jù)表:SR_t
源數(shù)據(jù)準(zhǔn)備示例
登錄您的源數(shù)據(jù)StarRocks,進(jìn)行以下操作。
創(chuàng)建數(shù)據(jù)庫(kù)。
CREATE DATABASE starRocks_db;
創(chuàng)建表。
CREATE TABLE SR_t ( id int, name string, age int ) DISTRIBUTED BY HASH(id) BUCKETS 4 PROPERTIES("replication_num" = "1");
插入數(shù)據(jù)。
INSERT INTO SR_t VALUES (1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35), (4, 'David', 40), (5, 'Eve', 45);
操作步驟
連接SelectDB實(shí)例。具體操作,請(qǐng)參見通過MySQL客戶端連接云數(shù)據(jù)庫(kù)SelectDB版實(shí)例。
創(chuàng)建StarRocks JDBC Catalog。更多操作,請(qǐng)參見JDBC數(shù)據(jù)源。
CREATE CATALOG starrocks_catalog PROPERTIES ( "type"="jdbc", "user"="root", "password"="123456", "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", "driver_url" = "mysql-connector-java-8.0.25.jar", "driver_class" = "com.mysql.cj.jdbc.Driver", "checksum" = "fdf55dcef04b09f2eaf42b75e61ccc9a" )
參數(shù)說明
參數(shù)
必選
默認(rèn)值
說明
user
是
無
StarRocks數(shù)據(jù)庫(kù)的賬號(hào)。
password
是
無
StarRocks數(shù)據(jù)庫(kù)的密碼。
jdbc_url
是
無
JDBC連接串。需要包含StarRocks數(shù)據(jù)庫(kù)的連接地址。
driver_url
是
無
JDBC Driver的Jar包名稱。
說明推薦使用
mysql-connector-java-8.0.25.jar
。若期望使用其他Jar包,支持工單咨詢。
driver_class
是
無
JDBC Driver的Class名稱。
推薦設(shè)置為
com.mysql.cj.jdbc.Driver
。lower_case_table_names
(4.0版本改名為lower_case_meta_names)
否
"false"
指定是否以小寫的形式同步JDBC外部數(shù)據(jù)源的庫(kù)名和表名。
true:通過維護(hù)小寫名稱到遠(yuǎn)程系統(tǒng)中實(shí)際名稱的映射,能夠查詢非小寫的數(shù)據(jù)庫(kù)和表。此時(shí),庫(kù)表列名都會(huì)被轉(zhuǎn)換為小寫。
false:不能查詢非小寫的數(shù)據(jù)庫(kù)和表。
重要對(duì)于SelectDB 3.0版本。
當(dāng) FE 參數(shù)的
lower_case_table_names
設(shè)置為1
或2
時(shí), Catalog 的lower_case_table_names
參數(shù)必須設(shè)置為true
。當(dāng) FE 參數(shù)的
lower_case_table_names
設(shè)置為0
,則 Catalog 的參數(shù)可以為true
或false
。
對(duì)于SelectDB 4.0版本。
當(dāng) FE 的
lower_case_table_names
參數(shù)為0
或2
時(shí),庫(kù)名表名列名都不會(huì)被轉(zhuǎn)換。當(dāng) FE 的
lower_case_table_names
參數(shù)為1
時(shí),表名會(huì)被轉(zhuǎn)換為小寫,庫(kù)名和列名不會(huì)被轉(zhuǎn)換。
only_specified_database
否
"false"
指定是否只同步指定的Database。
true:只同步JDBC URL中指定的數(shù)據(jù)源的 Database。
false:同步JDBC URL中所有的Database。
include_database_list
否
""
當(dāng)
only_specified_database=true
時(shí),指定同步多個(gè)Database,以英文逗號(hào)分隔。Database名稱大小寫敏感。exclude_database_list
否
""
當(dāng)
only_specified_database=true
時(shí),指定不需要同步的多個(gè)Database,以英文逗號(hào)分隔。Database名稱大小寫敏感。meta_names_mapping
否
""
如果外部數(shù)據(jù)源存在名稱相同只有大小寫不同的情況,例如 DORIS 和 doris,Doris 由于歧義而在查詢 Catalog 時(shí)報(bào)錯(cuò),此時(shí)需要配置
meta_names_mapping
參數(shù)來解決沖突。具體操作,請(qǐng)參見小寫名稱同步。
重要此參數(shù)僅適用于SelectDB4.0版本。
查看Catalog。
SHOW CATALOGS; --查看CATALOG是否創(chuàng)建成功
查詢結(jié)果如下。
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+ | CatalogId | CatalogName | Type | IsCurrent | CreateTime | LastUpdateTime | Comment | +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+ | 436009309195 | SR_catalog | jdbc | | 2024-08-06 17:09:08.058 | 2024-07-19 18:04:37 | | | 0 | internal | internal | yes | UNRECORDED | NULL | Doris internal catalog | +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
(可選)切換至External Catalog SR_catalog目錄下。
您可以像使用Internal Catalog一樣,對(duì)External Catalog SR_catalog的數(shù)據(jù)進(jìn)行查看和訪問。
說明目前,云數(shù)據(jù)庫(kù) SelectDB 版對(duì)External Catalog中的數(shù)據(jù)只支持讀操作。
SWITCH SR_catalog;
(可選)切換內(nèi)部的catalog internal目錄下。
如果您沒有執(zhí)行第4步,跳過此步驟。
SWITCH internal;
(可選)創(chuàng)建數(shù)據(jù)。
如果您已經(jīng)創(chuàng)建了目標(biāo)數(shù)據(jù)庫(kù),可跳過此步驟。
CREATE database test_db;
切換至目標(biāo)數(shù)據(jù)庫(kù)。
USE test_db;
創(chuàng)建表。
如果您已經(jīng)有了目標(biāo)表,請(qǐng)檢查目標(biāo)列類型與StarRocks源數(shù)據(jù)列類型是否一一對(duì)應(yīng)。
如果您還沒有目標(biāo)表,創(chuàng)建表時(shí),目標(biāo)列類型需與StarRocks源數(shù)據(jù)列類型一一對(duì)應(yīng)。
列映射詳情,請(qǐng)參見類型映射。
CREATE TABLE test_SR2SelectDB ( id int, name string, age int ) DISTRIBUTED BY HASH(id) BUCKETS 4 PROPERTIES("replication_num" = "1");
遷移數(shù)據(jù)。
INSERT INTO test_SR2SelectDB SELECT * FROM doris_catalog.SR_db.SR_t;
查看數(shù)據(jù)導(dǎo)入情況。
SELECT * FROM test_SR2SelectDB;
遷移增量數(shù)據(jù)
實(shí)際生產(chǎn)環(huán)境中,StarRocks數(shù)據(jù)主要分為離線數(shù)據(jù)和增量數(shù)據(jù)。由于StarRocks數(shù)據(jù)遷移到SelectDB,通常的使用場(chǎng)景是拷貝一份數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行查詢加速,因此對(duì)于增量數(shù)據(jù)的遷移,可以考慮以下兩種方式:
在生產(chǎn)SelectDB數(shù)據(jù)時(shí)并行寫入一份數(shù)據(jù)到SelectDB。
通過周期性作業(yè)讀取StarRocks中的分區(qū)數(shù)據(jù)寫入SelectDB。