ELK 之 logStash导出mysql单表数据到es

之前准备当然是要先安装 elasticsearch-7.7.0  kibana-7.7.0-linux-x86_64

MySQL与Elasticsearch 字段类型的对应
https://blog.csdn.net/u013545439/article/details/102799518

//首先需要创建索引和mapping

 PUT /mytest
{
  "mappings":{
    "properties":{
     "name":{
        "type":"text"
      },
      "age":{
        "type":"long"
      } 
    }
  }
}

 

1:首先下载和解压:

tar -zvxf logstash-7.7.0.tar.gz  进行解压

 

2:在 logstash-7.7.0/lib 路径下新创建jars文件夹.并且下载mysql-connector-java-8.0.15.jar

mkdir jars

wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.15/mysql-connector-java-8.0.15.jar

mysql-connector-java-8.0.15.jar支持8.0 5.7 5.6版本的mysql 

3: 在 logstash-7.7.0/config
  此路径下把logstash-sample.conf复制一份并命名为my-logstash.conf

cp logstash-sample.conf my-logstash.conf

4: 设置my-logstash.conf 文件内容

vim my-logstash.conf  

内容如下:




input {
    jdbc {
        type => "id"
 
        #数据库连接信息
        jdbc_connection_string => "jdbc:mysql://rdsiinfrfyqfa****.mysql.rds.aliyuncs.com:3306/ewj_market?&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true"
        
        #设置时区
        jdbc_default_timezone => "Asia/Shanghai"
 
        #数据库用户名
        jdbc_user => "to***er"

        #数据库密码
        jdbc_password => "Yo***650"
 
        #数据库驱动路径
        jdbc_driver_library => "./lib/jars/mysql-connector-java-8.0.15.jar"
 
        #驱动类名
        jdbc_driver_class => "com.mysql.jdbc.Driver"

        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
           
        #定时执行频率 每分钟
        schedule => "* * * * *"
 
        #使用字段追踪
        #use_column_value => true
 
        #追踪字段
        #tracking_column => "updated_at"
 
        #追踪字段类型
        #tracking_column_type => "timestamp"
        
        #是否记录上一次执行到的追踪字段的值
        record_last_run => true
        
        #上一次执行到的追踪字段的值存放路径 手动创建
        last_run_metadata_path => "./logs/logstash_default_last_time.log"
 
        #是否清除last_run_metadata_path记录,如果为true,每次都从头开始查询所有数据,增量更新设置为false
        clean_run => false
        
        #是否将字段强制转为小写
        lowercase_column_names => false
        
        #sql语句,可用 statement_filepath 参数代替,值为执行的sql文件,注意要查询追踪字段
        statement => "SELECT * from mytest_user"
    }
}
 
filter {
 
}
 
output {
    if[type] == "id" {
        elasticsearch {
            #ES地址:端口
            hosts => ["121.40.42.216:9200"]
        
            #自定义索引
            index => "mytest"
 
            #设置自增主键ID
            document_id => "%{id}"
                #user => "elastic"
                #password => "elasticCll"
        }
    }
    stdout {
        #以JSON格式输出
        codec => json_lines
    }
}

 




说明:
input中都是配置的一些数据库的一些内容
type=>一般都写成数据库中的主键
tracking_column=> 一般都是写表中的更新时间字段(注意这里是指mysql中的时间字段)像我这里就是写的updated_at字段,一般类型都是timestamp

output中都是配置es的内容
index => 表示将这个mysql表中的数据存储到es中的索引名称
document_id => 表示设置es中的_id的值,我这里直接取数据库中的主键id给它赋值

 
5:配置好,就可以启动了

./bin/logstash -f ./config/my-logstash.conf

如果启动logstash并没有一直处于运行,而是直接shut down了回到命令行这个表示启动失败,
可能是由于你.config文件中写的东西有误,或者是可能你写了些东西导致系统无法读取现有文件yml

如果启动logstash成功并没有直接shut down,查看es日志也没有报错,但是es中只存储有一条数据,这个可能是你的 document_id读取的字段有问题,可能它并不是唯一的,导致es读取了一个以后下一条读取的内容和之前一样无法继续赋值给_id,所以只存储了一条就没法继续存储了。

成功如下:每分钟更新一次

 

 

遗憾的是,只能检测增加和修改,不能检测到删除

 

查询结果如下:

get mytest/_search
{
  "query":{
    "match_all": {}
  },
  "sort":[{
    "id":"desc"
  }]
  
}


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值