首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.5 / 5.6 徹底禁用 InnoDB 引擎的完整配置指南

     編輯:MySQL 資料庫相關知識

近期發現備份的 MySQL 數據目錄異常膨脹,多出 ibdata1、ib_logfile0、ib_logfile1 三個文件。排查後發現是從 5.0 遷移到 5.5 時,因 5.5 無法直接關閉 InnoDB 啟動,只能暫時開啟,導致預設產生這些系統表空間與日誌文件。嘗試限制文件大小卻發現最小 10 MB,仍嫌過大,遂決定徹底禁用 InnoDB。

MySQL 5.5 禁用 InnoDB 配置

在 my.cnf 的 [mysqld] 區塊添加:

default-storage-engine=MYISAM
innodb=OFF

重啟 MySQL 後,刪除上述三個文件即可。

MySQL 5.6 禁用 InnoDB:更繁瑣但必要

5.6 版本預設使用 InnoDB,且不再允許簡單關閉。除上述兩行外,還必須額外指定臨時表引擎並禁用所有 InnoDB 相關的 INFORMATION_SCHEMA 表,否則服務無法啟動或頻繁崩潰。

default-storage-engine=MYISAM
default-tmp-storage-engine=MYISAM
innodb=OFF
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0

loose- 前綴表示「若選項不存在則忽略」,確保兼容性。配置來源:Oracle 官方文檔。

遷移後的必要步驟

  1. 執行 mysql_upgrade 升級系統表(遷移版本時必做)。
  2. 修改 my.cnf 加入上述配置。
  3. 重啟 MySQL 服務。
  4. 確認服務正常後,手動刪除 ibdata1、ib_logfile* 文件。

版本對比小結

  • 5.6 比 5.5 佔用更多物理內存,虛擬內存相近。
  • 官方宣稱性能提升約 30%(未實測)。
  • 若業務不需事務、行級鎖等高級特性,禁用 InnoDB 能顯著降低資源佔用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved