国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL同步ES方案

這篇具有很好參考價值的文章主要介紹了MySQL同步ES方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 前言

在項目開發(fā)中,我們經常將 MySQL 作為業(yè)務數據庫,ES 作為查詢數據庫,用來實現(xiàn)讀寫分離,緩解 MySQL 數據庫的查詢壓力,應對海量數據的復雜查詢。
這其中有一個很重要的問題,就是如何實現(xiàn) MySQL 數據庫和 ES 的數據同步,今天和大家聊聊 MySQL 和 ES 數據同步的各種方案。

2. 數據同步方案

2.1 同步雙寫

這是一種最為簡單的方式,在將數據寫到 MySQL 時,同時將數據寫到 ES。
MySQL同步ES方案,mysql,elasticsearch
優(yōu)點:

  • 業(yè)務邏輯簡單;
  • 實時性高。
    缺點:
  • 硬編碼,有需要寫入 MySQL 的地方都需要添加寫入 ES 的代碼;
  • 業(yè)務強耦合;
  • 存在雙寫失敗丟數據風險;
  • 性能較差,本來 MySQL 的性能不是很高,再加一個 ES,系統(tǒng)的性能必然會下降。

2.2 異步雙寫

針對多數據源寫入的場景,可以借助 MQ 實現(xiàn)異步的多源寫入。
MySQL同步ES方案,mysql,elasticsearch
優(yōu)點:

  • 性能高;
  • 不易出現(xiàn)數據丟失問題,主要基于 MQ 消息的消費保障機制,比如 ES 宕機或者寫入失敗,還能重新消費 MQ 消息;
  • 多源寫入之間相互隔離,便于擴展更多的數據源寫入。
    缺點:
  • 硬編碼問題,接入新的數據源需要實現(xiàn)新的消費者代碼;
  • 系統(tǒng)復雜度增加,引入了消息中間件;
  • MQ是異步消費模型,用戶寫入的數據不一定可以馬上看到,造成延時。

2.3 基于 SQL 抽取

如果對實時性要求不高的情況下,可以考慮用定時器來處理:
1.數據庫的相關表中增加一個 timestamp 的字段,任何 CUD 操作都會導致該字段的時間發(fā)生變化;
2.原來程序中的 CUD 操作不做任何變化;
3.增加一個定時器程序,按一定的時間周期掃描指定的表,把該時間段內發(fā)生變化的數據提取出來;
4.逐條寫入到 ES。
MySQL同步ES方案,mysql,elasticsearch
優(yōu)點:

  • 不改變原來代碼,沒有侵入性、沒有硬編碼;
  • 沒有業(yè)務強耦合,不改變原來程序的性能;
  • Worker 代碼編寫簡單不需要考慮增刪改查。
    缺點:
  • 時效性較差,由于是采用定時器根據固定頻率查詢表來同步數據,盡管將同步周期設置到秒級,也還是會存在一定時間的延遲;
  • 對數據庫有一定的輪詢壓力,一種改進方法是將輪詢放到壓力不大的從庫上。
    經典方案:借助 Logstash 實現(xiàn)數據同步,其底層實現(xiàn)原理就是根據配置定期使用 SQL 查詢新增的數據,然后寫入 ES,實現(xiàn)數據的增量同步。

2.4 基于SQL寫操作的后快照

1.從數據庫連接獲取表的元數據信息:TableMeta、ColumnMeta、IndexMeta
2.解析SQL的類型(增、刪、改),獲取記錄的主鍵信息(列名、類型、值),修改的字段信息(列名、類型、值)
3.根據上述信息生成查詢SQL,查詢修改后的數據
4.將修改后的數據寫入ES
MySQL同步ES方案,mysql,elasticsearch
優(yōu)點:

  • 動態(tài)代理,不改變原來代碼,沒有侵入性、沒有硬編碼;
  • 沒有業(yè)務強耦合;
  • 實時性強,將ES納入數據庫的事務中,保證數據的一致性。
    缺點:
  • 使用動態(tài)代理,在業(yè)務流程中增加了額外的復雜度,影響原來程序的性能。

2.5 基于 Binlog 實時同步

上面4種方案要么有代碼侵入,要么有硬編碼,要么有延遲,要么增加性能開銷,那么有沒有更好的方案呢?
當然有,可以利用 MySQL 的 Binlog 來進行同步。
MySQL同步ES方案,mysql,elasticsearch
具體步驟如下:

  • 讀取 MySQL 的 Binlog 日志,獲取指定表的日志信息;
  • 將讀取的日志信息轉為 MQ的消息,并寫入MQ;
  • 編寫一個 MQ 消費程序;
  • 不斷消費MQ的消息,將消息寫入 ES。
    優(yōu)點:
  • 沒有代碼侵入、沒有硬編碼;
  • 原有系統(tǒng)不需要任何變化,沒有感知;
  • 性能高;
  • 業(yè)務解耦,不需要關注原來系統(tǒng)的業(yè)務邏輯。
    缺點:
  • 構建 Binlog 系統(tǒng)復雜;
  • 如果采用 MQ 傳送已解析的 Binlog 信息,也會像方案2.2一樣存在 MQ 延時的風險。

3. 數據遷移工具

對于上述 5 種數據同步方案,“基于 Binlog 實時同步”方案是目前最常用的,也誕生了很多優(yōu)秀的數據遷移工具,這里主要對這些遷移工具進行介紹。
這些數據遷移工具,很多都是基于 Binlog 訂閱的方式實現(xiàn),模擬一個 MySQL Slave 訂閱 Binlog 日志,從而實現(xiàn) CDC(Change Data Capture),將已提交的更改發(fā)送到下游,包括 INSERT、DELETE、UPDATE。

3.1 Cannel

基于數據庫增量日志解析,提供增量數據訂閱&消費,目前主要支持 MySQL。
Canal 原理就是偽裝成 MySQL 的從節(jié)點,從而訂閱 master 節(jié)點的 Binlog 日志,主要流程為:

  • Canal 服務端向 MySQL 的 master 節(jié)點傳輸 dump 協(xié)議;
  • MySQL 的 master 節(jié)點接收到 dump 請求后,推送 Binlog 日志給 Canal 服務端,解析 Binlog 對象(原始為 byte 流)轉成 Json 格式;
  • Canal 客戶端通過 TCP 協(xié)議或 MQ 形式監(jiān)聽 Canal 服務端,同步數據到 ES。
    MySQL同步ES方案,mysql,elasticsearch
    下面是 Cannel 執(zhí)行的核心流程,其中 Binlog Parser 主要負責 Binlog 的提取、解析和推送,EventSink 負責數據的過濾 、路由和加工,僅作了解即可。
    MySQL同步ES方案,mysql,elasticsearch

3.2 阿里云 DTS

數據傳輸服務 DTS(Data Transmission Service)支持 RDBMS、NoSQL、OLAP 等多種數據源之間的數據傳輸。
它提供了數據遷移、實時數據訂閱及數據實時同步等多種數據傳輸方式。相對于第三方數據流工具,DTS 提供豐富多樣、高性能、高安全、可靠的傳輸鏈路,同時它提供了諸多便利功能,極大方便了傳輸鏈路的創(chuàng)建及管理。
特點:

  • 多數據源:支持 RDBMS、NoSQL、OLAP 等多種數據源間的數據傳輸;
  • 多傳輸方式:支持多種傳輸方式,包括數據遷移、實時數據訂閱及數據實時同步;
  • 高性能:底層采用了多種性能優(yōu)化措施,全量數據遷移高峰期時性能可以達到70MB/s,20萬的TPS,使用高規(guī)格服務器來保證每條遷移或同步鏈路都能擁有良好的傳輸性能;
  • 高可用:底層為服務集群,如果集群內任何一個節(jié)點宕機或發(fā)生故障,控制中心都能夠將失敗節(jié)點上的所有任務快速切換到其他節(jié)點上,鏈路穩(wěn)定性高;
  • 簡單易用:提供可視化管理界面,提供向導式的鏈路創(chuàng)建流程,用戶可以在其控制臺簡單輕松地創(chuàng)建傳輸鏈路;
  • 需要付費。
    再看看 DTS 的系統(tǒng)架構。
    MySQL同步ES方案,mysql,elasticsearch
  • 高可用:數據傳輸服務內部每個模塊都有主備架構,保證系統(tǒng)高可用。容災系統(tǒng)實時檢測每個節(jié)點的健康狀況,一旦發(fā)現(xiàn)某個節(jié)點異常,會將鏈路快速切換到其他節(jié)點。
  • 數據源地址動態(tài)適配:對于數據訂閱及同步鏈路,容災系統(tǒng)還會監(jiān)測數據源的連接地址切換等變更操作,一旦發(fā)現(xiàn)數據源發(fā)生連接地址變更,它會動態(tài)適配數據源新的連接方式,在數據源變更的情況下,保證鏈路的穩(wěn)定性。

