国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

四種 MySQL 同步 ES 方案,yyds!

數據庫 MySQL
Databus 通過挖掘數據庫日志的方式,將數據庫變更實時、可靠的從數據庫拉取出來,業務可以通過定制化 client 實時獲取變更并進行其他業務邏輯。

大家好呀,我是樓仔。

上周聽到公司同事分享 MySQL 同步數據到 ES 的方案,發現很有意思,感覺有必要將這塊知識點再總結提煉一下,就有了這篇文章。

本文會先講述數據同步的 4 種方案,并給出常用數據遷移工具,干貨滿滿!

不 BB,上文章目錄:

圖片

1. 前言

在實際項目開發中,我們經常將 MySQL 作為業務數據庫,ES 作為查詢數據庫,用來實現讀寫分離,緩解 MySQL 數據庫的查詢壓力,應對海量數據的復雜查詢。

這其中有一個很重要的問題,就是如何實現 MySQL 數據庫和 ES 的數據同步,今天和大家聊聊 MySQL 和 ES 數據同步的各種方案。

我們先看看下面 4 種常用的數據同步方案。

2. 數據同步方案

2.1 同步雙寫

這是一種最為簡單的方式,在將數據寫到 MySQL 時,同時將數據寫到 ES。

圖片

優點:

  • 業務邏輯簡單;
  • 實時性高。

缺點:

  • 硬編碼,有需要寫入 MySQL 的地方都需要添加寫入 ES 的代碼;
  • 業務強耦合;
  • 存在雙寫失敗丟數據風險;
  • 性能較差,本來 MySQL 的性能不是很高,再加一個 ES,系統的性能必然會下降。

2.2 異步雙寫

針對多數據源寫入的場景,可以借助 MQ 實現異步的多源寫入。

圖片

優點:

  • 性能高;
  • 不易出現數據丟失問題,主要基于 MQ 消息的消費保障機制,比如 ES 宕機或者寫入失敗,還能重新消費 MQ 消息;
  • 多源寫入之間相互隔離,便于擴展更多的數據源寫入。

缺點:

  • 硬編碼問題,接入新的數據源需要實現新的消費者代碼;
  • 系統復雜度增加,引入了消息中間件;
  • MQ是異步消費模型,用戶寫入的數據不一定可以馬上看到,造成延時。

2.3 基于 SQL 抽取

上面兩種方案中都存在硬編碼問題,代碼的侵入性太強,如果對實時性要求不高的情況下,可以考慮用定時器來處理:

  1. 數據庫的相關表中增加一個字段為 timestamp 的字段,任何 CURD 操作都會導致該字段的時間發生變化;
  2. 原來程序中的 CURD 操作不做任何變化;
  3. 增加一個定時器程序,讓該程序按一定的時間周期掃描指定的表,把該時間段內發生變化的數據提取出來;
  4. 逐條寫入到 ES 中。

圖片

優點:

  • 不改變原來代碼,沒有侵入性、沒有硬編碼;
  • 沒有業務強耦合,不改變原來程序的性能;
  • Worker 代碼編寫簡單不需要考慮增刪改查。

缺點:

  • 時效性較差,由于是采用定時器根據固定頻率查詢表來同步數據,盡管將同步周期設置到秒級,也還是會存在一定時間的延遲;
  • 對數據庫有一定的輪詢壓力,一種改進方法是將輪詢放到壓力不大的從庫上。

經典方案:借助 Logstash 實現數據同步,其底層實現原理就是根據配置定期使用 SQL 查詢新增的數據寫入 ES 中,實現數據的增量同步。

2.4 基于 Binlog 實時同步

上面三種方案要么有代碼侵入,要么有硬編碼,要么有延遲,那么有沒有一種方案既能保證數據同步的實時性又沒有代入侵入呢?

當然有,可以利用 MySQL 的 Binlog 來進行同步。

圖片

具體步驟如下:

  • 讀取 MySQL 的 Binlog 日志,獲取指定表的日志信息;
  • 將讀取的信息轉為 MQ;
  • 編寫一個 MQ 消費程序;
  • 不斷消費 MQ,每消費完一條消息,將消息寫入到 ES 中。

優點:

  • 沒有代碼侵入、沒有硬編碼;
  • 原有系統不需要任何變化,沒有感知;
  • 性能高;
  • 業務解耦,不需要關注原來系統的業務邏輯。

缺點:

  • 構建 Binlog 系統復雜;
  • 如果采用 MQ 消費解析的 Binlog 信息,也會像方案二一樣存在 MQ 延時的風險。

