通過Logstash由SQLServer向Elasticsearch同步數據


延用上篇ELK所需環境,新增logstash配置文件

需要數據庫鏈接驅動 Microsoft JDBC driver 6.2 for SQL Server

下載地址: https://www.microsoft.com/zh-CN/download/details.aspx?id=55539

在 logstash 的 bin 文件夾下 新增文件夾 jdbcconfig 以及如下文件

image

新增 Logstash 配置文件 jdbc.conf

input {
    jdbc {
     jdbc_driver_library => "D:\ELK_logs\logstash-6.3.2\bin\jdbcconfig\mssql-jdbc-6.2.2.jre8.jar"
            jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
            jdbc_connection_string => "jdbc:sqlserver://192.168.100.51:1433;DatabaseName=BTPreservation;"
            jdbc_user => "sa"
            jdbc_password => "Rl123456"
                     # schedule => 分 時 天 月 年  
                        # schedule => * 22  *  *  *     //will execute at 22:00 every day
            schedule => "* * * * *"
            jdbc_paging_enabled => true
            jdbc_page_size => 1000
            clean_run => false
            use_column_value => true
            #設置查詢條件的字段
              tracking_column => FID
            record_last_run => true
            last_run_metadata_path => "D:\ELK_logs\logstash-6.3.2\bin\jdbcconfig\FID.txt"
            #設置列名小寫
              lowercase_column_names => false
            statement_filepath => "D:\ELK_logs\logstash-6.3.2\bin\jdbcconfig\x_Loan_PreservationAdvanceList.sql"
            #索引的類型
              type => "advancelist"
    }
}

output {
    elasticsearch {
        hosts => ["192.168.100.50:9200"]
        index => "advancelist"
        document_id => "%{FID}"
    }
    stdout {
        #codec => json_lines
        #設置輸出的格式
        codec => line {
            format => "FID: %{[FID]} FPersonName: %{[FPERSONNAME]} FAddTime: %{[FADDTIME]}"
        }
    }
}

  • 這里是將最后一次查詢所得的最大ID 存儲下來,每次執行 同步是 將此ID 設置為查詢條件,獲取增量數據,如果我們使用最后更新時間作為判斷條件,則可以獲取整張表最新數據

FID.txt 存儲查詢條件 ,配置好后自動生成

 

x_Loan_PreservationAdvanceList.sql 需要同步數據執行的Sql

SELECT * FROM dbo.x_Loan_PreservationAdvanceList WHERE FID > :sql_last_value

 

注意:啟動時因為是同台機器運行多個logstash實例,所以需要指定不同的數據存儲目錄 path.Data

執行命令:

.\logstash -f .\jdbcconfig\jdbc.conf --path.data=/jdbcconfig/

 

執行后成功后,在 kibana 創建 索引

image

 

因為我們執行命令時,使用的時 cmd 窗口,當你向同步的數據庫表中新增數據是,會實時在 cmd 窗口看到同步情況

后面我們也可以使用 NSSM 工具將其安裝成服務運行

思考:如果我們要同步多張表該如何處理?,什么樣的場景需要這樣的同步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM