【发布时间】: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