3. 數據遷移工具選型

對于上面 4 種數據同步方案,“基于 Binlog 實時同步”方案是目前最常用的,也誕生了很多優秀的數據遷移工具,這里主要對這些遷移工具進行介紹。

這些數據遷移工具,很多都是基于 Binlog 訂閱的方式實現,模擬一個 MySQL Slave 訂閱 Binlog 日志,從而實現 CDC(Change Data Capture),將已提交的更改發送到下游,包括 INSERT、DELETE、UPDATE。

至于如何偽裝?大家需要先了解 MySQL 的主從復制原理,需要學習這塊知識的同學,可以看我之前寫的高并發教程,里面有詳細講解。

3.1 Cannel

基于數據庫增量日志解析,提供增量數據訂閱&消費,目前主要支持 MySQL。

Canal 原理就是偽裝成 MySQL 的從節點,從而訂閱 master 節點的 Binlog 日志,主要流程為:

  1. Canal 服務端向 MySQL 的 master 節點傳輸 dump 協議;
  2. MySQL 的 master 節點接收到 dump 請求后推送 Binlog 日志給 Canal 服務端,解析 Binlog 對象(原始為 byte 流)轉成 Json 格式;
  3. Canal 客戶端通過 TCP 協議或 MQ 形式監聽 Canal 服務端,同步數據到 ES。

圖片

下面是 Cannel 執行的核心流程,其中 Binlog Parser 主要負責 Binlog 的提取、解析和推送,EventSink 負責數據的過濾 、路由和加工,僅作了解即可。

圖片

3.2 阿里云 DTS

數據傳輸服務 DTS(Data Transmission Service)支持 RDBMS、NoSQL、OLAP 等多種數據源之間的數據傳輸。

它提供了數據遷移、實時數據訂閱及數據實時同步等多種數據傳輸方式。相對于第三方數據流工具,DTS 提供豐富多樣、高性能、高安全可靠的傳輸鏈路,同時它提供了諸多便利功能,極大方便了傳輸鏈路的創建及管理。

特點:

  • 多數據源:支持 RDBMS、NoSQL、OLAP 等多種數據源間的數據傳輸;
  • 多傳輸方式:支持多種傳輸方式,包括數據遷移、實時數據訂閱及數據實時同步;
  • 高性能:底層采用了多種性能優化措施,全量數據遷移高峰期時性能可以達到70MB/s,20萬的TPS,使用高規格服務器來保證每條遷移或同步鏈路都能擁有良好的傳輸性能;
  • 高可用:底層為服務集群,如果集群內任何一個節點宕機或發生故障,控制中心都能夠將這個節點上的所有任務快速切換到其他節點上,鏈路穩定性高;
  • 簡單易用:提供可視化管理界面,提供向導式的鏈路創建流程,用戶可以在其控制臺簡單輕松地創建傳輸鏈路;
  • 需要付費。

再看看 DTS 的系統架構。

圖片

  • 高可用:數據傳輸服務內部每個模塊都有主備架構,保證系統高可用。容災系統實時檢測每個節點的健康狀況,一旦發現某個節點異常,會將鏈路快速切換到其他節點。
  • 數據源地址動態適配:對于數據訂閱及同步鏈路,容災系統還會監測數據源的連接地址切換等變更操作,一旦發現數據源發生連接地址變更,它會動態適配數據源新的連接方式,在數據源變更的情況下,保證鏈路的穩定性。

更多內容,請查看阿里官方文檔:https://help.aliyun.com/product/26590.html

3.3 Databus

Databus 是一個低延遲、可靠的、支持事務的、保持一致性的數據變更抓取系統。由 LinkedIn 于 2013 年開源。

Databus 通過挖掘數據庫日志的方式,將數據庫變更實時、可靠的從數據庫拉取出來,業務可以通過定制化 client 實時獲取變更并進行其他業務邏輯。

特點:

  • 多數據源:Databus 支持多種數據來源的變更抓取,包括 Oracle 和 MySQL。
  • 可擴展、高度可用:Databus 能擴展到支持數千消費者和事務數據來源,同時保持高度可用性。
  • 事務按序提交:Databus 能保持來源數據庫中的事務完整性,并按照事務分組和來源的提交順尋交付變更事件。
  • 低延遲、支持多種訂閱機制:數據源變更完成后,Databus 能在毫秒級內將事務提交給消費者。同時,消費者使用D atabus 中的服務器端過濾功能,可以只獲取自己需要的特定數據。
  • 無限回溯:對消費者支持無限回溯能力,例如當消費者需要產生數據的完整拷貝時,它不會對數據庫產生任何額外負擔。當消費者的數據大大落后于來源數據庫時,也可以使用該功能。

