當您需要將雲資料庫RDS MySQL或雲原生資料庫PolarDB MySQL中的資料移轉至雲資料庫ClickHouse中進行即時分析時,本文檔為您提供了以RDS MySQL為參考的樣本,以協助您輕鬆完成資料移轉任務。
前提條件
已建立目的地組群。
RDS MySQL與目的地組群使用了相同的VPC,且在同一地區下,並將彼此的IP添加到了對方白名單中。如果不滿足此條件,請先解決網路問題。具體操作,請參見如何解決目的地組群與資料來源網路互連問題。
步驟一:建立RDS MySQL表並寫入資料
本步驟涉及建立資料庫、表以及填充資料的操作。若您的RDS MySQL中已存在相關資料,可直接跳過此步驟。
通過DMS串連工具串連RDS MySQL執行個體,具體操作請參見通過DMS登入RDS MySQL。
執行建立資料庫語句。
CREATE DATABASE testdb;
執行建表語句,在資料庫
testdb
中建立表mysql_test_table
。CREATE TABLE testdb.mysql_test_table ( v1 Int NOT NULL, v2 Int DEFAULT NULL, v3 Float DEFAULT NULL ) ENGINE=InnoDB;
在表
mysql_test_table
中寫入資料。INSERT INTO testdb.mysql_test_table VALUES (4,4,4.0),(1,1,2.0),(1,1,0.0),(4,1,2.0),(7,1,3.0);
步驟二:建立雲資料庫ClickHouse表
通過DMS串連雲資料庫ClickHouse叢集,具體操作請參見通過DMS串連ClickHouse。
執行建表語句,以下樣本為在預設資料庫
default
中建立表clickhouse_test_table
。CREATE TABLE default.clickhouse_test_table ON CLUSTER default ( v1 Int32, v2 Nullable(Int32), v3 Nullable(Float32) ) ENGINE = MergeTree ORDER BY v1;
說明雲資料庫ClickHouse表的結構類型需與RDS MySQL表對應。具體映射關係,請參見資料類型映射。
RDS MySQL建表語句中未指定NOT NULL的列,值可以為NULL。同時,雲資料庫ClickHouse建表語句中的對應列使用Nullable進行標識。
(可選)建立分布式表
clickhouse_test_table_distributed
。說明如果您的雲資料庫ClickHouse叢集為多節點叢集,建議您選擇建立分布式表。分布式表通過利用叢集中各伺服器的儲存和計算資源,實現資料寫入和查詢操作的高效執行。不僅支援優秀的橫向擴充性,還確保了高效能以及高可用性。
CREATE TABLE clickhouse_test_table_distributed ON CLUSTER default AS clickhouse_test_table ENGINE = Distributed(default, default, clickhouse_test_table, rand());
步驟三:讀取RDS MySQL資料並寫入雲資料庫ClickHouse
通過DMS串連雲資料庫ClickHouse叢集並執行遷移語句,具體操作請參見通過DMS串連ClickHouse。
文法如下:
INSERT INTO <ClickHouse表名> select * from mysql('<RDS MySQL串連地址>:<連接埠>', '<RDS MySQL資料庫>','<RDS MySQL表名>', '<RDS MySQL資料庫帳號>', '<RDS MySQL資料庫帳號的密碼>')
如何擷取RDS MySQL的串連地址和連接埠,請參見查看和管理執行個體串連地址和連接埠。
樣本如下。
INSERT INTO clickhouse_test_table_distributed SELECT * FROM mysql('rm-bp16t9h3999xb****.mysql.rds.aliyuncs.com:3306','testdb','mysql_test_table','test','123456Aa');
步驟四:查詢雲資料庫ClickHouse的資料
查詢匯入到雲資料庫ClickHouse的資料。輸入查詢語句並單擊執行(F8),確認資料是否同步成功,查詢語句如下。
SELECT * FROM clickhouse_test_table_distributed;
說明如果您匯入的是本地表,請將查詢語句中的分布式表名
clickhouse_test_table_distributed
更換為本地表名clickhouse_test_table
,再進行查詢。查詢結果如下。
資料類型映射
RDS MySQL或PolarDB MySQL類型 | ClickHouse類型 |
Unsigned tinyint | UInt8 |
Tinyint | Int8 |
Unsigned smallint | UInt16 |
Smallint | Int16 |
Unsigned int,Unsigned mediumint | UInt32 |
Int,Mediumint | Int32 |
Unsigned bigint | UInt64 |
Bigint | Int64 |
Float | Float32 |
Double | Float64 |
Date | Date |
Datetime,Timestamp | DateTime |
Binary | FixedString |
其他 | String |