mysql数据同步elasticsearch-lagstash

1.安装elasticsearch-head插件

第一种:谷歌浏览器中,通过“扩展程序”添加 elasticsearch head,这个方式 无需开启es的跨域访问
链接:谷歌双核浏览器
http://extb.cqttech.com/search/elasticsearch%2520head
在这里插入图片描述
第二种是插件安装,在这里就不详细介绍了。

下载logstash

官网下载:https://www.elastic.co/cn/downloads/logstash
在这里插入图片描述

通过CRT工作,放到usr/local/新建一个文件夹下面
解压: tar -zxvf logstash-7.6.2.tar.gz
cd logstash-7.6.2/
然后直接在logstash的安装目录bin下运行 :
./logstash-plugin install logstash-input-jdbc
在这里插入图片描述
备注:在这里运行的时候 logstash插件安装logstash-input-jdbc时,报了如下的错误:
在这里插入图片描述
Validating logstash-input-jdbc
ERROR: Installation aborted, plugin ‘logstash-input-jdbc’ is already provided by ‘logstash-integration-jdbc’

把英文翻译过来就是:

->正在验证logstash-input-jdbc
->安装终止:'logstash-input-jdbc’插件已经被’logstash-integration-jdbc’支持。

也就是说“logstash-input-jdbc”插件已经包含在“logstash-integration-jdbc”里面了,

无需再安装。

所以也无需再去查找安装失败的原因了,logstash本来就支持“logstash-input-jdbc”插件。

开始配置conf和sql

先在安装目录bin下面(一般都是在bin下面)新建jdbc.conf和在config下面创建jdbc.sql

jdbc.conf

input {
      stdin {
       }
      jdbc {
        # 连接的数据库地址和哪一个数据库,指定编码格式,禁用SSL协议,设定自动重连

        jdbc_connection_string => "jdbc:mysql://10.4.0.43:3306/bjintranat?characterEncoding=UTF-8&useSSL=false&autoReconnect=true"
        jdbc_user => "root"
        jdbc_password => "mlwy123"

        # 下载连接数据库的驱动包,建议使用绝对地址

        jdbc_driver_library => "/usr/local/logstash/logstash-7.12.1/config/mysql-connector-java-5.1.45-bin.jar"

        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
        codec => plain { charset => "UTF-8"}

        #使用其它字段追踪,而不是用时间
        #use_column_value => true   //这里如果是用时间追踪比如:数据的更新时间或创建时间等和时间有关的这里一定不能是true, 切记切记切记,我是用update_time来追踪的
        #追踪的字段

        tracking_column => updatetime
        record_last_run => true

        #上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值  这里说是必须指定初始值,我没指定默认是1970-01-01 080000
	#这里的lastrun文件夹和.logstash_jdbc_last_run是自己创建的

        last_run_metadata_path => "/usr/local/logstash/logstash-7.12.1/data/lastrun/.logstash_jdbc_last_run"  

        jdbc_default_timezone => "Asia/Shanghai"   #设置时区
     
        statement_filepath => "/usr/local/logstash/logstash-7.12.1/config/sql/jdbc1.sql"


        #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
        clean_run => false

        # 这是控制定时的,重复执行导入任务的时间间隔,第一位是分钟 不设置就是1分钟执行一次
        schedule => "* * * * *"
        type => "std"
     }
 }

 filter {

    json {

        source => "message"

        remove_field => ["message"]
    }

}

output {

    elasticsearch {

        # 要导入到的Elasticsearch所在的主机

        hosts => "10.4.0.43:9200"

        # 要导入到的Elasticsearch的索引的名称

        index => "mlwy"

        # 类型名称(类似数据库表名)

        document_type => "news"

        # 主键名称(类似数据库主键)

        document_id => "%{id}"
    }

    stdout {

        # JSON格式输出

        codec => json_lines

    }
}

jdbc1.sql

这里其实就是普通的SQL语句

 SELECT n.id AS id,n.createuser AS NAME,n.title AS price,n.newspath AS detail FROM bj_mlwy_news n WHERE n.updatetime > :sql_last_value