再看看 Databus 的系統架構。

Databus 由 Relays、bootstrap 服務和 Client lib 等組成,Bootstrap 服務中包括 Bootstrap Producer 和 Bootstrap Server。

圖片

  • 快速變化的消費者直接從 Relay 中取事件;
  • 如果一個消費者的數據更新大幅落后,它要的數據就不在 Relay 的日志中,而是需要請求 Bootstrap 服務,返回的將會是自消費者上次處理變更之后的所有數據變更快照。

開源地址:https://github.com/linkedin/databus

3.4 其它

Flink

  • 有界數據流和無界數據流上進行有狀態計算分布式處理引擎和框架。
  • 官網地址:https://flink.apache.org

CloudCanal

  • 數據同步遷移系統,商業產品。
  • 官網地址:https://www.clougence.com/?utm_source=wwek

Maxwell

  • 使用簡單,直接將數據變更輸出為json字符串,不需要再編寫客戶端。
  • 官網地址:http://maxwells-daemon.io

DRD

  • 阿里巴巴集團自主研發的分布式數據庫中間件產品,專注于解決單機關系型數據庫擴展性問題,具備輕量(無狀態)、靈活、穩定、高效等特性。
  • 官方地址:https://www.aliyun.com/product/drds

yugong

  • 幫助用戶完成從 Oracle 數據遷移到 MySQL。
  • 訪問地址:https://github.com/alibaba/yugong

4. 后記

通過這篇文章,讓你知道 MySQL 和其它多維數據的同步方案,以及常用的數據遷移工具,幫助你更好選型。

責任編輯:武曉燕 來源: 樓仔
相關推薦

2025-09-16 00:00:25

2023-01-13 14:29:00

ESMySQL數據

2025-05-06 00:00:05

MySQLES協同

2025-02-18 16:27:01

2025-12-17 08:09:43

2025-01-20 15:50:19

2023-08-26 20:08:15

分庫分表Spring

2009-12-14 15:29:48

解決方案SOA安全

2020-04-07 10:05:34

React開發工具

2021-08-25 12:55:33

Linuxcron

2013-07-26 16:38:54

OpenStackHadoop

2024-08-27 08:29:49

2017-02-28 14:28:37

數據跨庫分頁架構

2010-01-12 12:15:25

SOA安全解決方案

2012-02-29 09:44:54

MySQL

2021-10-24 08:37:18

網絡監控網絡架構網絡

2024-06-24 01:00:00

2024-05-22 19:10:18

跨域Web開發

2025-11-27 04:11:00

2024-08-29 09:01:39

點贊
收藏

51CTO技術棧公眾號

