【发布时间】:2019-01-22 01:46:07
【问题描述】:
我正在尝试使用 Logstash 将 32m 行从 MySQL 导入 Elasticsearch,它工作正常,但在达到 3.5m 时会中断。检查了 MySQL,Logstash 运行正常,Elasticsearch 的问题请看日志:
[2018-08-14T23:06:44,299][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [4OtmyM2] Failed to clear cache for realms [[]]
[2018-08-14T23:06:44,345][INFO ][o.e.l.LicenseService ] [4OtmyM2] license [23fbbbff-0ba9-44f5-be52-7f5a6498dbd1] mode [basic] - valid
[2018-08-14T23:06:44,368][INFO ][o.e.g.GatewayService ] [4OtmyM2] recovered [1] indices into cluster_state
[2018-08-14T23:06:46,120][INFO ][o.e.c.r.a.AllocationService] [4OtmyM2] Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[clustername][2]] ...]).
[2018-08-14T23:55:55,780][INFO ][o.e.m.j.JvmGcMonitorService] [4OtmyM2] [gc][2953] overhead, spent [378ms] collecting in the last [1s]
我已将堆大小增加到 2GB,但仍然无法处理。迁移配置文件如下:
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/clustername?useCursorFetch=true"
jdbc_user => "USER"
jdbc_password => "PSWD"
jdbc_validate_connection => true
jdbc_driver_library => "/usr/share/java/mysql-connector-java-5.1.42.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
#jdbc_fetch_size => "50000"
jdbc_page_size => 100000
statement => "SELECT * FROM `video` ORDER by `id` ASC LIMIT 100000 OFFSET 3552984"
}
}
感谢您的任何建议。
【问题讨论】:
-
你有没有试过在ES中禁用refresh_interval然后导入数据。
-
是的,禁用了它,但它仍然无法正常工作。 ES Index 存储数据有限制吗?
-
不,我实际上已经通过logstash从sql server一次导入了多达8000万条记录,ES运行的机器配置是什么。并且可以在索引时检查你的CPU利用率。
-
我猜 CPU 很好,因为它可以快速导入 3.5m,当我尝试仅在输出中测试时,它很容易在 Logstash 中处理它。 4CPU XEON、12GB RAM、200GB SSD 磁盘可用。
标签: mysql elasticsearch logstash