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