全部產品
Search
文件中心

AnalyticDB:自建MySQL資料匯入

更新時間:Jul 06, 2024

AnalyticDB MySQL版支援通過外表匯入匯出資料。本文介紹如何通過AnalyticDB MySQL的外表將ECS自建MySQL資料庫的資料匯入至AnalyticDB MySQL數倉版

前提條件

  • 已建立與AnalyticDB MySQL叢集相同地區、相同VPC的ECS執行個體。

  • 已在ECS執行個體中安裝自建MySQL。

  • 已在ECS執行個體的安全性群組中對自建MySQL的連接埠3306入方向進行授權。詳情請參見添加安全性群組規則

  • 需在ECS自建MySQL上完成建立資料庫並準備好相關測試資料等操作。
    本文樣本中,測試所用的ECS自建MySQL源庫名為test_adb,並在該庫中建立了一張名為goods的源表,建表語句如下:
    CREATE TABLE goods (
    goods_id bigint(20) NOT NULL,
    price double NOT NULL,
    class bigint(20) NOT NULL,
    name varchar(32) NOT NULL,
    update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (goods_id)
    );
  • 如果您的AnalyticDB MySQL叢集是彈性模式,您需要在集群資訊頁面的網路資訊地區,開啟啟用ENI網絡的開關。啟用ENI網路

操作步驟

  1. 串連目標AnalyticDB MySQL叢集。詳細操作步驟,請參見串連叢集

  2. 建立目標資料庫。詳細操作步驟,請參見建立資料庫

    本樣本中,AnalyticDB MySQL叢集的目標庫名為adb_demo

  3. 建立外表。

    使用以下命令在目標庫adb_demo中建立一張名為goods_external_table的外表。

    CREATE TABLE IF NOT EXISTS goods_external_table (
            goods_id bigint(20) NOT NULL,
            price double NOT NULL,
            class bigint(20) NOT NULL,
            name varchar(32) NOT NULL,
            update_time timestamp,
            PRIMARY KEY (goods_id)
     )
            ENGINE='mysql'  
            TABLE_PROPERTIES='{  
            "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb",  
            "tablename":"goods",  
            "username":"mysql-user-name",  
            "password":"mysql-user-password",
            "charset":"utf8"
      }';
    參數說明
    ENGINE=’mysql’外部表格的儲存引擎說明,本文使用的是MySQL。
    TABLE_PROPERTIESAnalyticDB MySQL訪問自建MySQL資料庫的訪問方式。
    urlECS執行個體的主私網IP(即VPC地址)和源庫名(本文樣本中為test_adb)。查看步驟如下:
    1. 登入ECS管理主控台並找到目標執行個體。
    2. 執行個體詳情頁簽的網路資訊地區,查看主私網IP

    格式:"jdbc:mysql://mysql-vpc-address:3306/ecs-database-name"

    樣本:jdbc:mysql://192.168.128.***:3306/test_adb

    tablenameECS自建MySQL中源表名,本文樣本中為goods
    username需要訪問ECS自建MySQL源庫的帳號。
    password以上帳號對應的密碼。
    charsetMySQL字元集,取值說明:
    • gbk
    • utf8(預設值)
    • utf8mb4
  4. 建立目標表。

    使用以下命令在目標資料庫adb_demo中建立一張名為mysql_import_test的目標表,用於儲存從ECS自建MySQL匯入的資料。

    CREATE TABLE IF NOT EXISTS  mysql_import_test (
            goods_id bigint(20) NOT NULL,
            price double NOT NULL,
            class bigint(20) NOT NULL,
            name varchar(32) NOT NULL,
            update_time timestamp,
            PRIMARY KEY (goods_id)
     )
    DISTRIBUTED BY HASH(goods_id);
  5. 將源ECS自建MySQL執行個體中的資料匯入至目標AnalyticDB MySQL叢集中。
    REPLACE INTO mysql_import_test
    SELECT * FROM goods_external_table;

後續步驟

匯入完成後,您可以登入AnalyticDB MySQL的目標庫adb_demo中,執行如下命令查看並驗證源表資料是否成功匯入至目標mysql_import_test表中:

SELECT * FROM mysql_import_test LIMIT 100;