备注:
在这里插入图片描述
][logstash.config.sourceloader] Could not fetch all the sources {:exception=>LogStash::ConfigLoadingError, :message=>

"The following config files contains non-ascii characters but are not UTF-8 encoded

["/usr/local/logstash/logstash-7.12.1/bin/jdbc.conf"]", :backtrace=>["/usr/local/logstash/logstash-7.12.1/logstash-core/lib/logstash/config/source/local.rb:99:in read'", "/usr/local/logstash/logstash-7.12.1/logstash-core/lib/logstash/config/source/local.rb:110:inread’", “/usr/local/logstash/logstash-7.12.1/logstash-core/lib/logstash/config/source/local.rb:206:in local_pipeline_configs'", "/usr/local/logstash/logstash-7.12.1/logstash-core/lib/logstash/config/source/local.rb:177:inpipeline_configs’”, “/usr/local/logstash/logstash-7.12.1/logstash-core/lib/logstash/config/source_loader.rb:76:in block in fetch'", "org/jruby/RubyArray.java:2572:incollect’”, “/usr/local/logstash/logstash-7.12.1/logstash-core/lib/logstash/config/source_loader.rb:75:in fetch'", "/usr/local/logstash/logstash-7.12.1/logstash-core/lib/logstash/agent.rb:188:inconverge_state_and_update’”,
需要转化conf文件格式。

开启指令

 ./logstash -f jdbc.conf

备注:可能会出现的问题

[root@localhost bin]# ./logstash -f jdbc.conf
Using JAVA_HOME defined java: /usr/java/jdk1.8.0_181
WARNING, using JAVA_HOME while Logstash distribution comes with a bundled JDK
Sending Logstash logs to /usr/local/logstash/logstash-7.12.1/logs which is now configured via log4j2.properties
[2021-05-11T09:21:07,933][INFO ][logstash.runner          ] Log4j configuration path used is: /usr/local/logstash/logstash-7.12.1/config/log4j2.properties
[2021-05-11T09:21:07,954][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"7.12.1", "jruby.version"=>"jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc Java HotSpot(TM) 64-Bit Server VM 25.181-b13 on 1.8.0_181-b13 +indy +jit [linux-x86_64]"}
[2021-05-11T09:21:08,864][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2021-05-11T09:21:08,882][FATAL][logstash.runner          ] Logstash could not be started because there is already another instance using the configured data directory.  If you wish to run multiple instances, you must change the "path.data" setting.
[2021-05-11T09:21:08,887][FATAL][org.logstash.Logstash    ] Logstash stopped processing because of an error: (SystemExit) exit
org.jruby.exceptions.SystemExit: (SystemExit) exit
        at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:747) ~[jruby-complete-9.2.13.0.jar:?]
        at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:710) ~[jruby-complete-9.2.13.0.jar:?]
        at usr.local.logstash.logstash_minus_7_dot_12_dot_1.lib.bootstrap.environment.<main>(/usr/local/logstash/logstash-7.12.1/lib/bootstrap/environment.rb:89) ~[?:?]
[root@localhost bin]# cd ..
[root@localhost logstash-7.12.1]# cd data
[root@localhost data]# ls -ash
总用量 4.0K
   0 .     0 ..     0 dead_letter_queue     0 lastrun     0 .lock     0 queue  4.0K uuid
[root@localhost data]# ll
总用量 4
drwxr-xr-x. 2 root root  6 5月  10 17:00 dead_letter_queue
drwxr-xr-x. 2 root root 37 5月  10 17:39 lastrun
drwxr-xr-x. 2 root root  6 5月  10 17:00 queue
-rw-r--r--. 1 root root 36 5月  10 17:00 uuid
[root@localhost data]# ll -ash
总用量 4.0K
   0 drwxr-xr-x.  5 root wheel  84 5月  10 17:00 .
   0 drwxr-xr-x. 14 root root  278 5月  10 17:00 ..
   0 drwxr-xr-x.  2 root root    6 5月  10 17:00 dead_letter_queue
   0 drwxr-xr-x.  2 root root   37 5月  10 17:39 lastrun
   0 -rw-r--r--.  1 root root    0 5月  10 17:00 .lock
   0 drwxr-xr-x.  2 root root    6 5月  10 17:00 queue
4.0K -rw-r--r--.  1 root root   36 5月  10 17:00 uuid
[root@localhost data]# rm .lock
rm:是否删除普通空文件 ".lock"?shi^H^H
[root@localhost data]# ll -ash
总用量 4.0K
   0 drwxr-xr-x.  5 root wheel  84 5月  10 17:00 .
   0 drwxr-xr-x. 14 root root  278 5月  10 17:00 ..
   0 drwxr-xr-x.  2 root root    6 5月  10 17:00 dead_letter_queue
   0 drwxr-xr-x.  2 root root   37 5月  10 17:39 lastrun
   0 -rw-r--r--.  1 root root    0 5月  10 17:00 .lock
   0 drwxr-xr-x.  2 root root    6 5月  10 17:00 queue
4.0K -rw-r--r--.  1 root root   36 5月  10 17:00 uuid
[root@localhost data]# rm .lock
rm:是否删除普通空文件 ".lock"?yes
[root@localhost data]# ll -ash
总用量 4.0K
   0 drwxr-xr-x.  5 root wheel  71 5月  11 09:23 .
   0 drwxr-xr-x. 14 root root  278 5月  10 17:00 ..
   0 drwxr-xr-x.  2 root root    6 5月  10 17:00 dead_letter_queue
   0 drwxr-xr-x.  2 root root   37 5月  10 17:39 lastrun
   0 drwxr-xr-x.  2 root root    6 5月  10 17:00 queue
4.0K -rw-r--r--.  1 root root   36 5月  10 17:00 uuid
[root@localhost data]# 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperChen12356

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值