【问题标题】:Can logstash's JDBC input plugin do multiple sql tasks?logstash的JDBC输入插件可以做多个sql任务吗?
【发布时间】:2020-12-24 09:33:18
【问题描述】:

现在有一个从 db 读取的 JDBC 任务

input {
  jdbc {
    jdbc_connection_string => "jdbc:mysql://${MYSQL_MAIN_HOST}/${MYSQL_DATABASE}"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_page_size => 10000
    jdbc_paging_enabled => true
    jdbc_password => "${MYSQL_PASSWORD}"
    jdbc_user => "${MYSQL_USER}"
    schedule => "0 1 * * *"
    statement_filepath => "/usr/share/logstash/pipeline/sql/select_posts.sql"
    tracking_column => "updated_at"
    tracking_column_type => "numeric"
    use_column_value => true
    last_run_metadata_path => "/usr/share/logstash/jdbc_last_run/select_posts_last_value"
  }
}

/usr/share/logstash/pipeline/sql/select_posts.sql

SELECT
  id,
  title,
  body
FROM posts

body 项处理非常大的数据时,这项任务很繁重。所以我想在第一次搜索时将其删除为:

SELECT
  id,
  title
FROM posts

然后获取ID并使用它们再次找到body

SELECT
  body
FROM posts
WHERE id in (IDs)

设置为输出目标。即使更新输出目标也可以。

那么在这种情况下logstash可以逐条读取吗?

【问题讨论】:

    标签: mysql sql jdbc logstash logstash-jdbc


    【解决方案1】:

    如果你想使用logstash执行两个单独的sql查询,你可以这样做

    • 查询1。 sql
    SELECT
      id,
      title
    FROM posts
    
    • query2.sql
    SELECT
      body
    FROM posts
    WHERE id in (IDs)
    
    • logstash.conf
    input {
      jdbc {
        jdbc_connection_string => "jdbc:mysql://${MYSQL_MAIN_HOST}/${MYSQL_DATABASE}"
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        jdbc_page_size => 10000
        jdbc_paging_enabled => true
        jdbc_password => "${MYSQL_PASSWORD}"
        jdbc_user => "${MYSQL_USER}"
        schedule => "0 1 * * *"
        statement_filepath => <PATH TO query1.sql>  -----query1.sql
        tracking_column => "updated_at"
        tracking_column_type => "numeric"
        use_column_value => true
        last_run_metadata_path => "/usr/share/logstash/jdbc_last_run/select_posts_last_value"
      }
    
     jdbc {
        jdbc_connection_string => "jdbc:mysql://${MYSQL_MAIN_HOST}/${MYSQL_DATABASE}"
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        jdbc_page_size => 10000
        jdbc_paging_enabled => true
        jdbc_password => "${MYSQL_PASSWORD}"
        jdbc_user => "${MYSQL_USER}"
        schedule => "0 1 * * *"
        statement_filepath => "<PATH TO query2.sql>"    -----query2.sql
        tracking_column => "updated_at"
        tracking_column_type => "numeric"
        use_column_value => true
        last_run_metadata_path => "/usr/share/logstash/jdbc_last_run/select_posts_last_value"
      }
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      相关资源
      最近更新 更多