MySQL 4.0/4.1 時代,標準版預設不含 InnoDB,需下載 MySQL Max 版本(含 InnoDB、BDB、同步複寫等進階功能)。本文記錄 Windows 2000/XP/2003 下安裝 Max 版、替換服務、配置 InnoDB 表空間的完整流程,供維護舊系統參考。現代版本 (5.6+) InnoDB 為預設內建引擎,無需額外操作。
mysql-max-4.1.xx-win32.zip (mysql.com)。C:\mysql)。WinMySQLadmin 完成初始化,隨後退出。cd C:\mysql\bin
mysqld-nt --remove
mysqld-max-nt --install
mkdir C:\ibdata
mkdir C:\iblogs
[mysqld]
basedir=C:/mysql
datadir=C:/mysql/data
# InnoDB 表空間:兩個 2GB 檔案 (視磁碟調整)
innodb_data_file_path = ibdata1:2000M;ibdata2:2000M
innodb_data_home_dir = C:/ibdata
# Redo Log 群組
innodb_log_group_home_dir = C:/iblogs
innodb_log_files_in_group = 3
innodb_log_file_size = 30M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_log_arch_dir = C:/iblogs
innodb_log_archive = 0
# 記憶體緩衝區
innodb_buffer_pool_size = 80M
innodb_additional_mem_pool_size = 10M
# 並發與鎖
innodb_file_io_threads = 4
innodb_lock_wait_timeout = 50
# 其他
default-character-set = utf8
default-storage-engine = InnoDB
sql_mode = STRICT_TRANS_TABLES
innodb_data_file_path:定義表空間檔案大小與數量,總和建議 ≥ 資料量 1.5 倍,不足自動擴展最後一個檔案。innodb_buffer_pool_size:InnoDB 性命線,生產環境設為物理記憶體 60-80%。innodb_flush_log_at_trx_commit=1:完整 ACID,每提交 fsync;設 2 可大幅提升寫入效能但掉電丟 1 秒資料。innodb_log_file_size:大日誌減少 checkpoint 壓力,但恢複時間變長。net start mysql (服務名為 MySQL)。SHOW VARIABLES LIKE 'have_%';
have_innodb YES
have_bdb YES
have_isam YES
have_query_cache YES
| 現象 | 原因 | 對策 |
|---|---|---|
| 服務啟動失敗 | my.ini 路徑錯誤、參數語法錯、目錄權限 | 檢查事件檢視器、錯誤日誌 .err 檔案 |
| InnoDB 表建立失敗 | 表空間磁碟空間不足、ibdata 檔案損壞 | 擴充磁碟、刪除 ibdata 重新初始化 |
| 事務不生效 | 表引擎非 InnoDB | 建表指定 ENGINE=InnoDB 或設 default-storage-engine |
| 外鍵報錯 | MySQL 4.0 外鍵支援不完整 | 升級 4.1+ 或應用層維護 |
MySQL 4.1 已於 2009 年停止維護,強烈建議升級至 8.0/5.7 LTS:
mysql_upgrade、pt-upgrade、MySQL Shell 遷移精靈。本文記錄的是「考古級」部署流程,見證了 InnoDB 從「額外安裝」到「核心內建」的演進。維護舊系統時請謹慎操作、備份優先;新專案請直接擁抱現代版本,享受開箱即用的事務引擎與豐富生態。