本文介绍如何在云原生数据仓库AnalyticDB MySQL版湖仓版(3.0)中读写RDS MySQL数据。
前提条件
- 已创建RDS MySQL实例。详细操作步骤,请参见创建RDS MySQL实例。
- 已在RDS MySQL实例所在的同一VPC中创建AnalyticDB MySQL湖仓版(3.0)集群。详细操作步骤,请参见创建湖仓版(3.0)集群。
- 已在AnalyticDB MySQL控制台集群信息页面的网络信息栏启用ENI网络开关。
- 已将AnalyticDB MySQL的VPC网段加入RDS MySQL实例的白名单中。详细操作步骤,请参见设置RDS的IP白名单。
示例数据说明
本文示例的RDS MySQL数据库名为
test_adb
,并在该库中创建了一张名为person
的表,示例如下:CREATE TABLE IF NOT EXISTS test_adb.person(
id int,
name varchar(1023),
age int
);
向
person
表中插入数据,示例如下:INSERT INTO test_adb.person values
(1, 'james', 10),
(2, 'bond', 20),
(3, 'jack', 30),
(4, 'lucy', 40);
操作步骤
- 进入SQL开发编辑器。
- 登录云原生数据仓库AnalyticDB MySQL控制台。
- 在页面左上角,选择集群所在地域。
- 在左侧导航栏,单击集群列表。
- 在湖仓版(3.0)页签下,单击目标集群ID。
- 在左侧导航栏,单击 。
- 引擎选择Xihe,资源组选择Interactive型资源组。
- 执行以下语句,创建外部数据库。示例如下:
CREATE EXTERNAL DATABASE adb_external_db;
- 执行以下语句,创建外表。示例如下:说明 AnalyticDB MySQL外表和RDS MySQL中表的列名称、数量、顺序、字段类型需要相同。
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.person ( id int, name varchar(1023), age int )ENGINE = 'MYSQL' TABLE_PROPERTIES = '{ "url":"jdbc:mysql://mysql-address:3306/test_adb", "tablename":"person", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';
参数 说明 ENGINE=’MySQL’
外表的存储引擎。读写RDS MySQL数据时,取值为mysql。 url
RDS MySQL实例的内网地址和数据库名(本文示例中为 test_adb
)。RDS MySQL外网地址信息的查看方法,请参见查看或修改内外网地址和端口。格式:
"jdbc:mysql://mysql-address:3306/rds-database-name"
。示例:
jdbc:mysql://rm-bp11720****.mysql.rds.aliyuncs.com:3306/test_adb
。tablename
RDS MySQL的表名称,本文示例中为 person
。username
RDS MySQL数据库的账号。 password
RDS MySQL数据库账号的密码。 charset
MySQL字符集,取值说明: - gbk
- utf8(默认值)
- utf8mb4
- 查询数据。外表创建成功后,您可以在AnalyticDB MySQL中通过SELECT查询RDS MySQL中
person
表的数据。SELECT * FROM adb_external_db.person;
返回结果如下:+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+ 4 rows in set (0.35 sec)
- 将数据写入RDS MySQL。
INSERT INTO adb_external_db.person SELECT 5, 'lily', 20;
返回结果如下:+------+ | rows | +------+ | 1 | +------+ 1 row in set (0.57 sec)