내 jdbc
플러그인에 logstash
입력 내용의 MySQL 문이 있습니다.logstash에서 sql_last_value에 대한 테이블의 ID를 사용합니까?
statement => "SELECT * from TEST where id > :sql_last_value"
내 테이블과 같은 어떤 date
또는 datetime
필드가 없습니다. 그래서 새로운 행이 테이블에 추가되었는지 여부를 확인하기 위해 scheduler
을 사용하여 분 단위로 확인하여 인덱스를 업데이트하려고합니다.
기존 레코드에서 기존 값 변경 내용을 업데이트하지 않고 새 레코드를 업데이트 할 수 있어야합니다. 그래서 나는 얼마쯤 logstash
입력이 데이 작업을 수행합니다 :
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://myhostmachine:3306/mydb"
jdbc_user => "root"
jdbc_password => "root"
jdbc_validate_connection => true
jdbc_driver_library => "/mypath/mysql-connector-java-5.1.39-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
schedule => "* * * * *"
statement => "SELECT * from mytable where id > :sql_last_value"
use_column_value => true
tracking_column => id
last_run_metadata_path => "/path/.logstash_jdbc_last_run"
clean_run => true
}
}
내가 인덱스를 생성하고 문서를 업로드하기 위해이 logstash
파일을 실행 할 때마다 그래서, 전혀 업로드되지 않습니다를. 문서 개수는 0으로 표시됩니다. logstash
conf 파일을 실행하기 전에 .logstash_jdbc_last_run
을 삭제했는지 확인했습니다. logstash 콘솔 출력
부품 :
[2016-11-02T16 : 33 : 00294] [INFO] logstash.inputs.jdbc] (0.002000s) SELECT COUNT (*) 발
count
AS (TEST에서 *을 선택 여기서 ID> '2016년 11월 2일 11시 2분 0초')이 '1 케이 다음
이것이 올바른 분하여 예약을 선택하여가는 유지하지만 LIMIT t1
AS 기록을 가져 오지 마라. 어떻게 작동합니까?
내가 누락 된 항목이 있습니까? 어떤 도움을 주셔서 감사합니다.
'jdbc' 입력 설정에'clean_run => true'를 추가하려고 시도 했습니까? ID 필드와 비교할 때 사용한 값이 날짜가 '2016-11-02 11 : 02 : 00' 인 것은 정상이 아닙니다. – Val
@Val 또한 시도해 보았지만 여전히 결과는 같습니다. – Kulasangar
'clean_run'은'.logstash_jdbc_last_run' 파일을 삭제합니다. 어쩌면'tracking_column_type => 'numeric'을 기본값으로 지정하려고 시도 할 수도 있습니다. – Val