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