牛牛电影国产一区二区| 麻豆91在线观看| 欧美精品一区二区三区在线| 99精产国品一二三产品香蕉| 久久这里只有精品视频网| 欧美亚一区二区| 午夜免费精品视频| 99久久精品情趣| 日本一二三区视频在线| 青青草国产精品97视觉盛宴| 欧美激情导航| 1024成人| 国产伦精品一区二区三毛| 五月开心六月丁香综合色啪 | 亚洲黄色影片| 国产精品一区二区三区观看| 一区二区中文字| 成人网在线视频| 欧美黄色大片在线观看| 国产一区二区香蕉| 欧美在线观看天堂一区二区三区| 999日本视频| 韩国在线视频一区| 麻豆成人在线播放| 日本欧美加勒比视频| 久久精品国产精品亚洲精品色| 国产一区在线精品| 日韩欧美国产综合在线| 国产日韩精品久久久| 白天操夜夜操| 在线一区二区视频| 老司机在线永久免费观看| 欧美剧情片在线观看| av毛片在线播放| 精品亚洲男同gayvideo网站| 中文字幕成在线观看| 久久精品国产综合| 欧美三级电影在线| 7777精品伊久久久大香线蕉语言| 香蕉久久a毛片| 日本黄xxxxxxxxx100| 国产欧美精品在线观看| 蜜桃专区在线| 日韩你懂的电影在线观看| 日本欧美一区| 国产成人精品999| 久久国产精品毛片| 人人妻人人添人人爽欧美一区| 日本一二三不卡| 蝌蚪视频在线播放| 亚洲欧美日韩直播| 欧美男gay| 日本一区二区不卡高清更新| 东方欧美亚洲色图在线| 在线视频网站| 91成人午夜| 亚洲一区二区三区香蕉| 国产最新精品免费| xxxx影院| 亚洲精品videossex少妇| 中文久久电影小说| 精品国产福利| 国产欧美日韩视频一区二区| 日本在线www| 久久久久久中文字幕| 亚洲精品影院在线观看| 国产一二三四区在线观看| 亚洲精品五月天| 人成在线免费网站| 国产免费一区二区三区香蕉精| 麻豆成人久久精品二区三区红| 制服影音先锋| 国产丝袜高跟一区| 午夜激情久久| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美在线999| 51亚洲精品| 日韩欧美亚洲日产国| 亚洲制服丝袜一区| 成人a在线观看高清电影| αv一区二区三区| 中文字幕免费不卡| 国产精品13p| 国产精品视频在线免费观看| 亚洲欧美在线aaa| 韩日精品一区二区| 国产一区二区三区免费不卡| 国产女人aaa级久久久级| 激情av在线播放| 国产欧美日韩免费| 久久久久久9999| hd国产人妖ts另类视频| 成人免费在线视频网站| 亚洲国产精品99久久久久久久久| 波多野在线观看| 国产免费一区| 天天影视涩香欲综合网| 国产劲爆久久| 丰满少妇久久久| 亚洲电影中文字幕| 国产精品久久777777毛茸茸| 日本不卡1区2区3区| 久久99精品视频一区97| 国产精品亚洲一区二区三区在线 | 天堂中文а√在线| 国产精品久久久久久久久久免费| 成人激情视频网站| 美女91在线| 国产有色视频色综合| 午夜在线成人av| 久久365资源| 欧美精品成人网| 久久久av一区| 成人三级伦理片| 日韩成人亚洲| 久久观看最新视频| 日韩欧美国产一区二区三区 | 老司机精品视频导航| 91视频在线观看| 91视频国产一区| 欧美性感美女h网站在线观看免费| 在线日韩一区| www.日本一区| 欧美大片在线看| 26uuu亚洲综合色欧美 | 91亚洲成人| 久久综合色播| 韩国精品久久久999| 欧美激情中文字幕一区二区| 日韩av综合| 先锋影音资源综合在线播放av| 欧美猛交免费看| 国产亚洲婷婷免费| 日韩三级不卡| 亚洲国产精品毛片av不卡在线| 欧美黑人极品猛少妇色xxxxx| 国产日韩欧美高清| 人妖一区二区三区| 久草在线新视觉| 91精品天堂| 精品日韩一区二区三区| 精品亚洲成a人| 九九九精品视频| 久久久精品麻豆| 国产日本欧美视频| 欧美福利一区二区| 韩国av一区二区| 精品中文字幕一区二区三区四区| 五月婷婷开心综合| 亚洲xxxx视频| 日韩精品一区二区三区四区| 精品亚洲免费视频| 成人国产精品久久| 在线影院福利| 欧美在线视频一区二区三区| 国产亚洲欧洲黄色| 亚洲桃色在线一区| 黄页网站一区| 成人勉费视频| 国产激情二区| 欧美久久久久久| 久久综合久久八八| 五月婷婷激情综合网| 日韩影院精彩在线| 成人在线啊v| 最近中文字幕mv免费高清在线| 久久久亚洲综合网站| 中文字幕精品av| 亚洲一区二区综合| 久久久久国产精品午夜一区| 国产黄色精品| 日本一本草久在线中文| 深田咏美在线x99av| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲精品精品亚洲| 亚洲二区免费| 国产综合色激情| 中文字幕欧美一区二区| 中文字幕日韩一区二区三区不卡| 色综合久久88| 欧美日韩日日夜夜| 久久综合给合久久狠狠狠97色69| 欧美残忍xxxx极端| 美女写真久久影院| 日韩在线无毛| 免费成人午夜视频| 国产精品久久波多野结衣| 中文字幕亚洲专区| 一本色道亚洲精品aⅴ| 国产原创一区二区| 日韩欧美电影| 黄色欧美视频| av在线播放网| 精品亚洲一区二区三区四区| 日本不卡在线播放| 国产精品一区二区久久精品| 深夜福利日韩在线看| 欧美日韩三级视频| 亚洲精品精品亚洲| 99久久婷婷国产|