AnalyticDB MySQL版支持通过外表导入导出数据。本文介绍如何通过AnalyticDB MySQL的外表将ECS自建MySQL数据库的数据导入至AnalyticDB MySQL数仓版(3.0)。
前提条件
- 已创建与AnalyticDB MySQL集群同地域的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;