有last_modified_time就萬無一失了嗎

來源:互聯網
上載者:User

線上MySQl增量ETL由於源表沒有last_modified_timetimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP),加起來比較有難度online ddl雖然有工具,不過這些表是比較核心的表並且超過300GB);因此在從庫啟用了觸發器,來記錄PK以及對應的modified_time;這樣做有幾個缺陷:

1.如果主庫的DML產生了row format binlog,那麼是不會觸發從庫的trigger的

2.這些表的TPS接近double了

另外一種方式就是在從庫添加last_modified_time column,不過即使有了這麼一列抽取的資料就萬無一失了嗎?看如下序列:

事務T1:--23:59:59開啟,同時插入一行記錄,last_modified_time=23:59:59

ETL 00:00:00開始抽取,記做事務T2,此時T1未提交對T2不可見

事務T1於00:00:01提交;


那麼該條記錄對於ETL來說就丟失了;有什麼好的解決方案呢?我現在能想到的就是Change Data Capature了類似Oracle裡的CDC,MySQL可以解析binlog來做);歡迎討論


本文出自 “MIKE老畢的部落格” 部落格,請務必保留此出處http://boylook.blog.51cto.com/7934327/1298802

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.