logstash使用JDBC连接MySQL错误(已经解决)

最近接到一个任务,用ELK展示MySQL数据库中的数据。接到任务的时候,认为这就是小菜一碟,因为我已经做过类似的任务,从MySQL中取数据,用ELK展示数据。
将以前用过的logstash的conf文件简单修改一下,就应该没问题了:

	jdbc {
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		jdbc_connection_string => "jdbc:mysql://192.168.0.141:3306/test"
		jdbc_user => "user"
		jdbc_password => "password"
		schedule => "* * * * *"
		clean_run => "false"
		statement_filepath => "SQL\cr1top31.sql"
		jdbc_paging_enabled => "true"
		jdbc_page_size => "100000"
		use_column_value => true
		tracking_column => "Offload"
		tracking_column_type => "numeric"
		last_run_metadata_path => "meta\cr1top31"
		type => "cr1top31"
	}

运行之后,出现如下错误

[ERROR][logstash.inputs.jdbc     ] Unable to connect to database. Tried 1 times {:error_message=>"Java::JavaSql::SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required"}

查了一下,网友们都是说由于JDBC版本过高导致的。于是查看了官方的JDBC8.0.11的说明:
https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-11.html
里面确实只提到了它支持的MySQL版本为8.0, 5.7, 5.6, and 5.5:
在这里插入图片描述
于是从如下链接下载了一个5.0.8的JDBC:
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.0.8
下载的jar包放在哪儿呢?
由于我之前的jdbc8.0.11已经存放在了默认的jar包文件夹logstash-7.3.1\logstash-core\lib\jars下面,所以新下载的JDBC就存放在自建文件夹 logstash-7.3.1\connector下,并且更改了logstash的配置文件:

	jdbc {
		jdbc_driver_library => "..\connector\mysql-connector-java-5.0.8.jar"
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		jdbc_connection_string => "jdbc:mysql://192.168.0.141:3306/test"
		jdbc_user => "user"
		jdbc_password => "password"
		schedule => "* * * * *"
		clean_run => "false"
		statement_filepath => "SQL\cr1top31.sql"
		jdbc_paging_enabled => "true"
		jdbc_page_size => "100000"
		use_column_value => true
		tracking_column => "Offload"
		tracking_column_type => "numeric"
		last_run_metadata_path => "meta\cr1top31"
		type => "cr1top31"
	}

启动运行之后,故障依旧

[ERROR][logstash.inputs.jdbc     ] Unable to connect to database. Tried 1 times {:error_message=>"Java::JavaSql::SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required"}

大神可能已经看出问题所在了,其实问题在于我的jdbc_driver_library设置的有问题。

jdbc_driver_library => "..\connector\mysql-connector-java-5.0.8.jar"

这个键值必须是以"/“而不是”\"进行文件夹层级分割,否则logstash就认为jdbc_driver_library键的设置无效,仍然去默认的Jar包文件夹里面去寻找JDBC,所以仍然找到的是JDBC8.0.11.

更改配置,用"/“替换”\":

jdbc_driver_library => "../connector/mysql-connector-java-5.0.8.jar"

问题解决。

总结:
Logstash的配置文件中,涉及到文件夹层级分割符的时候,要注意,因为有的键支持"\“作为分隔符,比如jdbc input plugin的
statement_filepath
last_run_metadata_path
但是有的键就只能用”/"作为分隔符,比如jdbc input plugin的jdbc_driver_library,file input plugin 的path键

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值