当您的数据分散存储在日志服务Logstore和RDS MySQL数据库中时,您可以通过日志服务数据加工功能从阿里云RDS MySQL数据库获取数据,实现数据富化。本文介绍如何配置数据加工规则及高级参数,使用RDS内网地址访问RDS MySQL数据库获取数据。

背景信息

2019年8月上海地区某共享单车的动态数据(例如订单号、自行车编号、用户ID、地理位置、用户骑车行为等)存储在日志服务的Logstore中,而共享单车的静态数据(例如自行车编号、品牌以及投放批次等)存储在阿里云RDS MySQL数据库中,现在该共享单车公司希望将单车实时动态记录日志与保存在RDS MySQL上的静态数据做富化和数据分析处理,实现共享单车最优调度。

由于通过RDS外网地址访问RDS MySQL数据库会降低RDS MySQL实例的安全性,并且不稳定。数据加工推出VPC反向代理功能,通过内网地址访问RDS MySQL数据库来保证传输速率和安全性。

说明
  • RDS MySQL实例与日志服务Project需处于同一地域,否则无法获取数据。
  • 日志服务支持跨账号访问RDS MySQL数据库。
  • 使用RDS内网地址访问RDS MySQL数据库,需设置IP地址段白名单(固定设置为100.104.0.0/16),详情请参见设置白名单

数据加工

  • 原始数据
    • RDS MySQL数据库表中的数据样例如下表所示。RDS数据
    • 日志服务Logstore中的日志样例如下所示。日志
  • 加工流程加工流程
  • 加工规则
    e_table_map(res_rds_mysql(str_format("{}:{}",res_local("config.vpc.instance_id.test1"),res_local("config.vpc.instance_port.test1")), "your rds username", "your rds password", "your database",table="your table",primary_keys="bikeid"), "bikeid",["brand","batch"])
    说明 通过RDS内网地址访问RDS MySQL数据库,请严格遵循以下语法,请勿使用其他加工语法。
    加工规则格式如下所示:
    e_table_map(res_rds_mysql(str_format("{}:{}",res_local("config.vpc.instance_id.name"),res_local("config.vpc.instance_port.name")), "数据库账号", "数据库密码", "数据库名称",table="数据库表名"), "field", "output_fields")
    • config.vpc.instance_id.nameconfig.vpc.instance_port.name中的name需保持一致,且还需与高级参数配置中配置的name保持一致,支持自定义。
    • field为匹配字段,日志和RDS MySQL数据库表中存在共同字段,且字段的值相同,才能匹配成功。
    • output_fields为输出字段,字段匹配成功后,返回输出字段,生成一条新的日志。
  • 高级参数配置

    通过RDS内网地址访问RDS MySQL数据库,还需在预览数据和保存加工结果时设置高级参数配置,其他参数配置请参见创建数据加工规则

    添加预览配置

    config.vpc.vpc_id.nameconfig.vpc.instance_id.nameconfig.vpc.instance_port.name中的name需保持一致,且还需与加工规则中配置的name保持一致,支持自定义。

    Key格式 Key示例值 Value示例值 说明
    config.vpc.vpc_id.name config.vpc.vpc_id.test1 vpc-uf6mskb0b****n9yj vpc_id为RDS MySQL实例所属于的网络类型ID。
    config.vpc.instance_id.name config.vpc.instance_id.test1 rm-uf6e61k****ahd7 instance_id为RDS MySQL实例ID。
    config.vpc.instance_port.name config.vpc.instance_port.test1 3306 instance_port为RDS MySQL实例内网地址端口。

数据分析

获取RDS MySQL数据,完成数据富化后,您可以在日志服务控制台上进行数据分析。例如:分析自行车品牌对共享单车租赁影响、统计每小时用车人数、分析自行车投放市场批次对共享单车租赁影响等,详情请参见基于日志服务数据加工与RDS MySQL做数据富化以及数据分析

错误排查

  • RDS白名单未配置

    如果提示reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"Database connection failed, cause: (2003, \\\"Can't connect to MySQL server on '192.168.1.1' (timed out)\\\")\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}错误,表示数据加工授权后台授权VPC映射已经成功,但是因为RDS没有配置白名单,导致无法连接到数据库。

  • 高级参数配置错误
    • 高级参数配置中name不一致

      如果提示reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"address check failed, please check the configuration of address. address: rm-bp***r5\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}错误,表示config.vpc.instance_port.{name}中的{name}与config.vpc.vpc_id.{name}、config.vpc.instance_id.{name}中的{name}设置不一致。

    • 参数配置不完整

      如果提示reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"address check failed, please check the configuration of address. address: rm-bp1***9r5\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}错误,表示缺少config.vpc.vpc_id.{name}配置信息。

  • 加工语句错误

    如果提示reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"Database connection failed, cause: (2003, \\\"Can't connect to MySQL server on 'rm-bp***r5.mysql.rds.aliyuncs.com' (timed out)\\\")\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}错误,表示使用了错误的加工语法。