Плагин ввода Logstash JDBC: перенос данных из mysql в счетчике пакетов

У меня есть таблица данных 20 ГБ с 50 миллионами строк. Необходимо перейти на ElasticSearch с помощью подключаемого модуля ввода logstash jdbc. Я испробовал всю базовую реализацию, но мне нужна помощь в переносе данных в пакетном режиме, т.е. только 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"
    }
}

Заранее спасибо.


person Chitra    schedule 13.05.2016    source источник
comment
Это помогает? elastic.co/guide/en/logstash/ текущий /   -  person Val    schedule 13.05.2016
comment
Спасибо, Вэл, не могли бы вы привести мне пример того, как это реализовать.   -  person Chitra    schedule 16.05.2016
comment
В блоге есть отличное сообщение, в котором приводится пример от А до Я: elastic.co/ блог / logstash-jdbc-input-plugin   -  person Val    schedule 16.05.2016
comment
Да, я просмотрел этот блог, но он не удовлетворяет моим требованиям. Я могу ограничить запрос выборкой 10 000 записей за раз, но как он узнает, что в следующий раз будет извлечено 10 000 записей, начиная с 10 001. Итак, это некоторый параметр, который необходимо передать плагину, но не знаю, как передать этот параметр извне. пример: statement = ›select * from employee, где id›: sql_last_value limit 10 принимает только 10 записей в первый раз и сохраняет идентификатор 10-й строки в последней записи запуска. Но в следующий раз, когда я запускаю его, он снова выбирает те же строки, но не 11-20-е строки.   -  person Chitra    schedule 16.05.2016
comment
Вы можете установить jdbc_paging_enabled в true, чтобы достичь того, что вам нужно.   -  person Val    schedule 16.05.2016
comment
Вэл, это то, что я ввел {jdbc {jdbc_driver_library = ›mysql-connector-java-5.1.12-bin.jar jdbc_driver_class =› com.mysql.jdbc.Driver jdbc_connection_string = jdbc: mysql: // localbhostc / dbc: mysql: // localbhost = ›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} i} можно указать, где могло пойти не так. Это большая помощь с вашей стороны, спасибо   -  person Chitra    schedule 16.05.2016
comment
Пожалуйста, обновите свой вопрос вместо того, чтобы добавлять код в комментарии. Это более разборчиво.   -  person Val    schedule 16.05.2016


Ответы (1)


Вам необходимо установить jdbc_paging_enabled в значение true, чтобы разбиение на страницы работало.

Но вам также необходимо убедиться, что для clean_run установлено значение false, иначе разбивка на страницы не будет работать.

person Val    schedule 16.05.2016
comment
Большое спасибо за ваше руководство, я смог добиться того, чего хотел. - person Chitra; 17.05.2016
comment
Замечательно, рад, что помог! - person Val; 17.05.2016
comment
@Val Как ведет себя разбиение на страницы, если используется агрегат?, То есть если он просто вырезает страницу с определенным идентификатором, а на следующей странице остается какой-то идентичный идентификатор, агрегат будет очищен, и данные будут потеряны или добавлены к существующему один? - person Max; 17.07.2020
comment
@Max, пожалуйста, создайте новый вопрос с точным указанием ваших потребностей - person Val; 17.07.2020
comment
@Val Вот похожий вопрос без ответа, поэтому я не хотел дублировать вопрос. :) - person Max; 17.07.2020