功能需求:網(wǎng)頁上傳csv文件通過DATAX導入數(shù)據(jù)庫
環(huán)境:有主備文件同步
導入工具:DataX
問題日志:
驗證尋找bug步驟:
1. datax導入1000w行有臟數(shù)據(jù)
2. 嘗試500w,200w,100w,50w,只有50w的可以
3. 嘗試減去不同類型文件帽蝶,只要達到一定大小就會出現(xiàn)臟數(shù)據(jù)
4. 檢查上傳到服務器的文件奏甫,出現(xiàn)數(shù)據(jù)缺失
5. 檢查python腳本處理替換空值后的文件踪旷,檢查源文件怕午,無誤
6. 嘗試scp傳輸處理完的文件到服務器用datax處理,無誤
7. 推測上傳時出現(xiàn)丟包
8. 嘗試了系統(tǒng)里另一個業(yè)務相同的上傳邏輯的功能琳钉,并沒有丟包問題菠剩,繼續(xù)排查
9. 開發(fā)排查到是由于文件同步過于頻繁(1s/次),在linux中鄙煤,同時對一個文件進行讀寫操作造成文件部分數(shù)據(jù)丟失晾匠。即寫操作時發(fā)現(xiàn)文件被讀操作占用,只能等待梯刚,但此操作可能失敗凉馆,在讀操作完成后該部分數(shù)據(jù)即已丟失。
處理方法:
1. 先將文件上傳非同步文件的文件夾亡资,再傳輸?shù)酵轿募A澜共,增加文件同步時間。
2. 對上傳的文件進行處理锥腻,在未上傳完成時處理為臨時文件嗦董,對于文件同步設置正交條件,臨時文件不進行同步瘦黑,當上傳完成后再變更為正常文件進行同步京革。