mysql時間延遲怎么解決 如何把mysql中的數據同步到elasticsearch中?
如何把mysql中的數據同步到elasticsearch中?近年來接觸了比較多的有同步需求的項目,文件同步以及各種主流和非主流數據庫之間的同步。要把數據從 MySQL 同步到 Elasticsearc
如何把mysql中的數據同步到elasticsearch中?
近年來接觸了比較多的有同步需求的項目,文件同步以及各種主流和非主流數據庫之間的同步。要把數據從 MySQL 同步到 Elasticsearch,可以通過以下辦法實現。
自實現
數據同步的關鍵的就是提取變化數據,MySQL 中捕獲數據變化的有:
觸發器:簡單直接,使用觸發器把變化記錄的主鍵插入到一個中間表中,程序定時掃描提取數據
Binlog:基于數據庫二進制日志,日志中記錄了數據的增刪改操作,一般都是使用程序模擬 Slave 接收并解析日志,從而獲取數據
冗余字段:可以在同步表中添加一個更新時間字段,定時掃描并提取大于某個時間點的數據
自實現是需要成本的,當然了,也有很多開源工具可以使用。
使用其他工具
logstash-input-jdbc:這是 logstash 官方提供的一個插件,支持全量同步和增量同步,原理也比較簡單,就是定時執行SQL,可使用上述使用**冗余字段**的方法。地址: go-mysql-elasticsearch:基于 Go 開發的,使用 Binlog 進行同步的第三方開源工具。地址: elasticsearch-jdbc:第三方工具,基于 SQL 進行全量和增量的同步。地址:
推薦使用 logstash-input-jdbc,比較易用且穩定。
powerjob優缺點?
PowerJob特點:
使用簡單:提供前端Web界面,允許開發者可視化地完成調度任務的管理(增、刪、改、查)、任務運行狀態監控和運行日志查看等功能。
定時策略完善:支持CRON表達式、固定頻率、固定延遲和API四種定時調度策略。
執行模式豐富:支持單機、廣播、Map、MapReduce四種執行模式,其中Map/MapReduce處理器能使開發者寥寥數行代碼便獲得集群分布式計算的能力。
DAG工作流支持:支持在線配置任務依賴關系,可視化得對任務進行編排,同時還支持上下游任務間的數據傳遞
執行器支持廣泛:支持Spring Bean、內置/外置Java類、Shell、Python等處理器,應用范圍廣。
運維便捷:支持在線日志功能,執行器產生的日志可以在前端控制臺頁面實時顯示,降低debug成本,極大地提高開發效率。
依賴精簡:最小僅依賴關系型數據庫(MySQL/Oracle/MS SQLServer...),擴展依賴為MongoDB(用于存儲龐大的在線日志)。
高可用高性能:調度服務器經過精心設計,一改其他調度框架基于數據庫鎖的策略,實現了無鎖化調度。部署多個調度服務器可以同時實現高可用和性能的提升(支持無限的水平擴展)。
故障轉移與恢復:任務執行失敗后,可根據配置的重試策略完成重試,只要執行器集群有足夠的計算節點,任務就能順利完成。