3.3 Databus

Databus 是一個低延遲、可靠的、支持事務的、保持一致性的數據變更抓取系統(tǒng)。由 LinkedIn 于 2013 年開源。
Databus 通過挖掘數據庫日志的方式,將數據庫變更實時、可靠的從數據庫拉取出來,業(yè)務可以通過定制化 client 實時獲取變更并進行其他業(yè)務邏輯。
特點:

  • 多數據源:Databus 支持多種數據來源的變更抓取,包括 Oracle 和 MySQL。
  • 可擴展、高度可用:Databus 能擴展到支持數千消費者和數據來源,同時保持高度可用性。
  • 事務按序提交:Databus 能保持來源數據庫中的事務完整性,并按照事務分組和來源的提交順尋交付變更事件。
  • 低延遲、支持多種訂閱機制:數據源變更完成后,Databus 能在毫秒級內將事務提交給消費者。同時,消費者使用Databus 中的服務器端過濾功能,可以只獲取自己需要的特定數據。
  • 無限回溯:對消費者支持無限回溯能力,例如當消費者需要產生數據的完整拷貝時,它不會對數據庫產生任何額外負擔。當消費者的數據大大落后于來源數據庫時,也可以使用該功能。
    再看看 Databus 的系統(tǒng)架構。
    Databus 由 Relays、Bootstrap 服務和 Client lib 等組成,Bootstrap 服務中包括 Bootstrap Producer 和 Bootstrap Server。
    MySQL同步ES方案,mysql,elasticsearch
  • 快速變化的消費者直接從 Relay 中取事件;
  • 如果一個消費者的數據更新大幅落后,它要的數據就不在 Relay 的日志中,而是需要請求 Bootstrap 服務,返回的將會是自消費者上次處理變更之后的所有數據變更快照。

4. 后記

通過這篇文章,讓你知道 MySQL 和ES的同步方案,以及常用的數據遷移工具。文章來源地址http://www.zghlxwxcb.cn/news/detail-847159.html

