跨域同步數據2.0方案思路分享

跨域同步數據2.0方案思路分享

背景: 不同網段(比如源數據庫在外網,目標數據庫在內網),不能直接通訊,但需要做到數據同步;

  1. 跨域增量同步數據方案2.0
    1. 增量數據同步解決方案:(不同網段(內網和外網不能直接通訊))
    2. 通過獲取增量數據,並生成目標庫寫入表的insert語句;
    3. 目標庫需提前生成目標庫寫入表表信息;
    4. 目標庫通過sftp下載商城的insert語句,在目標庫批量執行寫入;
    5. 注意:跨域增量同步數據方案2.0,採取的是通過子作業(子job)來控制的循環生成sql文件,而不是通過js來判斷循環。通過js來控制循環沒有通過子作業來控制循環效率高;

注意點:

    
    1. 如何獲取增量的數據,我是採取的通過源數據裏視圖的寫入方式,視圖通過條件來判斷只取增量的數據;
        注意:1. 如何確保獲取的增量數據,定時獲取增量的數據?
        CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `demo1view` AS 
            select `phhdemo1`.`orderId` AS `orderId`,`phhdemo1`.`createOpeTime` AS `createOpeTime`,`phhdemo1`.`flag` AS `flag` from `phhdemo1` 
            where ((`phhdemo1`.`flag` = 1) 
             and (`phhdemo1`.`createOpeTime` > '2019-10-05 19:21:18'));

        select date_sub(SYSDATE(),interval 1 day);
        可以根據實際情況,讓增量視圖取前一天滿足條件的數據;
        
    2. 期初數據做一次全量更新,可以採取直接導出導入的方式,先在目標庫裏生成一遍;
    3. 如果做到生成目標庫相應表的insert語句?我是採取源數據庫和目標數據庫需存在相同表結構,表名稱的表,來確保生成的insert語句,可以在目標數據庫服務器下載insert語句後,可以直接執行;
       注意:1. 目標庫需要提前做什麼?只需提前在目標庫裏新增需要寫入的表,需確保和源庫裏生成的insert文件的表結構保持一致的表

後續demo會考慮分享出來,大家感興趣的,可以持續關注我。

demo小樣效果圖:

截圖1:

截圖2:

截圖3:

 

截圖4:

此方案解決了跨域同步數據的問題! 

後續會分享關於kettle集羣相關解決方案!和感興趣的同學共勉!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章