整理自 Mike Peters 技術文章,涵蓋 MySQL 常見故障的七大修復場景,適用於重啟無效、表損壞、實例衝突、配置錯誤、系統表遺失、自增異常、連接數耗盡、InnoDB 嚴重損壞等情況。
/usr/local/mysql/bin/mysqladmin -uUSER -pPASS shutdown /usr/local/mysql/bin/mysqld_safe &
REPAIR TABLE tbl_name;mysqlcheck --all-databases -uUSER -pPASS -rmy.cnf 添加 myisam-recover=backup,forcemysqladmin -uUSER -pPASS shutdown killall mysql; killall mysqld # 再啟動,確保單實例
以下參數一經初始化嚴禁修改,否則實例無法啟動:
datadir, innodb_data_home_dir, innodb_data_file_path, innodb_log_group_home_dir, innodb_log_files_in_group, innodb_log_file_size
/usr/local/bin/mysql_install_db # 重建系統表
SELECT MAX(id) FROM tbl_name; ALTER TABLE tbl_name AUTO_INCREMENT = max_id + 1;
mysqladmin shutdown 或 killall mysqldmax_connections(專用 DB 建議 200+)、wait_timeout=100port 繞過應用連接,修復後改回症狀:錯誤日誌顯示 InnoDB recovery 失敗,實例拒絕啟動。
標準修復六步法:
my.cnf 添加 innodb_force_recovery = 4 (1-6 遞增嘗試,4 通常足夠)mysqldump --force --compress --triggers --routines --create-options -uUSER -pPASS --all-databases > /backup/alldb.sqlmysql_install_db 重建系統表innodb_force_recovery,正常啟動mysql -uUSER -pPASS --compress < /backup/alldb.sql,最後 mysqladmin flush-privileges生產環境強烈建議雙主 (Master-Master) 架構,單點故障可秒級切換,避免走到第 7 步。