logstash启动了 mysql无法连接

本文记录了一次使用Logstash JDBC输入插件时遇到的TypeError异常,详细展示了错误堆栈跟踪,并给出了问题的原因及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错信息

[2019-07-19T17:00:00,134][ERROR][logstash.inputs.jdbc     ] Unable to connect to database. Tried 1 times {:error_message=>"TypeError: could not coerce Fixnum to class java.lang.String"}
{ 2014 rufus-scheduler intercepted an error:
  2014   job:
  2014     Rufus::Scheduler::CronJob "* * * * *" {}
  2014   error:
  2014     2014
  2014     Sequel::DatabaseConnectionError
  2014     TypeError: could not coerce Fixnum to class java.lang.String
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/adapters/jdbc.rb:199:in `connect'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/connection_pool.rb:126:in `make_new'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/connection_pool/threaded.rb:192:in `assign_connection'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/connection_pool/threaded.rb:133:in `acquire'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/connection_pool/threaded.rb:90:in `hold'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/database/connecting.rb:269:in `synchronize'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/database/connecting.rb:279:in `test_connection'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/database/connecting.rb:58:in `connect'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/sequel-5.4.0/lib/sequel/core.rb:116:in `connect'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/logstash-input-jdbc-4.3.3/lib/logstash/plugin_mixins/jdbc.rb:112:in `block in jdbc_connect'
  2014       org/jruby/RubyKernel.java:1292:in `loop'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/logstash-input-jdbc-4.3.3/lib/logstash/plugin_mixins/jdbc.rb:109:in `jdbc_connect'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/logstash-input-jdbc-4.3.3/lib/logstash/plugin_mixins/jdbc.rb:161:in `open_jdbc_connection'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/logstash-input-jdbc-4.3.3/lib/logstash/plugin_mixins/jdbc.rb:227:in `execute_statement'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/logstash-input-jdbc-4.3.3/lib/logstash/inputs/jdbc.rb:271:in `execute_query'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/logstash-input-jdbc-4.3.3/lib/logstash/inputs/jdbc.rb:250:in `block in run'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:234:in `do_call'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:258:in `do_trigger'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:300:in `block in start_work_thread'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:299:in `block in start_work_thread'
  2014       org/jruby/RubyKernel.java:1292:in `loop'
  2014       D:/ElasticSearch01/logstash-6.2.1/vendor/bundle/jruby/2.3.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:289:in `block in start_work_thread'

问题原因: 连接数据库密码没有加引号(学成在线视频中没有加所以我也没加)

在这里插入图片描述


解决办法: 加上引号

在这里插入图片描述

### 配置 Logstash 连接 MySQL 数据库 #### 下载并安装必要的组件 为了使 Logstash 能够连接MySQL 数据库,在 Windows 环境中需先下载 Logstash 工具[^1]。接着,确保已获取适用于 MySQL 的 JDBC 驱动程序 (即 `mysql-connector-java-x.x.xx-bin.jar`) 并将其放置于 Logstash 安装目录下的 `logstash-core/lib/jars` 文件夹内[^2]。 #### 创建配置文件 创建一个新的 `.conf` 文件用于定义输入、过滤器以及输出插件的具体参数设置。此文件应位于 Logstash 的配置文件所在位置,默认情况下可能是 `/etc/logstash/conf.d/` 或者用户自定义的位置。对于本案例而言,重点在于指定正确的数据库连接字符串和其他必要选项: ```ruby input { jdbc { jdbc_driver_library => "path/to/mysql-connector-java-x.x.xx-bin.jar" jdbc_driver_class => "com.mysql.cj.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/my_database?useSSL=false&serverTimezone=UTC" jdbc_user => "my_username" jdbc_password => "my_password" schedule => "* * * * *" # 按需求调整调度频率 statement_filepath => "/path/to/sql/query.sql" # SQL 查询语句保存路径 last_run_metadata_path => "/desired/path/.logstash_jdbc_last_run" } } filter {} output { elasticsearch { hosts => ["http://localhost:9200"] index => "my_index_name"} } ``` 上述代码片段展示了如何通过 JDBC 输入插件来读取来自 MySQL 表的数据,并将这些数据发送给 Elasticsearch 实例进行索引处理。注意替换其中的占位符(如 `path/to`, `my_...`)为实际值以匹配个人环境中的具体情况[^3]。 #### 启动 Logstash 完成以上步骤之后,在 Logstash 的 bin 目录打开命令提示符窗口执行启动指令: ```shell .\logstash.bat -f path\to\your_config_file.conf ``` 这将会依据所编写的配置文件加载相应的管道逻辑并开始工作流程。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值