全部產品
Search
文件中心

ApsaraDB for ClickHouse:從MySQL匯入資料

更新時間:Sep 05, 2024

當您需要將雲資料庫RDS MySQL或雲原生資料庫PolarDB MySQL中的資料移轉至雲資料庫ClickHouse中進行即時分析時,本文檔為您提供了以RDS MySQL為參考的樣本,以協助您輕鬆完成資料移轉任務。

前提條件

  • 已建立目的地組群。

    說明
    • 如果您未建立目的地組群,請先建立目的地組群。具體操作,請參見建立叢集

    • 目的地組群需有高許可權資料庫帳號。具體操作,請參見建立帳號

  • RDS MySQL與目的地組群使用了相同的VPC,且在同一地區下,並將彼此的IP添加到了對方白名單中。如果不滿足此條件,請先解決網路問題。具體操作,請參見如何解決目的地組群與資料來源網路互連問題

    • ClickHouse如何添加白名單,請參見設定白名單

    • RDS MySQL如何添加白名單,請參見設定IP白名單

      說明

      您可以通過SELECT * FROM system.clusters;命令查看雲資料庫ClickHouse叢集的IP地址。

步驟一:建立RDS MySQL表並寫入資料

說明

本步驟涉及建立資料庫、表以及填充資料的操作。若您的RDS MySQL中已存在相關資料,可直接跳過此步驟。

  1. 通過DMS串連工具串連RDS MySQL執行個體,具體操作請參見通過DMS登入RDS MySQL

  2. 執行建立資料庫語句。

    CREATE DATABASE testdb;
  3. 執行建表語句,在資料庫testdb中建立表mysql_test_table

    CREATE TABLE testdb.mysql_test_table (
      v1 Int NOT NULL,
      v2 Int DEFAULT NULL,
      v3 Float DEFAULT NULL
    ) ENGINE=InnoDB;
  4. 在表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表

  1. 通過DMS串連雲資料庫ClickHouse叢集,具體操作請參見通過DMS串連ClickHouse

  2. 執行建表語句,以下樣本為在預設資料庫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進行標識。

  3. (可選)建立分布式表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的資料

  1. 查詢匯入到雲資料庫ClickHouse的資料。輸入查詢語句並單擊執行(F8),確認資料是否同步成功,查詢語句如下。

    SELECT * FROM clickhouse_test_table_distributed;
    說明

    如果您匯入的是本地表,請將查詢語句中的分布式表名clickhouse_test_table_distributed更換為本地表名clickhouse_test_table,再進行查詢。

  2. 查詢結果如下。

    image.png

資料類型映射

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