首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 數據庫修復實戰:MyISAM/InnoDB 表損壞、實例衝突、自增異常、連接數耗盡、InnoDB 崩潰全套方案

     編輯:MySQL 綜合教學

通用重啟命令

mysqladmin -u root -p shutdown
mysqld_safe &

1. MyISAM 表損壞修復

  • 單表:REPAIR TABLE table_name;
  • 全庫:mysqlcheck --all-databases -u root -p -r
  • 自動修復配置 my.cnf:myisam-recover-options=BACKUP,FORCE(5.1+ 語法)。

2. 多實例衝突導致啟動失敗

mysqladmin -u root -p shutdown
killall mysql
killall mysqld
# 再啟動,確保單實例

3. InnoDB 日誌文件大小不可隨意修改

禁改參數:innodb_log_file_size、innodb_log_files_in_group、innodb_data_file_path、innodb_data_home_dir、innodb_log_group_home_dir。修改後必頉按官方流程遷移,否則拒絕啟動。

4. mysql 系統庫丟失修復

mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql

5. MyISAM 自增計數器紊亂

SELECT MAX(id) FROM table_name;  -- 假設返回 1000
ALTER TABLE table_name AUTO_INCREMENT = 1001;

6. 連接數耗盡緊急處理

  • 停庫:mysqladmin shutdown 或 killall mysqld
  • 調大 max_connections=500、wait_timeout=60,重啟。
  • 臨時開啟備用端口:my.cnf 加 port=3307,啟動後專線處理,完事改回。

7. InnoDB 表崩潰導致拒絕啟動(核心難點)

標準恢復流程:

  1. my.cnf 添加 innodb_force_recovery = 1(1-6 遞增,4 以上只讀)。
  2. 啟動 MySQL,導出全量數據:mysqldump --all-databases --single-transaction --routines --triggers > /backup/all.sql
  3. 停庫,刪除數據目錄所有文件(ibdata1、ib_logfile*、.ibd、.frm 等)。
  4. 執行 mysql_install_db 初始化系統表。
  5. 移除 innodb_force_recovery,重啟 MySQL。
  6. 導入備份:mysql < /backup/all.sql
  7. mysqladmin flush-privileges

建議:生產環境務必部署 MHA/Orchestrator/Gtid 主從,InnoDB 崩潰時秒級切換備庫,避免長時間停機。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved