DLA支持连接RDS(MySQL、SQLServer、PostgreSQL)数据源,然后通过SQL语法查询和分析RDS数据,同时支持将分析结果回写入RDS。本文以RDS MySQL为例介绍如何通过DLA读写RDS数据。

注意事项

如果您的RDS实例位于VPC网络内,默认情况下DLA无法访问VPC网络中的资源。为了让DLA能够访问RDS实例,需要利用VPC反向访问技术,即在RDS白名单中添加100.104.0.0/16 IP地址段。具体操作请参考设置IP白名单
说明 当您在RDS白名单中添加了100.104.0.0/16 IP地址段,即视为您同意DLA利用VPC反向访问技术读写RDS数据。

准备工作

通过DLA读写RDS MySQL数据前,需要通过以下操作在RDS MySQL中准备测试数据:
  1. 创建RDS for MySQL实例。具体操作请参考创建RDS MySQL实例
  2. 在DLA中创建MySQL Schema之前,需要将IP地址段100.104.0.0/16加入到RDS的白名单列表中。具体操作请参考设置IP白名单
  3. 创建账号和数据库。具体操作请参考创建数据库和账号
  4. 连接MySQL实例。具体操作请参考连接MySQL实例
  5. 创建表并写入测试数据。
    通过以下示例在RDS MySQL中创建person表:
    create table person (
    id int,
    name varchar(1023),
    age int
    );
    person表中插入数据:
    insert into person
    values
    (1, 'james', 10),
    (2, 'bond', 20),
    (3, 'jack', 30),
    (4, 'lucy', 40);

操作步骤

您可以登录到DMS中编写SQL创建MySQL Schema,也可以先通过MySQL客户端或者MySQL命令行工具连接DLA,然后再编写SQL创建MySQL Schema。本操作以登录到DMS中编写SQL创建MySQL Schema为例进行说明。

  1. 创建RDS MySQL Schema。
    1. 登录DLA控制台
    2. 在左侧导航栏单击Serverless Presto > SQL访问点
    3. SQL访问点页面的VPC网络区域,定位到RDS所在的VPC网络,然后单击登录到DMS
      您也可以在公网网络区域,单击登录到DMS通过公网登录到DMS创建RDS Schema。
    4. 登录实例对话框中,选择RDS数据库类型为MySQL,并选择实例地区、实例ID,输入数据库账号和密码,单击登录登录实例
      说明 您需要将DMS IP地址添加至RDS实例的白名单设置中,才能正常登录到DMS。具体操作请参见设置IP白名单
    5. 在DMS的SQL information_schema页签中,创建RDS MySQL Schema和数据表。
      创建RDS MySQL Schema:
      ​ CREATE SCHEMA hello_mysql_vpc_rds WITH DBPROPERTIES (
         CATALOG = 'mysql', 
         LOCATION = 'jdbc:mysql://rm-******fofake.mysql.rds.aliyuncs.com:3306/rds_mysql_dbname',
         USER = 'rds_mysqldb_username',
         PASSWORD = 'rds_mysqldb_password',
         INSTANCE_ID = 'rds_mysql_instance_id',
         VPC_ID = 'rds_mysqldb_vpcid'
       );​
      参数 说明
      CATALOG 取值为mysql,表示创建的是MySQL Schema。
      LOCATION RDS MySQL的连接信息,由jdbc:mysql://RDS MySQL连接地址:3306/rds_mysql_dbname
      USER RDS MySQL中的数据库账号。
      PASSWORD USER对应的密码。
      INSTANCE_ID RDS MySQL的实例ID。
      VPC_ID RDS MySQL的VPC ID。
      创建RDS MySQL数据表:
      ​create external table person (
      id int,
      name varchar(1023),
      age int
      ) tblproperties (
      table_mapping = "person"
      );​
  2. 查询数据。
    数据表创建成功后,您就可以在DLA中通过SELECT查询RDS MySQL中的数据了。
    ​mysql> select * from person;
    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lucy  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)​
  3. 将OSS数据写入RDS MySQL。
    在DLA中读取RDS数据,并不是RDS在DLA中的典型应用场景。因为RDS本身能承载的数据量有限,不适合大数据分析。更多的场景是在DLA中对存储在OSS、Tablestore中的大数据进行分析,分析完成之后把结果数据回写到RDS中,供前台业务使用。DLA如何读取OSS中的数据,请参见操作步骤
    person表为例,通过以下SQL语句把oss_db中customer的十条记录进行了转换,然后插入到hello_mysql_vpc_rds.person表中。
    ​mysql> insert into hello_mysql_vpc_rds.person
    select c_custkey, c_name, c_custkey + 20 from oss_db.customer limit 10;
    +------+
    | rows |
    +------+
    |   10 |
    +------+
    1 row in set (4.57 sec)​