logstash从mysql同步数据踩坑记录
一、错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_181\lib;C:\Program
执行完logstash.bat -f …/config/mysql.conf 后界面显示
原因:安装jdk的目录有空格导致
解决方案:找到logstash-6.2.1\bin\logstash.bat,将该处%CLASSPATH%改成"%CLASSPATH%",如图所示:
改为:
保存后重新启动,问题解决。
二、logstash正常启动,但是连接不了MySQL
现象:查看日志,发现logstash正常启动,但是连接不了MySQL,报错: Sequel::DatabaseConnectionError
2014 Java::ComMysqlJdbcExceptionsJdbc4::CommunicationsException: Communications link failure
mysql.conf中jdbc配置如下所示:
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/xc_course?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"
# the user we wish to excute our statement as
jdbc_user => "root"
jdbc_password => admin
# the path to our downloaded jdbc driver
jdbc_driver_library => "F:/maven_repository/mysql/mysql-connector-java/5.1.40/mysql-connector-java-5.1.40.jar"
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#要执行的sql文件
#statement_filepath => "/conf/course.sql"
statement => "select * from course_pub where timestamp > date_add(:sql_last_value,INTERVAL 8 HOUR)"
#定时配置
schedule => "* * * * *"
record_last_run => true
last_run_metadata_path => "F:/studyOnline/elasticsearch/logstash-6.2.1/config/logstash_metadata"
}
感觉配置并没有什么问题,但就是连接不上mysql,经过网上各种查找资料问题得到解决
原因:MySQL在高版本需要指明是否进行SSL连接
解决办法:在 jdbc_connection_string后面加上:&useSSL=false,如图所示:
保存后重新启动,问题解决。有类似问题的朋友可以尝试一下。