現(xiàn)狀
使用DataX從生產(chǎn)DB拉取數(shù)據(jù)時(shí),正常的業(yè)務(wù)場(chǎng)景我們都是通過增量拉取做Merge的方式來限制抽取的數(shù)據(jù)量,但存在以下幾種情況需要做大數(shù)據(jù)量的同步:
- 大表全量初始化
- 生產(chǎn)表存在物理刪除,需要每天做全量同步
- 日志表,每天即使增量,仍然會(huì)有大量數(shù)據(jù)
雖然同步數(shù)據(jù)都是從生產(chǎn)DB的slave節(jié)點(diǎn)取數(shù),但大數(shù)據(jù)量的同步,長(zhǎng)時(shí)間訪問也可能會(huì)導(dǎo)致Slave節(jié)點(diǎn)的性能下降。
方案
- 獲取生產(chǎn)表主鍵列(要求是數(shù)值類型,否則取datachange_lasttime)的最大值/最小值
- 指定分批次數(shù),通過上述的最值的差計(jì)算出單次步長(zhǎng),分批同步至Hive