【问题标题】:Logstash JDBC Input plugin : Migrate data from mysql in batch countLogstash JDBC Input 插件:批量从 mysql 迁移数据
【发布时间】:2016-09-09 06:33:13
【问题描述】:

我有一个包含 5000 万行的 20GB 数据表。需要使用 logstash jdbc 输入插件迁移到 ElasticSearch。我已经尝试了所有基本实现,但需要帮助批量迁移数据,即一次只有 10,000 行。我不确定如何以及在何处指定此计数以及下次运行 logstash 时如何更新它。请帮我解决这个问题

这就是我所拥有的:

input {
    jdbc {
        jdbc_driver_library => "mysql-connector-java-5.1.12-bin.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_connection_string => "jdbc:mysql://localhost/db"
        jdbc_validate_connection => true
        jdbc_user => "root"
        jdbc_password => "root"
        clean_run => true
        record_last_run => true
        use_column_value => true
        jdbc_paging_enabled => true
        jdbc_page_size => 5
        tracking_column => id
        statement => "select * from employee"
    }
}

提前致谢。

【问题讨论】:

  • 谢谢你,Val,你能给我一些如何实现它的例子吗?
  • 有一篇很棒的博文提供了一个从 A 到 Z 的示例:elastic.co/blog/logstash-jdbc-input-plugin
  • 是的,我浏览了这个博客,但它不能满足我的要求。我可以将查询限制为一次获取​​ 10,000 条记录,但它如何知道下次从 10,001 条开始获取 10,000 条记录。所以这是一些需要传递给插件的参数,但不确定如何从外部传递这个参数。 ex : statement => "select * from employee where id > :sql_last_value limit 10" 第一次只取 10 条记录,并在最后一次运行记录中存储第 10 行的 id。但是下次我运行它时,它会再次获取相同的行,但不是第 11-20 行
  • 您可以将jdbc_paging_enabled 设置为true 以实现您所需要的。

标签: mysql elasticsearch logstash logstash-jdbc


【解决方案1】:

您需要将 jdbc_paging_enabled 设置为 true 才能使分页生效。

但你还需要确保clean_run设置为false,否则分页将不起作用。

【讨论】:

  • 非常感谢您的指导,我可以实现我想要的。
  • 太棒了,很高兴它有帮助!
  • @Val 如果使用聚合,分页的行为如何?也就是说,如果它只是剪切具有某个 id 的页面并且在下一页上保留了一些相同的 id,聚合将清理并且数据会丢失还是添加到现有的?
  • @Max 请根据您的确切需求创建一个新问题
  • @Val 这是一个类似的未回答问题,所以我不想重复这个问题。 :) stackoverflow.com/questions/61032373/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 2016-09-22
相关资源
最近更新 更多