自建MySQL數據導入
AnalyticDB for MySQL支持通過外表導入導出數據。本文介紹如何通過AnalyticDB for MySQL的外表將ECS自建MySQL數據庫的數據導入至AnalyticDB for MySQL數倉版。
前提條件
已創建與AnalyticDB for 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 for MySQL集群是彈性模式,您需要在集群信息頁面的網絡信息區域,打開啟用ENI網絡的開關。
操作步驟
連接目標AnalyticDB for MySQL集群。詳細操作步驟,請參見連接集群。
創建目標數據庫。詳細操作步驟,請參見創建數據庫。
本示例中,AnalyticDB for 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 for 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 for MySQL集群中。
REPLACE INTO mysql_import_test SELECT * FROM goods_external_table;
后續步驟
導入完成后,您可以登錄AnalyticDB for MySQL的目標庫adb_demo
中,執行如下命令查看并驗證源表數據是否成功導入至目標mysql_import_test
表中:
SELECT * FROM mysql_import_test LIMIT 100;