iT邦幫忙

1

資料庫table莫名被刪除,可能的原因?

  • 分享至 

  • xImage

我們公司這邊是使用MYSQL 8.0 並架在AWS伺服器上
現在有一個神奇的狀況,原本database下的table,突然被刪到只剩schema migration,造成網域網頁失效,爾且開始失效的時間點,也沒人使用過這個資料庫
https://ithelp.ithome.com.tw/upload/images/20240812/20162136ccAvqFgzy0.png
裡面的version欄位還是null

我有嘗試去找binchangelog,但他因為一些設定只會顯示最新的3個binlog。我查了一些資料都沒有能查到過往紀錄的方法,切AWS帳號去看好像也不會記錄這類型的log
因此我想請問一下
1.有沒有方法可以找到更久之前的binlog?
2.造成這種情況的可能原因?

Yaowen iT邦研究生 3 級 ‧ 2024-08-12 14:41:21 檢舉
你是用付費的版本 ??
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

7

通常會刪到只剩下 migration 的情況下。
有很大的可能性還是來自程式。

一些有 migration 的套件或框架的東西(例PHP的LARAVEL)。
是可以下重置清空資料表的指令。或是 rollback 回滾處理。
因為無論怎麼回滾。migration表一定會存在不會消失。

你可以先查看 migration 表內的記錄。是不是已經所有的記錄都不存在了。
那就有很大的可能性是被回滾(ROLLBACK)了

回滾的話。RDS上不會存在 binlog 除非你有打開其記錄(那要額外付費的,而且費用好像不小)
一般來說,RDS會有備份。可以先利用備份還原回來。(基本一天一份,最多7份的樣子)
預設備份因該是打開的。除非你特別去關掉。

看更多先前的回應...收起先前的回應...
brown125 iT邦新手 5 級 ‧ 2024-08-12 15:16:26 檢舉

我2個禮拜前有push一套同步程式,裡面有用到rake db:migrate,頻率是每天啟動一次,如果有問題應該要更早發生這情況,而且rollback會把整個table都不見嗎?

這得看你是 migrate 幾次而定。
如果只一次的話。當然 rollback 一次就全不見了。
多次migrate的話,一直 rollback 也會全不見的。

brown125 iT邦新手 5 級 ‧ 2024-08-12 16:47:33 檢舉

那我想再請問一下,這樣的話我有辦法查在哪個時間段,被用甚麼SQL指令移除這些表,還是就只能通靈了XD

我不太清楚你用的語言跟框架是什麼。
沒辦法給你很有效的答案。

但你可以去查看看 .bash_history 看看。看有無類似 rollback 的指令運行過。
如果是同步或是排程的話。也可以去查一下 logs 看看。

kyoe iT邦新手 5 級 ‧ 2024-08-26 11:51:39 檢舉

我以前有遇過..有人 dockerfile 沒寫好..環境設定錯誤的話會直接把lab db直接 migrate rollback..
laravel

10
Ray
iT邦大神 1 級 ‧ 2024-08-13 08:34:19

企業級多人使用的系統, 從網路設備到 OS 到 AP, 通常都會有歷程和稽核的功能.

但九成九的狀況, 如果你只使用開箱即用的功能 (Out-of-box), 這些歷程和稽核功能都不會被打開, 因為它們需要消耗一定的資源: CPU, Disk, RAM....等等 (binlog 就是一個吃資源的大怪獸), 廠商為了能在開箱評測中取得高分, 出廠預設值通常都不會打開這些拖油瓶...

所以你現在事後才要追查, 當然就是船過水無痕, 甚麼東西都沒有留下.

我個人的習慣, 是在系統安裝完成的 Day 1, 就馬上打開我以後需要的歷程或稽核計錄, 並設定可以合規的保存週期, 例如: 六個月/或五年等, 看你們組織的規定如何? 這些東西都打開運轉之後, 我才會交接給使用者或開發團隊, 開始讓她們使用.

凡走過必留下痕跡, 是稽核的原則, 但你必須自己手動打開, 才會有痕跡留下.

我要發表回答

立即登入回答