Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

MySQL Reader

redHJ edited this pageJul 10, 2018 ·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",        "history_all": "false",        "mysql_table": "",    },
  • 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: 定时任务触发周期,支持三种写法。
    • 直接写"loop",任务会不停的循环,执行完一次再接着执行下一次,后面可以跟循环的间歇时间,如"loop 10s",表示每次循环间隔10s,支持的单位还有"m(分钟)","h(小时)"
    • crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于"@midnight", "@every 1h30m",必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every <time duration>,@midnight
  • mysql_database: 数据库名称,数据库名称也支持魔法变量,可以用@(var)的形式写年月日的魔法变量,具体的变量与数字的对应关系参照魔法变量的描述。当history_all为true时,表示导入历史数据,此时,数据库名称使用魔法变量只支持@(YYYY) @(YY) @(MM) @(DD) @(hh) @(mm) @(ss)的写法(不支持@(M) @(D) @(h) @(m) @(s)单个数字表示),同时支持在最后使用通配符*,表示匹配所有后缀例如 mydb@(YYYY)@(MM)@(DD)test*,会匹配出所有以mydb为前缀,日期早于当前时间,同时日期后紧跟着test的数据库,如果当前时间为20180601,则此时mydb20180530test、mydb20180530test001、mydb20180531test002都符合要求。
  • mysql_sql: 默认为空,自动读取数据库中所有的表;也可以填写要执行的sql语句,可以用@(var)使用魔法变量,用;分号隔开,多个语句按顺序执行。多条sql输出的内容必须schema相同,否则请使用多个配置文件解决不同sql schema问题。
  • mysql_offset_key: 指定一个 mysql 的列名,作为 offset 的记录,类型必须是整型,建议使用插入(或修改)数据的时间戳(unixnano)作为该字段。每次查询会指定这个 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。
  • sql_schema: 默认情况下会自动识别数据字段的类型,当不能识别时,可以sql_schema指定mysql 数据字段的类型,目前支持stringlongfloat三种类型,单个字段左边为字段名称,右边为类型,空格分隔abc float;不同的字段用逗号分隔。支持简写为float=>flong=>lstring=>s. 如:"sql_schema":"abc string,bcd float,xyz long"
  • 魔法变量: 目前支持,,,,,的魔法变量,以当前时间2017年6月5日6时35分24秒为例。
    • @(YYYY) 年份,就是2017
    • @(YY) 年份后两位,就是17
    • @(MM): 月份,补齐两位,就是06
    • @(M): 月份,不补齐,就是6
    • @(D): 日,不补齐,就是5
    • @(DD): 日,补齐两位,如05
    • @(hh): 小时,补齐两位, 如06
    • @(h): 小时,如6
    • @(mm): 分钟,补齐两位,35
    • @(m): 分钟,35
    • @(ss): 秒,补齐两位,24
    • @(s): 秒,24
  • magic_lag_duration: 针对魔法变量进行时间延迟,单位支持h(时)、m(分)、s(秒),如写24h,则渲染出来的时间魔法变量往前1天,2017年6月5日6时35分24秒 的 @(D) 渲染出来的就是4.
  • history_all可选项,默认为false,表示不导入历史数据,设置为true时,表示导入符合条件的历史数据,配合mysql_databasemysql_table使用。
  • mysql_table可选项,默认为空,表示读取数据库中的所有表,表名也支持魔法变量,可以用@(var)的形式写年月日的魔法变量,具体的变量与数字的对应关系参照魔法变量的描述。当history_all为true时,表示导入历史数据,此时,表名使用魔法变量只支持@(YYYY) @(YY) @(MM) @(DD) @(hh) @(mm) @(ss)的写法(不支持@(M) @(D) @(h) @(m) @(s)单个数字表示),同时支持在最后使用通配符*,表示匹配所有后缀例如 mytable@(YYYY)@(MM)@(DD)test*,会匹配出所有以mydb为前缀,日期早于当前时间,同时日期后紧跟着test的表名,如果当前时间为20180601,则此时mytable20180530test、mytable20180530test001、mytable20180531test002都符合要求。配合magic_lag_duration使用
Clone this wiki locally

[8]ページ先頭

©2009-2025 Movatter.jp