導(dǎo)出至自建MySQL
AnalyticDB for MySQL支持通過(guò)外表導(dǎo)入導(dǎo)出數(shù)據(jù)。本文介紹如何通過(guò)AnalyticDB for MySQL數(shù)倉(cāng)版的外表導(dǎo)出數(shù)據(jù)至ECS自建MySQL。
前提條件
已創(chuàng)建與AnalyticDB for MySQL集群相同地域、相同VPC的ECS實(shí)例。
已在ECS實(shí)例中安裝自建MySQL。
已在ECS實(shí)例的安全組中對(duì)自建MySQL的端口3306入方向進(jìn)行授權(quán)。詳情請(qǐng)參見添加安全組規(guī)則。
已在ECS自建MySQL上完成創(chuàng)建數(shù)據(jù)庫(kù)并準(zhǔn)備好相關(guān)測(cè)試數(shù)據(jù)等操作。
本文示例中,測(cè)試所用的ECS自建MySQL目標(biāo)庫(kù)名為
test_adb
,并在該庫(kù)中創(chuàng)建了一張名為courses
的目標(biāo)表,用于存儲(chǔ)從AnalyticDB for MySQL集群中導(dǎo)出的數(shù)據(jù)。建表語(yǔ)句如下:CREATE TABLE courses ( id bigint NOT NULL, name varchar(32) NOT NULL, grade varchar(32) NOT NULL, submission_date timestamp NOT NULL, PRIMARY KEY (id) );
如果您的AnalyticDB for MySQL集群是彈性模式,您需要在集群信息頁(yè)面的網(wǎng)絡(luò)信息區(qū)域,打開啟用ENI網(wǎng)絡(luò)的開關(guān)。
操作步驟
連接目標(biāo)AnalyticDB for MySQL集群。詳細(xì)操作步驟,請(qǐng)參見連接集群。
創(chuàng)建源數(shù)據(jù)庫(kù)。詳細(xì)操作步驟,請(qǐng)參見創(chuàng)建數(shù)據(jù)庫(kù)。
本示例中,AnalyticDB for MySQL集群的源庫(kù)名為
adb_demo
。創(chuàng)建源表并插入源數(shù)據(jù)。
使用以下命令在源庫(kù)
adb_demo
中創(chuàng)建一張名為courses
的源表,并將該表中的數(shù)據(jù)導(dǎo)出至自建MySQL目標(biāo)庫(kù)test_adb
的courses
表中。CREATE TABLE courses ( id bigint AUTO_INCREMENT, name varchar NOT NULL, grade varchar DEFAULT '1st Grade', submission_date timestamp ) DISTRIBUTED BY HASH(id);
使用以下命令往源表
courses
中插入一行數(shù)據(jù):INSERT INTO courses (name,submission_date) VALUES("Jams",NOW());
創(chuàng)建外部映射表。
使用以下命令在源庫(kù)
adb_demo
中創(chuàng)建一張名為courses_external_table
的外部映射表。CREATE TABLE IF NOT EXISTS courses_external_table( id bigint NOT NULL, name varchar(32) NOT NULL, grade varchar(32) NOT NULL, submission_date timestamp NOT NULL, PRIMARY KEY (id) ) ENGINE='mysql' TABLE_PROPERTIES='{ "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb", "tablename":"courses", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';
參數(shù)
說(shuō)明
ENGINE=’mysql’
外部表的存儲(chǔ)引擎說(shuō)明,本文使用的是MySQL。
TABLE_PROPERTIES
AnalyticDB for MySQL訪問(wèn)自建MySQL數(shù)據(jù)庫(kù)的訪問(wèn)方式。
url
ECS實(shí)例的主私網(wǎng)IP(即VPC地址)和目標(biāo)庫(kù)名(本文示例中為
test_adb
)。查看步驟如下:登錄ECS管理控制臺(tái)并找到目標(biāo)實(shí)例。
在實(shí)例詳情頁(yè)簽的網(wǎng)絡(luò)信息區(qū)域,查看主私網(wǎng)IP。
格式:
"jdbc:mysql://mysql-vpc-address:3306/ecs-database-name"
。示例:
jdbc:mysql://192.168.128.***:3306/test_adb
。tablename
ECS自建MySQL中目標(biāo)表名,本文示例中為
courses
。username
需要訪問(wèn)ECS自建MySQL目標(biāo)庫(kù)的賬號(hào)。
password
以上賬號(hào)對(duì)應(yīng)的密碼。
charset
MySQL字符集,取值說(shuō)明:
gbk
utf8(默認(rèn)值)
utf8mb4
將源AnalyticDB for MySQL集群中的數(shù)據(jù)導(dǎo)出至目標(biāo)自建MySQL中。
語(yǔ)法如下:
REPLACE INTO courses_external_table SELECT * FROM courses;
后續(xù)步驟
您可以登錄自建MySQL的目標(biāo)test_adb
庫(kù)中,執(zhí)行如下命令查看并驗(yàn)證源表數(shù)據(jù)是否成功導(dǎo)入至目標(biāo)courses
表中:
SELECT * FROM courses LIMIT 100;