1.背景
GoldenGate重要的日誌文件有2個:ggserr.log和discard文件。
- ggserr.log記錄重要的日誌,如進程啓停、進程失敗abend及響應ggsci命令的響應輸出。
- discard文件,是丟棄文件,在備機端,同步環境沒有問題的前提下,在執行具體某個sql時失敗,會把執行失敗的sql放入到discard文件。
由此看出,discard文件很重要,是運維發現哪些表主從不一致的重要線索。
2.當前環境的問題
當前設置如下:
discardfile ./dirrpt/rept01.dsc , purge,megabytes 100
會出現2個問題:
- discard文件太小:只有200M,持續運行N天后,會滿。
- discard文件會被覆蓋:尤其重啓replicat進程後,文件會被清空。
3.解決方法
修改控制參數,相關參數包括:
3.1.追加還是清空
指定discard文件名時一起設定爲append追加。並調整最大大小。
Syntax DISCARDFILE <file name>
[, APPEND | PURGE]
[, MAXBYTES <n> | MEGABYTES <n>]
同時,如果文件大小超限後,進程就會退出,顧大小盡量設大。
To set an upper limit for the size of the file, use either the MAXBYTESor MEGABYTESoption. If the specified size is exceeded, the process will abend.
3.2. 定期歸檔
使用參數:discardrollover
本參數指定個時點,當到達時點時,自動歸檔discard文件。歸檔文件的格式是,<group name><n>.<extension>。
3.3.修改後
discardfile ./dirrpt/rept01.dsc , append,megabytes 2048
discardrollover at 05:30
經過觀察,
- 確實在每天的05:30,自動創建個新的discard文件。
- 最新的歸檔總是從0號開始。假設現在已有2個歸檔文件,rept010.dsc\rept011.dsc;新歸檔後,已有的更名爲rept010.dsc->rept011.dsc,rept011.dsc->rept012.dsc,新的歸檔文件名爲rept010.dec。
- 發現一個問題,雖然新生成了文件,但文件整個生命週期內,沒有任何數據。
對比之前的內容,至少也該有類似trail文件切換的系想你;還有,中間有過4天數據不同步,肯定有無法更新、或刪除的記錄纔對。具體看handlecollisions參數介紹