关联MySQL数据源

本文介绍如何创建外部存储,建立日志服务与MySQL数据库的关联。

前提条件

  • 已采集数据到日志服务。具体操作,请参见数据采集

  • 已将数据存储到阿里云RDS MySQL数据库、阿里云ADB MySQL数据库或阿里云ECS上自建的MySQL数据库。

  • MySQL数据库在阿里云VPC内网域内,RDS实例、ADB实例或ECS实例必须与日志服务Project处于同一地域。

背景信息

日志服务外部存储功能支持日志服务与阿里云RDS MySQL数据库、阿里云ADB MySQL数据库、在阿里云ECS上自建的MySQL数据库关联,您还可以将查询分析结果写入MySQL数据库中,便于进一步处理结果。

操作步骤

1. 设置白名单

RDS MySQL数据库

需添加白名单地址100.104.0.0/16、11.194.0.0/16和11.201.0.0/16。更多信息,请参见设置IP白名单

ECS上自建的MySQL数据库

需设置安全组规则,允许100.104.0.0/16、11.194.0.0/16和11.201.0.0/16网段访问。具体操作,请参见添加安全组规则

ADB MySQL数据库

需添加白名单地址100.104.0.0/16、11.194.0.0/16和11.201.0.0/16。更多信息,请参见设置白名单

2. 创建ExternalStore

  1. 安装日志服务CLI

    说明

    阿里云云命令行Cloud Shell已经集成日志服务CLI,无需部署配置,您也可以直接使用云命令行管理日志服务资源和下载日志服务数据。

  2. 在命令行执行touch命令,创建配置文件/home/shell/config.json。在config.json中添加如下脚本。根据实际情况您需要替换regionvpc-idhostportusernamepassworddbtable的值。

    {
        "externalStoreName":"sls_join_meta_store",
        "storeType":"rds-vpc",
        "parameter":{
            "region":"cn-qingdao",
            "vpc-id":"vpc-m5eq4irc1pucp*******",
            "host":"localhost",
            "port":"3306",
            "username":"user",
            "password":"****",
            "db":"scmc",
            "table":"join_meta"
        }
    }

    参数

    说明

    externalStoreName

    ExternalStore名称,必须小写。

    storeType

    数据源类型,固定为rds-vpc

    region

    地域。详细说明如下:

    • 如果是RDS MySQL数据库,则配置region为RDS实例所在地域。

    • 如果是ADB MySQL数据库,则配置region为ADB实例所在地域。

    • 如果是专有网络下ECS上自建的MySQL数据库,则配置region为ECS实例所在地域。

    重要

    RDS实例、ADB实例或ECS实例必须与日志服务Project处于同一地域。

    vpc-id

    VPC ID。详细说明如下:

    • 如果是专有网络下的RDS MySQL数据库,则配置vpc-id为RDS实例所属专有网络的ID。

    • 如果是专有网络下的ADB MySQL数据库,则配置vpc-id为ADB实例所属专有网络的ID。

    • 如果是专有网络下ECS上自建的MySQL数据库,则配置vpc-id为ECS实例所属专有网络的ID。

    • 如果数据库host可以通过公网访问,则vpc-id无需提供。

    host

    数据库地址。详细说明如下:

    • 如果是专有网络下的RDS MySQL数据库,则配置host为RDS实例的内网地址(内网域名或内网IP地址)。

    • 如果是专有网络下的ADB MySQL数据库,则配置host为ADB实例的内网地址(内网域名或内网IP地址)。

    • 如果是专有网络下ECS上自建的MySQL数据库,则配置host为ECS的私网IP地址。

    • 如果数据库通过公网可以访问,则配置对应的公网域名或公网IP地址。

    port

    端口号。详细说明如下:

    • 如果是RDS MySQL数据库,则配置port为RDS实例的端口号。

    • 如果是ADB MySQL数据库,则配置port为ADB实例的端口号。

    • 如果是专有网络下ECS上自建的MySQL数据库,则配置port为ECS上MySQL的服务端口。

    username

    数据库用户名。

    password

    数据库密码。

    db

    数据库名。

    table

    数据库表名。

  3. 在命令行执行如下命令,创建ExternalStore。其中project_name为日志服务Project名称,请根据实际情况替换,本文以log-rds-demo为例。

    aliyunlog log create_external_store --project_name="log-rds-demo" --config="file:///home/shell/config.json" 
  4. 查询ExternalStore信息。命令执行成功后,无响应消息。您可以执行aliyunlog log get_external_store --project_name="log-rds-demo" --store_name="sls_join_meta_store" --format-output=json查询RDS MySQL外部数据源详细信息。查询信息如下:

    {
     "externalStoreName": "sls_join_meta_store",
     "parameter": {
     "db": "scmc",
     "host": "rm-bp1******rm76.mysql.rds.aliyuncs.com",
     "instance-id": "",
     "port": "3306",
     "region": "cn-qingdao",
     "table": "join_meta",
     "timezone": "",
     "username": "user",
     "vpc-id": "vpc-m5eq4irc1pucp*******"
     },
     "storeType": "rds-vpc"
    }

3. 查询关联的MySQL数据

关联外部数据源后,您可以在日志服务控制台,名为log-rds-demo的Project下,单击任意Logstore,通过查询分析语句* | select * from sls_join_meta_store查询关联的MySQL数据。

image

相关操作

  • 更新MySQL外部存储。

    aliyunlog log update_external_store --project_name="log-rds-demo" --config="file:///home/shell/config.json" 
  • 删除MySQL外部存储。

    aliyunlog log delete_external_store --project_name="log-rds-demo" --store_name=sls_join_meta_store
  • 获取RDS实例的VpcCloudInstanceId。

    1. 使用RDS实例所在的阿里云账号登录RDS控制台。

    2. 打开DescribeDBInstanceAttribute - 查询实例详情调试页面。

    3. 配置DBInstanceId,然后单击发起调用

    4. 在返回结果中,获取VpcCloudInstanceId。

相关文档