大數據時代下的數據同步

大數據時代下的數據同步mysql

1)、基於數據庫日誌(好比mysql的binlog)的同步sql

咱們都知道不少數據庫都支持了主從自動同步,尤爲是mysql,能夠支持多主多從的模式。那麼咱們是否是能夠利用這種思想呢,答案固然是確定的,mysql的主從同步的過程是這樣的。數據庫

  A、master將改變記錄到二進制日誌(binary log)中(這些記錄叫作二進制日誌事件,binary log events,能夠經過show binlog events進行查看);大數據

  B、slave將master的binary log events拷貝到它的中繼日誌(relay log);設計

  C、slave重作中繼日誌中的事件,將改變反映它本身的數據。日誌

阿里巴巴開源的canal就完美的使用這種方式,canal 假裝了一個Slave 去和Master進行同步server

A、 canal模擬mysql slave的交互協議,假裝本身爲mysql slave,向mysql master發送dump協議對象

 

B、 mysql master收到dump請求,開始推送binary log給slave(也就是canal)blog

C、 canal解析binary log對象(原始爲byte流)事件

另外canal 在設計時,特別設計了 client-server 模式,交互協議使用 protobuf 3.0 , client 端可採用不一樣語言實現不一樣的消費邏輯。

另外canal 1.1.1版本以後, 默認支持將canal server接收到的binlog數據直接投遞到MQ

相關文章
相關標籤/搜索