壓縮MySQL數據文件的妙招

 MySQL數據文件如果過大,能否進行壓縮呢?答案是肯定的。下面就教您一個壓縮MySQL數據文件的方法,希望對您能有所幫助。
  MySQL使用一段時間後,MySQL數據文件ibdata會增長得很大(主要是針對innodb的存儲方式,有大量插入刪除操作的數據庫),有沒有很好的辦法可以收縮(shrink)MySQL數據文件呢?在網上查瞭一下,沒有太好的辦法,隻提到刪除重建MySQL數據文件的方式,實際就是備份-刪除-恢復的方法,我試驗瞭一下,基本可行,但還是有一些註意事項:
  1. 用mysqldump等工具導出數據我的數據庫使用latin1字符集,必須強制在參數裡指定(否則默認按UTF8導出中文會變亂碼):mysqldump ——add-drop-table ——user=root ——flush-logs ——default-character-set=latin1 ——password=mysql mydbname > c:\bak_all.sql註意SQLyog等工具也提供導出類似導出功能,但它們的導出不一定好用,有可能導出來後有亂碼或不能執行。
  2. 停止 mysqld (也就是mysql的服務)
  3. 刪除ibdata*, ib_logfile* 文件,最好連你的用戶數據庫目錄一起刪除,不然導回時可能報錯
  4. 重新啟動 mysqld(這時mysqld就會自動創建 idbdata*, ib_logfile* 文件)
  如果前面已刪除瞭數據庫目錄,這是需要重建一個你的用戶數據庫(用SQLyog等工具建新數據庫非常簡單)
  5. 將導出來的數據導回去,體積才會減小。
  可以使用命令:mysql ——user=root ——password=mysql mydbname < c:\bak_all.sql
  當然,也可以在SQLyog的查詢工具裡執行sql文件來恢復。
  另外,提供一個小技巧,如果你的帳號密碼帶有空格,在命令行怎麼輸入呢?
  很簡單,在你的帳號密碼兩邊帶上英文雙引號 " (註意不是單引號)。比如:mysqldump ——add-drop-table ——user=root ——flush-logs ——default-character-set=latin1 ——password=" " mydbname > c:\bak_all.sql

發佈留言