通常會刪到只剩下 migration 的情況下。
有很大的可能性還是來自程式。
一些有 migration 的套件或框架的東西(例PHP的LARAVEL)。
是可以下重置清空資料表的指令。或是 rollback 回滾處理。
因為無論怎麼回滾。migration表一定會存在不會消失。
你可以先查看 migration 表內的記錄。是不是已經所有的記錄都不存在了。
那就有很大的可能性是被回滾(ROLLBACK)了
回滾的話。RDS上不會存在 binlog 除非你有打開其記錄(那要額外付費的,而且費用好像不小)
一般來說,RDS會有備份。可以先利用備份還原回來。(基本一天一份,最多7份的樣子)
預設備份因該是打開的。除非你特別去關掉。
我2個禮拜前有push一套同步程式,裡面有用到rake db:migrate,頻率是每天啟動一次,如果有問題應該要更早發生這情況,而且rollback會把整個table都不見嗎?
這得看你是 migrate 幾次而定。
如果只一次的話。當然 rollback 一次就全不見了。
多次migrate的話,一直 rollback 也會全不見的。
企業級多人使用的系統, 從網路設備到 OS 到 AP, 通常都會有歷程和稽核的功能.
但九成九的狀況, 如果你只使用開箱即用的功能 (Out-of-box), 這些歷程和稽核功能都不會被打開, 因為它們需要消耗一定的資源: CPU, Disk, RAM....等等 (binlog 就是一個吃資源的大怪獸), 廠商為了能在開箱評測中取得高分, 出廠預設值通常都不會打開這些拖油瓶...
所以你現在事後才要追查, 當然就是船過水無痕, 甚麼東西都沒有留下.
我個人的習慣, 是在系統安裝完成的 Day 1, 就馬上打開我以後需要的歷程或稽核計錄, 並設定可以合規的保存週期, 例如: 六個月/或五年等, 看你們組織的規定如何? 這些東西都打開運轉之後, 我才會交接給使用者或開發團隊, 開始讓她們使用.
凡走過必留下痕跡, 是稽核的原則, 但你必須自己手動打開, 才會有痕跡留下.