數據異構指的是把數據按照需要異地構建存儲。
其中一個應用場景是分庫分表的時候。假如已經按照某個維度做了分庫分表,新來一個需求,需要按照另外一個維度做分庫分表,這個時候就需要數據異構了。
數據異構主要有兩種方式,binlog方式和mq方式。binlog方式是指訂閱mysql的binlog日志,解析這些日志,重構數據然后寫到新的數據庫或者其他存儲,如kafka、es中。常用的binlog訂閱組件是canal,由阿里開源。mq方式是指在數據寫入數據庫時,同時雙寫至mq中。
mysql主從復制原理:
1、mysql master將改變記錄到二進制文件中(binary log,俗稱binlog)
2、mysql slave從master拉取binlog至自己的中繼日志中(relay log)
3、slave重做中繼日志中的事件,將改變落實到自己的數據上
canal原理:
canal把自己偽裝成一個mysql slave。