采集MySQL查询结果

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何创建Logtail采集配置来采集MySQL查询结果。

前提条件

  • 已在服务器上安装Linux Logtail 0.16.0及以上版本或Windows Logtail 1.0.0.8及以上版本。具体操作,请参见安装、运行、升级、卸载Logtail

    重要

    请确保用于安装Logtail的服务器可连接目标MySQL数据库。

  • MySQL数据库中,设置白名单为Logtail所在服务器的IP地址。

    例如RDS MySQL数据库的白名单设置,请参见设置IP白名单

  • 使用CRD-AliyunPipelineConfig采集MySQL查询结果,需要确保集群已经安装Logtail组件。

    具体操作,请参见安装Logtail组件

操作步骤

日志服务控制台

  1. 登录日志服务控制台

  2. 单击控制台页面右侧的快速接入数据卡片。

    image

  3. 接入数据页面,选择 MySQL查询结果-插件

  4. 选择目标ProjectLogstore,单击下一步

  5. 机器组配置页面,配置机器组。

    1. 根据实际需求,选择使用场景和安装环境。

      重要

      无论是否已有机器组,都必须根据实际需求正确选择使用场景和安装环境,这将影响后续的页面配置。

    2. 确认目标机器组已在应用机器组区域,单击下一步

      已有机器组

      源机器组列表选择目标机器组。

      image

      没有可用机器组

      单击创建机器组,在创建机器组面板设置相关参数。机器组标识分为IP地址用户自定义标识,更多信息请参见创建用户自定义标识机器组(推荐)创建IP地址机器组

      重要

      创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。

  6. 数据源设置页签中,设置配置名称插件配置,然后单击下一步

    您可以通过表单配置方式或编辑器配置(JSON配置)方式完成数据源设置。详细配置,请参见MySQL 输入插件

    image

  7. 创建索引和预览数据,然后单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引

    重要

    如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT语句),必须创建字段索引。

  8. 单击查询日志,系统将跳转至Logstore查询分析页面。
    您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。更多信息,请参见查询与分析快速指引

CRD-AliyunPipelineConfig

本文以ACK集群为例,介绍如何创建采集配置。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面中,单击目标集群操作列下的更多,然后单击管理集群

  3. 创建名为example-k8s-file.yaml的文件。

    参数说明

    示例

    apiVersion: telemetry.alibabacloud.com/v1alpha1
    # 创建一个 ClusterAliyunPipelineConfig
    kind: ClusterAliyunPipelineConfig
    metadata:
      # 设置资源名,在当前Kubernetes集群内唯一。该名称也是创建出的iLogtail采集配置名
      name: example-crd-mysql
    spec:
      # 指定目标project
      project:
        name: k8s-log-clusterid
      # 创建用于存储日志的 Logstore
      logstores:
        - name: crd-mysql-test
      # 定义iLogtail采集配置
      config:
        # 日志样例(可不填写)
        sample: ''
        inputs:
        - Type: service_mysql
          Address: "rm-*.mysql.rds.aliyuncs.com"
          CheckPoint: true
          CheckPointColumn: id
          CheckPointColumnType: int
          CheckPointSavePerPage: true
          CheckPointStart: "0"
          Database: ****
          IntervalMs: 1000
          Limit: true
          MaxSyncSize: 100
          PageSize: 100
          User: ****
          Password: *******
          StateMent: "select * from test where id > ? order by id"
        # 定义输出插件
        flushers:
          # 使用flusher_sls插件输出到指定Logstore。
          - Type: flusher_sls
            Logstore: crd-mysql-test
            Endpoint: cn-hangzhou.log.aliyuncs.com
            Region: cn-hangzhou
            TelemetryType: logs

    Type string(必选)

    数据源类型,固定为service_mysql

    Address string(可选)

    MySQL地址,例如rm-****.mysql.rds.aliyuncs.com

    默认值为127.0.0.1:3306

    地址类型:

    • 内网(专有网络):仅用于VPC下的实例(ECS、ACK等阿里云实例)内网访问。

    • 外网地址:业务部署在其他VPC或本地机器上,需要通过外网地址访问实例,但您需提前手动申请外网地址。具体操作,请参见申请或释放外网地址

    说明

    由于外网网络易波动,建议在业务中使用内网地址进行连接。

    User string(可选)

    用于登录MySQL数据库的用户名称。默认值为root

    Password string(可选)

    登录MySQL数据库的用户密码。

    如果安全需求较高,建议将用户名称和密码配置为xxx,待采集配置同步至本地机器后,在本地文件/usr/local/ilogtail/user_log_config.json中找到对应配置进行修改。具体操作,请参见采集MySQL查询结果

    重要

    如果您在控制台上修改了此参数,同步至本地后会覆盖本地的配置。

    DataBase string(可选)

    MySQL数据库名称。

    DialTimeOutMs int(可选)

    连接MySQL数据库超时时间,默认值为5000,单位:ms。

    ReadTimeOutMs int(可选)

    读取MySQL查询结果的超时时间,默认值为5000,单位:ms。

    StateMent string(可选)

    SELECT语句。

    设置CheckPointtrue时,StatementSELECT语句的where条件中必须包含CheckPoint列(CheckPointColumn)。支持使用半角问号(?)表示替换符,与CheckPoint列配合使用。

    例如设置CheckPointColumnid,设置CheckPointStart0,设置StateMentSELECT * from ... where id > ?。则每次采集后,系统会保存最后一条数据的ID作为Checkpoint,下次采集时查询语句中的半角问号(?)将被替换为该Checkpoint对应的ID。

    Limit boolean(可选)

    是否使用Limit分页。

    • true:使用。

    • false(默认值):不使用。

    建议使用Limit进行分页。设置Limittrue后,进行SQL查询时,系统将自动在SELECT语句中追加LIMIT语句。

    PageSize int(可选)

    分页大小,Limit 为 true 时必须配置。

    MaxSyncSize int(可选)

    每次同步最大记录数。默认值为 0,表示无限制。

    CheckPoint boolean(可选)

    是否使用 CheckPoint。

    • true:使用。

    • false(默认值):不使用。

    CheckPoint 可作为下次采集数据的起点,实现数据增量采集。

    CheckPointColumn string(可选)

    CheckPoint列名称。

    设置CheckPointtrue时,需要配置。

    警告

    该列的值必须递增,否则可能会出现数据漏采集问题(每次查询结果中的最大值将作为下次查询的输入)。

    CheckPointColumnType string(可选)

    设置CheckPointtrue时,需要配置。

    CheckPoint列的数据类型,支持inttime。int类型的内部存储为int64,time类型支持MySQLdate、datetime、time类型。

    CheckPointStart string(可选)

    设置CheckPointtrue时,需要配置。

    CheckPoint列的初始值。

    CheckPointSavePerPage boolean(可选)

    设置CheckPointtrue时,需要配置。

    是否每次分页时保存一次CheckPoint。

    • true(默认值):每次分页时保存一次CheckPoint。

    • false:每次同步完成后保存一次CheckPoint。

    IntervalMs int(必选)

    同步间隔,默认值为60000,单位:ms。

  4. 执行kubectl apply -f example-k8s-file.yaml,Logtail开始采集MySQL数据。

  5. 登录日志服务控制台,在Project列表,单击打开目标Project。

  6. 在对应的日志库右侧的图标图标,选择查询分析,查看查询日志。

    image