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網絡的開關。
操作步驟
串連目標AnalyticDB MySQL叢集。詳細操作步驟,請參見串連叢集。
建立目標資料庫。詳細操作步驟,請參見建立資料庫。
本樣本中,AnalyticDB MySQL叢集的目標庫名為
adb_demo
。- 建立外表。
使用以下命令在目標庫
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_PROPERTIES
AnalyticDB MySQL訪問自建MySQL資料庫的訪問方式。 url
ECS執行個體的主私網IP(即VPC地址)和源庫名(本文樣本中為 test_adb
)。查看步驟如下:- 登入ECS管理主控台並找到目標執行個體。
- 在執行個體詳情頁簽的網路資訊地區,查看主私網IP。
格式:
"jdbc:mysql://mysql-vpc-address:3306/ecs-database-name"
。樣本:
jdbc:mysql://192.168.128.***:3306/test_adb
。tablename
ECS自建MySQL中源表名,本文樣本中為 goods
。username
需要訪問ECS自建MySQL源庫的帳號。 password
以上帳號對應的密碼。 charset
MySQL字元集,取值說明: - gbk
- utf8(預設值)
- utf8mb4
- 建立目標表。
使用以下命令在目標資料庫
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);
- 將源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;