功能需求:網頁上傳csv文件通過DATAX導入數據庫
環境:有主備文件同步
導入工具:DataX
問題日志:
驗證尋找bug步驟:
1. datax導入1000w行有臟數據
2. 嘗試500w,200w,100w,50w,只有50w的可以
3. 嘗試減去不同類型文件,只要達到一定大小就會出現臟數據
4. 檢查上傳到服務器的文件,出現數據缺失
5. 檢查python腳本處理替換空值后的文件,檢查源文件,無誤
6. 嘗試scp傳輸處理完的文件到服務器用datax處理,無誤
7. 推測上傳時出現丟包
8. 嘗試了系統里另一個業務相同的上傳邏輯的功能,并沒有丟包問題,繼續排查
9. 開發排查到是由于文件同步過于頻繁(1s/次),在linux中,同時對一個文件進行讀寫操作造成文件部分數據丟失。即寫操作時發現文件被讀操作占用,只能等待,但此操作可能失敗,在讀操作完成后該部分數據即已丟失。
處理方法:
1. 先將文件上傳非同步文件的文件夾,再傳輸到同步文件夾,增加文件同步時間。
2. 對上傳的文件進行處理,在未上傳完成時處理為臨時文件,對于文件同步設置正交條件,臨時文件不進行同步,當上傳完成后再變更為正常文件進行同步。