云原生数据湖分析DLA支持通过标准JDBC对RDS(MySQL、SQLServer、PostgreSQL)中的数据进行查询和分析,并可以将分析结果回写入RDS。RDS一键同步元数据功能,只需要在DLA中创建RDS Schema,然后通过MSCK REPAIR TABLE命令一键将数据库中所有表的信息同步至DLA中。本文以MySQL为例,详细介绍RDS一键同步元数据功能。

注意事项

在DLA中创建MySQL、SQLServer、PostgreSQL Schema之前,需要将IP地址段100.104.0.0/16加入到RDS的白名单列表中。具体操作请参见设置IP白名单

由于RDS实例位于VPC内,默认情况下DLA无法访问VPC中的资源。为了让DLA能访问RDS,需要利用VPC反向访问技术,即在RDS白名单中添加100.104.0.0/16IP地址段。

说明 当您在RDS白名单中添加了100.104.0.0/16 IP地址段,即视为您同意阿里云利用VPC反向访问技术读写RDS数据。

准备工作

通过DLA读写RDS数据前,您需要通过以下操作在RDS中准备好测试数据:
  1. 创建RDS MySQL实例
  2. 设置IP白名单
  3. 创建数据库和账号
  4. 连接MySQL实例
  5. 创建表

操作步骤

您可以在DMS页面编写SQL创建MySQL Schema,也可以先通过MySQL客户端或者MySQL命令行工具连接DLA,然后再编写SQL创建MySQL Schema。

  1. 创建RDS Schema
    1. 登录DLA控制台
    2. 在左侧导航栏单击Serverless Presto > SQL访问点
    3. SQL访问点页面的VPC网络区域,定位到RDS所在的VPC网络,然后单击登录到DMS

      您也可以在公网网络区域,单击登录到DMS通过公网登录到DMS创建RDS Schema。

    4. 登录实例对话框中,选择RDS数据库类型、实例地区、实例ID,输入数据库账号和密码,单击登录登录实例
      说明 您需要将DMS IP地址添加至RDS实例的白名单设置中,才能正常登录到DMS。具体操作请参见设置IP白名单
    5. 在DMS的SQL information_schema页签中,创建MySQL Schema的语法如下所示:
       CREATE SCHEMA hello_mysql_vpc_rds WITH DBPROPERTIES (
         CATALOG = 'mysql', 
         LOCATION = 'jdbc:mysql://rm-2zer0vg58mf*****.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'
       );​
  2. 执行MSCK REPAIR TABLE命令同步表信息。
    1. 先执行show tables查询Schema中是否存在表。
      ​mysql> use hello_mysql_vpc_rds;
      Database changed
      mysql> show tables;
      Empty set (0.01 sec)​
    2. 再执行MSCK REPAIR TABLE,将RDS数据库中的所有表一键同步至Schema中。
      ​mysql> msck repair database hello_mysql_vpc_rds;
      +-------------------------------+-----------+
      | TableName                     | Operation |
      +-------------------------------+-----------+
      | admin_acc_log                 | CREATED   |
      | fractest                      | CREATED   |
      | person                        | CREATED   |
      | prep_stmt_test                | CREATED   |
      | staples                       | CREATED   |
      | test_datetime                 | CREATED   |
      | top10_user                    | CREATED   |
      | type_test                     | CREATED   |
      | world1                        | CREATED   |
      | world2                        | CREATED   |
      +-------------------------------+-----------+
      17 rows in set (1.60 sec)
      mysql> show tables;
      +-------------------------------+
      | Table_Name                    |
      +-------------------------------+
      | admin_acc_log                 |
      | fractest                      |
      | person                        |
      | prep_stmt_test                |
      | staples                       |
      | test_datetime                 |
      | top10_user                    |
      | type_test                     |
      | world1                        |
      | world2                        |
      +-------------------------------+
      17 rows in set (0.02 sec)​

表信息同步成功之后,接下来您就可以通过DLA管理RDS数据了。