2012-09-22 52 views
1

我可以安全地切換到Innodb文件每表並刪除ibdata1嗎?這是我的攻擊計劃。我最近備份了所有數據。我可以安全地切換到Innodb文件每表並刪除ibdata1嗎?

  1. 我添加innodb_file_per_table = 1到在/etc/my.cnf,並重新啓動
  2. 我跑ALTER表名ENGINE = InnoDB的;每個InnoDB表

接下來,我想:

  1. 停止MySQL的
  2. 刪除ibdata1中,ib_logfile0,ib_logfile1
  3. 啓動MySQL

將這項工作?

回答

2

根據the documentation

啓用時,InnoDB存儲每個新創建的 表自己的tbl_name.ibd文件中相應的數據庫 目錄多個表空間。與MyISAM存儲引擎不同,其獨立的 tbl_name.MYD和tbl_name.MYI文件用於索引和數據,InnoDB 將數據和索引一起存儲在一個.ibd文件中。 tbl_name.frm文件仍照常創建。

如果您從my.cnf中刪除innodb_file_per_table行並重新啓動服務器,則InnoDB會在共享表空間 文件中創建任何新表。

無論每個文件表的設置如何,您都可以在系統表空間和表 中的表空間中訪問這兩個表。

您的問題的答案:不,您不能刪除ibdata1,ib_logfile0或ib_logfile1,因爲只啓用該選項不會移動您的現有數據。

+0

好主意,我會先嚐試。 – Poe

+0

沒有工作,它說表格不存在。 – Poe

+0

@Poe我更新了我的答案。 – Jocelyn

相關問題