云原生数据湖分析(简称DLA) 作为云上数据处理的枢纽,支持通过标准JDBC对RDS(MySQL、SQLServer、PostgreSQL)中的数据进行查询和分析,并可以将分析结果回写入RDS。

您可以参考文档DLA读写RDS for MySQL数据,先在DLA中创建RDS Schema,再创建表(映射表),最后通过DLA读写RDS数据。如果Schema对应的RDS数据库中有多张数据表,则需要在DLA中为每一张数据表创建映射表。当后续表的数量越来越多时,这种操作明显太繁琐。DLA推出RDS一键同步元数据功能,只需要在DLA中创建RDS Schema,然后通过MSCK REPAIR TABLE命令一键将数据库中所有表的信息同步至DLA中。

本文以MySQL为例,详细介绍RDS一键同步元数据功能。

注意事项

在DLA中创建MySQL/SQLServer/PostgreSQL Schema之前,需要将IP地址段100.104.0.0/16加入到RDS的白名单列表中。

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

权限声明:当您在RDS白名单中添加了100.104.0.0/16 IP地址段,即视为您同意我们利用VPC反向访问技术读写RDS数据。

准备工作

通过DLA读写RDS数据前,您需要通过以下操作在RDS中准备好测试数据:

  1. 创建RDS MySQL实例
  2. 白名单
  3. 创建数据库和账号
  4. 连接MySQL实例
  5. 创建表

实施步骤

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

步骤一:创建RDS Schema

  1. 登录DLA控制台

  2. 单击左侧导航栏的SQL访问点,然后登录DMS,在DLA中创建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'
     );​
    • VPC_ID:RDS for MySQL实例中VPC的ID,如下图所示。

    • INSTANCE_ID:RDS for MySQL实例的ID,在RDS实例详情页面查看RDS实例ID。

步骤二:执行MSCK REPAIR TABLE命令同步表信息。

先执行show tables查询Schema中是否存在表:

​mysql> use hello_mysql_vpc_rds;
Database changed
mysql> show tables;
Empty set (0.01 sec)​

再执行以下SQL,将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数据了。