全部产品
云市场

RDS一键同步元数据

更新时间:2019-04-01 17:07:48

背景信息

Data Lake Analytics(简称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 for MySQL实例

  2. 设置白名单

  3. 创建账号和数据库

  4. 连接实例

  5. 创建表

实施步骤

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

步骤一:创建RDS Schema

  1. 登录DLA控制台

  2. 单击左侧导航栏的访问点管理,然后登录DMS,在DLA中创建MySQL Schema的语法如下所示:

    1. CREATE SCHEMA hello_mysql_vpc_rds WITH DBPROPERTIES (
    2. CATALOG = 'mysql',
    3. LOCATION = 'jdbc:mysql://rm-2zer0vg58mf*****.mysql.rds.aliyuncs.com:3306/rds_mysql_dbname',
    4. USER = 'rds_mysqldb_username',
    5. PASSWORD = 'rds_mysqldb_password',
    6. INSTANCE_ID = 'rds_mysql_instance_id',
    7. VPC_ID = 'rds_mysqldb_vpcid'
    8. );
    • VPC_ID:RDS for MySQL实例中VPC的ID,如下图所示。

      vpc

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

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

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

  1. mysql> use hello_mysql_vpc_rds;
  2. Database changed
  3. mysql> show tables;
  4. Empty set (0.01 sec)

再执行以下SQL,将RDS数据库中的所有表一键同步至Schema中。

  1. mysql> msck repair database hello_mysql_vpc_rds;
  2. +-------------------------------+-----------+
  3. | TableName | Operation |
  4. +-------------------------------+-----------+
  5. | admin_acc_log | CREATED |
  6. | fractest | CREATED |
  7. | person | CREATED |
  8. | prep_stmt_test | CREATED |
  9. | staples | CREATED |
  10. | test_datetime | CREATED |
  11. | top10_user | CREATED |
  12. | type_test | CREATED |
  13. | world1 | CREATED |
  14. | world2 | CREATED |
  15. +-------------------------------+-----------+
  16. 17 rows in set (1.60 sec)
  17. mysql> show tables;
  18. +-------------------------------+
  19. | Table_Name |
  20. +-------------------------------+
  21. | admin_acc_log |
  22. | fractest |
  23. | person |
  24. | prep_stmt_test |
  25. | staples |
  26. | test_datetime |
  27. | top10_user |
  28. | type_test |
  29. | world1 |
  30. | world2 |
  31. +-------------------------------+
  32. 17 rows in set (0.02 sec)

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