整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

chenoracle發表於2019-12-29

整合手機平臺待辦資料失敗問題跟蹤和處理

Mongodb Oracle SQLServer

 

場景:

公司的整合手機平臺後臺的核心資料庫採用的Mongodb 讀寫分離架構,所有異構系統平臺 ( 財務、ERP 、計劃 ......)( 對應的資料庫ORACLE SQLServer Mysql ......) 流程待辦會實時推送到Mongodb 庫裡,實現所有系統手機端移動審批。

 

問題:

各個系統供應商對接整合手機平臺系統水平參差不齊,經常出現個別系統待辦未推到整合手機平臺或待辦轉已辦失敗的問題;

 

解決方案:

各個系統供應商優化介面週期長,在優化完成之前,需要有手動處理機制,即出現待辦未推送或待辦轉已辦失敗問題,可以及時知道並及時手動處理。

一:待辦出現問題時,第一時間向相關係統管理員傳送預警郵件,及時手動干預,避免問題升級;

二:監控大屏實時展示失敗的待辦資訊;

三:當失敗的待辦數量很龐大,批量修復並定期集中處理歷史失敗的待辦;

 

一:待辦出現問題時,第一時間向相關係統管理員傳送預警郵件,及時手動干預,避免問題升級;

由於待辦出現問題時會在相應系統資料庫裡生成一條日誌記錄,可以通過觸發器實現郵件預警,以SQLServer 資料庫為例:

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer) 整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer) 整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer) 整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

二:監控大屏實時展示失敗的待辦資訊

通過Grafana 監控平臺,可以新增 SQLServer 等資料來源,實時展現失敗待辦資訊;

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer) 整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

三:當失敗的待辦數量很龐大,批量修復或定期處理歷史失敗的待辦

可以通過整合手機平臺資料庫(Mongodb) 的待辦表和各個系統資料庫 (ORACLE SQLServer Mysql) 待辦表做對比:

1 整合手機平臺資料庫 (Mongodb) 的待辦資料多於各個系統資料庫待辦資料,表示待辦轉已辦失敗,需要手動刪除多餘的待辦資訊;

2 整合手機平臺資料庫 (Mongodb) 的待辦資料少於各個系統資料庫待辦資料,表示待辦推送失敗,需要手動重推;

 

那麼如何批量查出所有系統待辦轉已辦失敗的資料

 

(1) 匯出整合手機平臺資料庫(Mongodb) 的待辦資料到 execl

Mongodb 所在伺服器作業系統為 Centos7.5, 可以在自己電腦上安裝一個 Mongodb 客戶端,使用 mongoexport 工具匯出資料;

匯出語句:

D:\MongoDB\Server\3.4\bin>

mongoexport.exe --csv --host 192.100.100.100:27017 /d testdb /c TEST_TdUndo /f "_id,userName,account,createTime,content" /q "{"delete": false}" /o C:\Users\Administrator\Desktop\all cjc _Undo1219a.csv

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

預設情況下開啟CSV 檔案中文是亂碼的:

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

通過如下方式解決亂碼問題:

--- 開啟方式 ( 記事本 )--- 格式 --- 字型 --- 中文 GB2312--- 儲存 ----csv 方式開啟 --- 調整格式 --- 另存為 execl 格式檔案

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

( 2 ) 匯出各個系統資料庫(ORACLE SQLServer Mysql) 的待辦資料到 execl

例如 系統1

select Name, Account , Ini Date, content  from undoerp

where UnDoStatus=' 待辦 '

and  CreateDate>='2019-11- 01  08:00:00.000'

and  CreateDate<='2019-12- 01  23:59:00.000';

 

(3) 對比資料

---1 整合手機平臺資料庫 (Mongodb) 的待辦資料多於各個系統資料庫待辦資料,表示待辦轉已辦失敗,需要手動刪除;

---2 整合手機平臺資料庫 (Mongodb) 的待辦資料少於各個系統資料庫待辦資料,表示待辦推送失敗,需要手動重推;

 

資料對比有兩種方式:

1 :通過execl 函式對比各個系統資料,找出待辦轉已辦失敗的資料和待辦未推的資料;

但是實際情況可能會比較複雜,比如各系統時間格式不一致、推送待辦有延時、標題不一致等問題,通過execl 很難對比資料,可以通過 SQL 語句實現資料對比;

2 :將所有系統對應的Mongodb Oracle SQLServer Mysql 待辦資料匯出到execl 中,在將所有系統execl 資料通過plsql 全部匯入到 oracle 資料庫中,通過 sql 對比找出想要的資料,例如 Mongodb 資料表左連線各系統Oracle SQLServer Mysql 資料表,匹配不上的資料,既是待辦轉已辦失敗的資料。 Oracle SQLServer Mysql 資料表左連線 Mongodb 資料表,匹配不上的資料,既是未推待辦的資料。

(1)oracle 先建立多張表,並通過plsql 匯入各個系統資料;

例如:

create table undo cjc (id varchar2(500),userName varchar2(500),account varchar2(100), updateTime varchar2(100),content nvarchar2(2000));

select * from undo cjc  for update;

create table undo erp (userName varchar2(500),account varchar2(100), updateTime varchar2(100),content nvarchar2(2000),isstart varchar2(100));

select * from undo erp  for update;

……

(2) 通過sql 進行資料對比

select distinct a.id,a.username cjc 使用者名稱,

                a.account cjc 登入名,

                a.updatetime cjc 到達時間,

                a.content enanar 標題 ,

                b.username erp 使用者名稱 ,

                b.account erp 登入名 ,

                b.updatetime erp 到達時間 ,

                b.content erp 標題

  from undo cjc  a

  left JOIN undoerp b

    on a.account = b.account

   and a.content like '%' || b.content || '%'

 where a.content = xxx 系統

 order by erp 登入名 ;

右側沒有匹配上的資料,既是待辦轉已辦失敗的資料;

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

邏輯刪除有問題的待辦:

即通過主鍵ID 唯一定位到有問題的待辦,將 delete 欄位值由 false 改成 true

單條語句如下:

db.T_ChenUndo.update({"_id":ObjectId("5dd3xxxxx"),"account":"cjc","delete":false},{$set:{delete:true}},{multi:true});

根據ID 等資訊,批量生成刪除錯誤待辦的指令碼,即可批量修復待辦轉已辦失敗問題;

整合手機平臺待辦資料失敗問題跟蹤和處理(Mongodb、Oracle、SQLServer)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2671167/,如需轉載,請註明出處,否則將追究法律責任。

相關文章