AnalyticDB MySQL版支持通过外表导入导出数据。本文介绍如何通过AnalyticDB MySQL数仓版(3.0)的外表导出数据至云数据库RDS MySQL。
前提条件
- RDS MySQL实例需与AnalyticDB MySQL集群在同一个VPC下,且该VPC网段需加入RDS MySQL实例的白名单中。详细操作步骤,请参见设置RDS的IP白名单。
- 需在RDS MySQL实例上完成创建数据库和连接实例等操作,并准备好相关测试数据。详细操作步骤,请参见创建数据库和账号和连接RDS MySQL实例。本文示例中,测试所用的RDS MySQL目标库名为
test_adb
,并在该库中创建了一张名为courses
的目标表,用于存储从AnalyticDB MySQL集群中导出的数据。建表语句如下: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 MySQL集群是弹性模式,您需要在集群信息页面的网络信息区域,打开启用ENI网络的开关。
操作步骤
- 连接目标AnalyticDB MySQL集群。详细操作步骤,请参见连接集群。
- 创建源数据库。详细操作步骤,请参见创建数据库。
本示例中,AnalyticDB MySQL集群的源库名为
adb_demo
。 - 创建源表并插入源数据。
使用以下命令在源库
adb_demo
中创建一张名为courses
的源表,并将该表中的数据导出至RDS MySQL目标库test_adb
的courses
表中。CREATE TABLE courses ( id bigint AUTO_INCREMENT, name varchar NOT NULL, grade varchar DEFAULT '1st Grade', submission_date timestamp ) DISTRIBUTE BY HASH(id);
使用以下命令往源表courses
中插入一行数据:INSERT INTO courses (name,submission_date) VALUES("Jams",NOW());
- 创建外部映射表。使用以下命令在源库
adb_demo
中创建一张名为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" }';
参数 说明 ENGINE=’mysql’
外部表的存储引擎说明,本文使用的是MySQL。 TABLE_PROPERTIES
AnalyticDB MySQL访问RDS MySQL数据的访问方式。 url
RDS MySQL实例中的内网地址(即VPC连接地址)和目标库名(本文示例中为 test_adb
),查看RDS地址信息的方法,请参见 查看或修改内外网地址和端口。格式:
"jdbc:mysql://mysql-vpc-address:3306/rds-database-name"
。示例:
jdbc:mysql://rm-bp1hem632****.mysql.rds.aliyuncs.com:3306/test_adb
。tablename
RDS MySQL中目标表名,本文示例中为 courses
。username
需要访问RDS MySQL目标库的账号。 password
以上账号对应的密码。 charset
MySQL字符集,取值说明: - gbk
- utf8(默认值)
- utf8mb4
- 将源AnalyticDB MySQL集群中的数据导入至目标RDS MySQL实例中。语法如下:
REPLACE INTO courses_external_table SELECT * FROM courses;
后续步骤
导入完成后,您可以登录RDS MySQL的目标
test_adb
库中,执行如下命令查看并验证源表数据是否成功导入至目标courses
表中:SELECT * FROM courses LIMIT 100;