到了這里,關于MySQL同步ES方案的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • MySQL同步ES的幾種方案

    MySQL數據同步ES的幾種方案 1. 同步雙寫 ? ? ? ? 與業(yè)務耦合深,且業(yè)務響應時間長 2. 異步雙寫 ????????這時可以使用類似MQ這樣的中間件,業(yè)務主寫時向MQ發(fā)送一條信息,再由一個聚合服務區(qū)消費,最終同步到ES 3. 定時任務 ????????不好配置時間,頻率高會出現(xiàn)明顯的

    2024年01月20日
    瀏覽(22)
  • DataX實現(xiàn)Mysql與ElasticSearch(ES)數據同步

    DataX實現(xiàn)Mysql與ElasticSearch(ES)數據同步

    jdk1.8及以上 python2 查看是否安裝成功 查看python版本號,判斷是否安裝成功 在datax/job下,json格式,具體內容及主要配置含義如下 mysqlreader為讀取mysql數據部分,配置mysql相關信息 username,password為數據庫賬號密碼 querySql:需要查詢數據的sql,也可通過colums指定需要查找的字段(

    2024年02月05日
    瀏覽(24)
  • Mysql和ES、Redis數據同步方案匯總

    Mysql和ES、Redis數據同步方案匯總

    前言 我們一般會使用Mysql用來存儲數據,用Es來做全文檢索和特殊查詢,用redis來做數據的緩存 那么如何將數據優(yōu)雅的從Mysql同步到Es以及redis呢? 1.同步雙寫 這是一種最為簡單的方式,在將數據寫到mysql時,同時將數據寫到ES或者redis。 這個方法的缺點是代碼嚴重耦合,需要手

    2024年02月03日
    瀏覽(35)
  • 【技術選型】Mysql和ES數據同步方案匯總

    【技術選型】Mysql和ES數據同步方案匯總

    在實際項目開發(fā)中,我們經常將Mysql作為業(yè)務數據庫,ES作為查詢數據庫,用來實現(xiàn)讀寫分離,緩解Mysql數據庫的查詢壓力,應對海量數據的復雜查詢。 這其中有一個很重要的問題,就是如何實現(xiàn)Mysql數據庫和ES的數據同步,今天和大家聊聊Mysql和ES數據同步的各種方案。 MySQL

    2024年02月08日
    瀏覽(24)
  • 這4 種 MySQL 同步 ES 方案,真是yyds!

    這4 種 MySQL 同步 ES 方案,真是yyds!

    上周聽到公司同事分享 MySQL 同步數據到 ES 的方案,發(fā)現(xiàn)很有意思,感覺有必要將這塊知識點再總結提煉一下,就有了這篇文章。 本文會先講述數據同步的 4 種方案,并給出常用數據遷移工具 ,干貨滿滿! 不 BB,上文章目錄: 在實際項目開發(fā)中,我們經常將 MySQL 作為業(yè)務數

    2024年02月08日
    瀏覽(19)
  • Mysql 數據同步到 ES 的技術方案選型和思考

    Mysql 數據同步到 ES 的技術方案選型和思考

    ES 的幾個顯著特點,能有效補足 MySQL 在企業(yè)級數據操作場景的缺陷 文本搜索能力 :ES 是基于倒排索引實現(xiàn)的搜索系統(tǒng),配合多樣的分詞器,在文本模糊匹配搜索上表現(xiàn)得比較好,業(yè)務場景廣泛。 多維篩選性能好 :億級規(guī)模數據使用寬表預構建(消除 join),配合全字段索引

    2024年04月09日
    瀏覽(34)
  • MySQL數據同步到ES的4種解決方案

    MySQL數據同步到ES的4種解決方案

    大家應該都在各種電商網站檢索過商品,檢索商品一般都是通過什么實現(xiàn)呢?搜索引擎Elasticsearch。那么問題來了,商品上架,數據一般寫入到MySQL的數據庫中,那么用于檢索的數據又是怎么同步到Elasticsearch的呢? MySQL同步ES 這是能想到的最直接的方式,在寫入MySQL,直接也同

    2024年02月08日
    瀏覽(24)
  • MySQL與ES數據同步的四種方案及實踐演示

    MySQL與ES數據同步的四種方案及實踐演示

    也就是同步調用,這是一種最為簡單的方式,在將數據寫到mysql時,同時將數據寫到ES。 1.業(yè)務邏輯簡單 2實時性高 1.硬編碼,有需要寫入mysql的地方都需要添加寫入ES的代碼 2.業(yè)務強耦合 3.存在雙寫失敗丟數據風險 4.性能較差:本來mysql的性能不是很高,再加一個ES,系統(tǒng)的性

    2024年02月09日
    瀏覽(39)
  • 十萬字圖文詳解mysql、redis、kafka、elasticsearch(ES)多源異構不同種類數據庫集成、數據共享、數據同步、不同中間件技術實現(xiàn)與方案,如何構建數據倉庫、數據湖、數倉一體化?

    數據庫大數據量、高并發(fā)、高可用解決方案,十萬字圖文詳解mysql、redis、kafka、elasticsearch(ES)多源異構不同種類數據庫集成、數據共享、數據同步、不同中間件技術實現(xiàn)與方案,如何構建數據倉庫、數據湖、數倉一體化?Delta Lake、Apache Hudi和Apache Iceberg數倉一體化技術架構

    2024年02月07日
    瀏覽(57)
  • ElasticSearch - 在 微服務項目 中基于 RabbitMQ 實現(xiàn) ES 和 MySQL 數據異步同步(考點)

    ElasticSearch - 在 微服務項目 中基于 RabbitMQ 實現(xiàn) ES 和 MySQL 數據異步同步(考點)

    目錄 一、數據同步 1.1、什么是數據同步 1.2、解決數據同步面臨的問題 1.3、解決辦法 1.3.1、同步調用 1.3.2、異步通知(推薦) 1.3.3、監(jiān)聽 binlog 1.3、基于 RabbitMQ 實現(xiàn)數據同步 1.3.1、需求 1.3.2、在“酒店搜索服務”中 聲明 exchange、queue、routingKey,同時開啟監(jiān)聽 1.3.3、在“酒店

    2024年02月08日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包