Mysql資料實時同步實踐
關於小米內部使用的資料庫你知道多少?
為了解決sql查詢慢,查不了的業務痛點,我們探索出一套完整的實時同步,即席查詢的解決方案,本文主要從實時同步的角度介紹相關工作。
雖然Sqoop支援增量同步但還屬於粗粒度的離線同步,無法滿足實時性的需求 每次同步Sqoop以sql的方式向Mysql發出資料請求也在一定程度上對Mysql帶來一定的壓力 同時Hive對資料更新的支援也相對較弱
master(主庫)在每次準備提交事務完成資料更新前,將改變記錄到二進位制日誌(binary log)中 slave(從庫)發起連線,連線到master,請求獲取指定位置的binlog檔案 master建立dump執行緒,推送binlog的slave slave啟動一個I/O執行緒來讀取主庫上binary log中的事件,並記錄到slave自己的中繼日誌(relay log)中 slave還會起動一個SQL執行緒,該執行緒從relay log中讀取事件並在備庫執行,完成資料同步 slave記錄自己的binlog
BinlogSyncJob:每一個mysql庫都會對應這樣一個Job,將binlog日誌完整地寫入到服務建立的Talos topic中 MysqlSyncJob:同步歷史資料,消費binlog資料,過濾特定庫表資料實時同步至使用者配置的topic中
Worker節點透過在Zookeeper上註冊告知自己可以被排程 透過在Zookeeper上搶佔EPHEMERAL臨時節點實現Master的HA 使用者在融合雲(Web)上註冊BinlogSource同步任務 Master週期性從配置服務讀取Binlog同步作業配置 Master更新Zookeeper中的排程資訊 Worker節點 根據Zookeeper上的排程資訊啟動新分配任務,停止配置失效任務;作業啟動後完成資料實時同步並週期性將同步進度記錄在kudu中 服務上報監控資訊到Falcon平臺,作業異常退出傳送報警郵件
順序性
一致性
服務會記錄作業同步的offset,重啟後從上次commit的offset繼續消費 Binlog資料的順序性保證了即便資料被重複消費(未commit的資料),也能對同一條記錄的操作以相同的順序執行 下游儲存系統kudu,Es ,Redis基於主鍵的操作能夠保證binlog重複回放後資料的最終一致性
實時更新快取
非同步處理,系統解耦
即席查詢的BI系統
資料不一致問題,業務使用唯一索引
Full Dump同步歷史資料時,客戶端超時
總結
MySQL以Binlog日誌的方式記錄資料變化,基於流式資料的Change Data Caputre (CDC)機制實現了LCSBinlog服務,
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559359/viewspace-2664205/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 到Oracle 實時資料同步HYXSMySqlOracle
- mysql和redis實時同步資料怎麼實現MySqlRedis
- 基於 MySQL Binlog 的 Elasticsearch 資料同步實踐MySqlElasticsearch
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- 阿里 Canal 實時同步 MySQL 增量資料至 ClickHouse 資料庫阿里MySql資料庫
- 透過 Canal 將 MySQL 資料實時同步到 EasysearchMySql
- canal+mysql+kafka實時資料同步安裝、配置MySqlKafka
- 什麼是資料實時同步,為什麼資料實時同步很重要
- mysql通過kafka實現資料實時同步(三)——es叢集配置MySqlKafka
- mysql到sqlserver資料庫實時同步工具syncnavigator註冊使用MySqlServer資料庫
- flnkcdc+datastream實現mysql到mysql資料同步ASTMySql
- MySQL匯入百萬資料實踐MySql
- rsync+inotify資料的實時同步
- 認識資料實時同步神器—Canal
- kettle 實時同步資料(插入/更新/刪除資料)
- flink-cdc實時同步(oracle to mysql)OracleMySql
- logstash mysql 準實時同步到 elasticsearchMySqlElasticsearch
- Mysql 到 Hbase 資料如何實時同步,強大的 Streamsets 告訴你MySql
- 時間同步協議NTP - 原理&實踐協議
- 實現MySQL資料庫的實時備份MySql資料庫
- 如何高效實現 MySQL 與 elasticsearch 的資料同步MySqlElasticsearch
- 部署otter實現mysql主備資料同步(上)MySql
- 部署otter實現mysql主備資料同步(下)MySql
- 資料庫系列——基於Canal實現MySQL增量資料同步資料庫MySql
- RestCloud ETL實踐之無標識位實現增量資料同步RESTCloud
- 京東實時資料產品應用實踐
- 資料庫實踐丨MySQL多表join分析資料庫MySql
- Flink CDC 系列 - 同步 MySQL 分庫分表,構建 Iceberg 實時資料湖MySql
- 技術乾貨|如何利用 ChunJun 實現資料實時同步?
- Linux 實現本、異地遠端資料實時同步功能Linux
- 利用python實現mysql資料庫向sqlserver的同步PythonMySql資料庫Server
- 《Greenplum構建實時資料倉儲實踐》簡介
- 實時工業大資料產品實踐——上汽集團資料湖大資料
- Restcloud ETl資料通過時間戳實現增量資料同步RESTCloud時間戳
- 美團DB資料同步到資料倉儲的架構與實踐架構
- Uber永久定位系統實時資料分析過程實踐!
- B 站構建實時資料湖的探索和實踐
- 基於雲原生的大資料實時分析方案實踐大資料