Skip to content

MySQL Reader

Sun Jianbo edited this page May 23, 2017 · 19 revisions

MySQL Reader是为了让logkit支持多种数据源支持而增加的一种输入模式,区别于普通的文件输入,MySQL Reader是从MySQL中读取数据。

MySQL Reader是以定时任务的形式去执行mysql语句,将mysql读取到的内容全部获取则任务结束,等到下一个定时任务的到来。

典型配置如下

    "reader":{
        "log_path":"<username>:<password>@tcp(<hostname>:<port>)", // 等价于mysql_datasource
        "meta_path":"./meta",
        "mode":"mysql",
        "mysql_datasource":"<username>:<password>@tcp(<hostname>:<port>)", // 该字段与"log_path"等价,两个都存在的情况下优先取mysql_datasource的值。
        "mysql_database":"<database>",
        "mysql_sql":"select * from xx;select x,y from xx@(YY)",
        "mysql_offset_key":"id",
        "mysql_limit_batch":"100",
        "mysql_cron":"00 00 04 * * *",
        "mysql_exec_onstart":"true"
    },
  • mysql reader输出的内容必须使用inner sql parser解析
  • mode : 使用mysql reader,必须模式为mysql
  • mysql_datasource: 该字段与"log_path"等价,两个都存在的情况下优先取datasource的值。需要按规则填写mysql数据源所需信息。
    • username: 用户名
    • password: 用户密码
    • hostname: mysql地址
    • port: mysql端口
    • 示例:一个填写完整的mysql_datasource字段类似于:"admin:123456@tcp(10.101.111.1:3306)"
  • mysql_cron: 定时任务触发周期,支持两种写法。
    • crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于"@midnight", "@every 1h30m",必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every <time duration>
  • mysql_database: 数据库名称。
  • mysql_sql: 填写要执行的sql语句,可以用@(var)使用魔法变量,用;分号隔开,多个语句按顺序执行。
  • mysql_offset_key: 指定一个mysql的列名,作为offset的记录,类型必须是整型。每次查询会指定这个key做where条件限制,避免单次查询性能消耗过大。
  • mysql_limit_batch: mysql_sql的语句,若数据量大,可以填写该字段,分批次查询。
    • mysql_offset_key存在,假设填写为100,则查询范式为select * from table where mysql_offset_key >= 0 and mysql_offset_key < 0 + 100;
    • 若没填写mysql_offset_key,则类似于 select * from table limit 0,100
  • mysql_exec_onstart: true表示启动时执行一次,以后再按cron处理;false则表示到cron预设的时间才执行,默认为true。
  • 魔法变量: 目前支持,,,,,的魔法变量。
    • @(YYYY) 年份
    • @(YY) 年份后两位,如06。
    • @(MM): 月份,补齐两位,如02
    • @(M): 月份,不补齐
    • @(D): 日,不补齐
    • @(DD): 日,补齐两位,如05
    • @(hh): 小时,补齐两位
    • @(h): 小时
    • @(mm): 分钟,补齐两位
    • @(m): 分钟
    • @(ss): 秒,补齐两位
    • @(s): 秒
Clone this wiki locally