Настройте входной плагин logstash jdbc, чтобы отключить автокоммит для соединения postgresql - PullRequest
0 голосов
/ 07 ноября 2019

Я хотел бы иметь возможность загружать большие таблицы postgresql в ElasticSearch, не прибегая к подкачке страниц.

Я столкнулся с проблемой, когда размер выборки не может быть применен для соединений postgresql jdbc, так как для соединений по умолчанию установлено значениеautocommit, как сообщается здесь:

https://github.com/logstash-plugins/logstash-input-jdbc/issues/103

Глядя на документацию по плагину jdbc для входа logstash, я вижу, что под sequel_opts есть возможность указать вызываемый объект after_connect.

Я пытаюсь проверить, позволит ли реализация after_connect отключить автокоммит для размера выборки. Или, возможно, after_connect необходимо отключить автокоммит, а затем повторно применить значение размера выборки.

Похоже, это подход, который может работать, или кто-то уже пошел по этому пути и увидел, что он потерпел неудачу?

Я пытаюсь реализовать это в моем файле конфигурации logstash. Мне не удалось придумать синтаксис Ruby для правильного вызова сценария.

Я пробовал несколько вариантов - см. Ниже мою последнюю попытку. Буду признателен за любые рекомендации о том, как правильно представлять этот код.

jdbc {
    # Postgres jdbc connection string to our database
    jdbc_connection_string =>  "${JDBC_URL}"

    # validate connection before use
    jdbc_validate_connection => true

    # The user we wish to execute our statement as
    jdbc_user => "${JDBC_USER}"

    # The password for jdbc_user
    jdbc_password => "${JDBC_PWRD}"

    # The path to our downloaded jdbc driver
    jdbc_driver_library =>  "${JDBC_JAR}"


    # The name of the driver class for Postgresql
    jdbc_driver_class =>  "${JDBC_DRIVER}"


    sql_log_level => "debug"
    jdbc_fetch_size => 10000

    sequel_opts => {
    after_connect =>
        "proc { |c| c.autocommit = false } end"             
    }


    # our query
    statement => "some valid select statement"   

}

Спасибо.

Дэвид

...