跳到主要內容

ibdata1 can't be shrunk!

MySQL 資料庫有一種格式 InnoDB ,財金系、攝影社的資料庫都是使用這個格式去部屬的。
這幾天系上主機被教育部通緝,可能被植入木馬到處發送信件,學校的電算中心把 http://www.finance.isu.edu.tw 網址給封住了。

禮拜五早上去看了一下主機,還好裡面的資料都沒有被破壞,一切都正常,下午來了兩個電算中心工讀生來幫忙協助處理,只是我在檢查主機的時候發現,都當初所製作的 RSS NEWS 的資料曾經清除過,但是資料庫裡的 ibdata1 卻沒有減少,覺得很奇怪,上 BBS 問,好像也沒有人回答。用 Google 搜尋才發現 InnoDB 好像有一個機制。

就是 InnoDB 資料庫格式本身設計的時候就有一個可以回覆的機制,所以任何寫入的資料事實上都會保存下來,以備未來如果資料庫崩解時可以回覆用,但是對於一個常常新增/刪除的資料來說,日積月累的資料備存就會變成一個負擔。

上網找了一下資料,目前找的建議都是說將資料先轉成 MyISAM,然後關閉 MySQL、刪除ibdata1(建議是改名當作備份)、然後再開啟 MySQL,轉回 InnoDB,這時 ibdata1 就會是最接近實際資料庫的容量。

以上動作目前都還沒有實際超做過,因為想到要轉換資料庫就有點疑惑,因為光是動作就很沒有效率,日後的維護如果都是這樣處理,網站停止服務的時間就會拉長,況且如果如此麻煩那不如就轉回 MyISAM 資料庫就好了,何必再轉回 InnoDB。

目前都是疑問。

相關資料:
MySQL - ibdata1 doesn’t reduce it’s size
Moving the ibdata1 file

留言

show