一種Mysql和Mongodb資料同步到Elasticsearch的實現辦法和系統
本文分享自天翼雲開發者社群《
一種Mysql和Mongodb資料同步到Elasticsearch的實現辦法和系統
》,作者:
l****n
核心流程如下:
核心邏輯說明:
MySQL Binlog解析 :
首先,從MySQL的二進位制日誌(Binlog)中解析出表名。這一步驟非常關鍵,因為我們只關注特定表的資料變更。
進一步,我們檢查Binlog中的操作型別,如INSERT、UPDATE和DELETE,以確定是否是表資料的變動操作。這是因為我們只需要捕獲資料的變更,而不關心查詢操作。
如果操作是INSERT或DELETE,我們只需要關注受影響的資料行。對於UPDATE操作,我們需要記錄新舊值的變化。
記憶體中資料組裝 :
從解析過的Binlog資料中,我們構建一個記憶體資料結構,通常是一個資料物件,其中包括表名、欄位名、新舊值等資訊。這允許我們在記憶體中輕鬆管理和處理資料。
資料序列化 :
接下來,我們將記憶體中的資料物件序列化為特定的格式,通常為JSON或XML。這是為了將資料轉化為一種可傳輸的結構,其中包含了表名、欄位名和相應的新舊值。序列化的過程使資料適合透過網路傳輸。
資料傳輸到訊息佇列 :
完成序列化後,資料透過TCP協議傳送到訊息佇列,通常是Apache Kafka。訊息佇列用於永續性儲存和傳遞資料,以確保資料不會丟失。
資料在訊息佇列中等待被消費者處理,這可以是其他系統、應用程式或服務,根據需要對資料進行進一步的分析或儲存。
MongoDB Oplog解析 :
MongoDB的日誌解析過程類似於MySQL,但我們使用的是MongoDB的操作日誌(Oplog)來捕獲資料變更。
同樣,我們從Oplog中解析出表名,確定操作型別(INSERT、UPDATE、DELETE),並提取新舊值。
資料消費和儲存 :
消費者透過TCP協議從Kafka佇列中拉取資料。消費者可以是各種型別的應用程式或服務,例如資料倉儲、實時監控系統等。
資料可以透過HTTP協議將其寫入Elasticsearch,以進行搜尋、分析和視覺化。Elasticsearch是一個強大的搜尋引擎和分析工具,適用於處理大量資料。
以上流程描述瞭如何從MySQL和MongoDB中的日誌解析資料,將其序列化為可傳輸的格式,並透過訊息佇列傳遞到其他系統或儲存庫中,以便進行後續處理、分析和查詢。這種資料管道允許實時捕獲和利用資料庫中的變更,以滿足各種用例和需求。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2993119/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ElasticSearch(五) Elasticsearch-jdbc實現MySQL同步到ElasticSearchElasticsearchJDBCMySql
- 如何高效實現 MySQL 與 elasticsearch 的資料同步MySqlElasticsearch
- mysql和redis實時同步資料怎麼實現MySqlRedis
- flnkcdc+datastream實現mysql到mysql資料同步ASTMySql
- MongoDB 資料遷移和同步MongoDB
- 使用canal增量同步mysql資料庫資訊到ElasticSearchMySql資料庫Elasticsearch
- mongodb清理collection中大量資料的2種辦法MongoDB
- logstash mysql 準實時同步到 elasticsearchMySqlElasticsearch
- oracle佇列(AQ)---實現orale到mysql的資料同步Oracle佇列MySql
- 基於 MySQL Binlog 的 Elasticsearch 資料同步實踐MySqlElasticsearch
- Mongodb資料同步和主從切換MongoDB
- 基於rust實現的事件系統,支援同步和非同步Rust事件非同步
- 資料管理系統設計和實現
- ElasticSearch5+logstash的logstash-input-jdbc實現mysql資料同步ElasticsearchH5JDBCMySql
- Mysql和Redis資料同步策略MySqlRedis
- LINUX下使用elasticsearch-jdbc工具實現MySQL同步到ElasticSearch 以及linux 64位centos系統安裝jdk1.8LinuxElasticsearchJDBCMySqlCentOSJDK
- 直播帶貨系統原始碼,實現MYSQL資料庫的主從同步原始碼MySql資料庫主從同步
- 如何實現 Logstash/Elasticsearch 與MySQL自動同步 更新操作 和 刪除操作 ?ElasticsearchMySql
- 實現web資料同步的四種方式Web
- 資料庫同步 Elasticsearch 後資料不一致,怎麼辦?資料庫Elasticsearch
- MySQL 與 Elasticsearch 資料不對稱問題解決辦法MySqlElasticsearch
- MySQL 到Oracle 實時資料同步HYXSMySqlOracle
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- MYSQL資料插入和更新的語法MySql
- SQL資料同步到ElasticSearch(三)- 使用Logstash+LastModifyTime同步資料SQLElasticsearch
- Elasticsearch 查詢in 和 not in 的實現方式Elasticsearch
- GoldenGate實現oracle和sqlserver雙向資料同步GoOracleSQLServer
- 有多少漏洞都會重來:從ElasticSearch到MongoDB和RedisElasticsearchMongoDBRedis
- Spark SQL三種join和資料傾斜的產生和解決辦法SparkSQL
- Node中非同步和同步的實現非同步
- Linux系統安裝NoSQL(MongoDB和Redis)步驟及問題解決辦法LinuxSQLMongoDBRedis
- Elasticsearch、MongoDB和Hadoop比較。ElasticsearchMongoDBHadoop
- CRM系統的四種資料分析法
- 第五節:基於Canal實現MySQL到Redis快取資料同步MySqlRedis快取
- MongoDB的內部架構,實現事務的原理以及資料同步和分片機制各是什麼?MongoDB架構
- 如何基於日誌,同步實現資料的一致性和實時抽取?
- MySQL怎麼實現主從同步和Django實現MySQL讀寫分離MySql主從同步Django
- 透過 Canal 將 MySQL 資料實時同步到 EasysearchMySql