1. 使用mysqldump備份文件恢復(邏輯恢復)
適用于有定期通過mysqldump創建的SQL備份文件的場景,是最常用的邏輯恢復方法。操作時,使用mysql命令將備份文件導入目標數據庫,語法為:mysql -u 用戶名 -p 數據庫名 < 備份文件.sql(如mysql -u root -p mydb < mydb_backup.sql)?;謴颓靶璐_保備份文件完整,避免覆蓋當前正常數據。
2. 從二進制日志(Binlog)恢復(邏輯恢復)
若MySQL開啟了Binlog(默認開啟),可通過mysqlbinlog工具解析日志中的增量操作,實現時間點恢復或指定事件恢復。步驟:① 確認Binlog文件位置(SHOW VARIABLES LIKE 'log_bin';);② 解析所需時間段的Binlog(如mysqlbinlog --start-datetime="2025-10-01 10:00:00" --stop-datetime="2025-10-01 11:00:00" /var/lib/mysql/mysql-bin.000001);③ 將解析結果導入數據庫(| mysql -u 用戶名 -p 數據庫名)。
3. 物理恢復(數據文件復制)
適用于有完整物理備份(如數據庫目錄/var/lib/mysql的備份)的場景,直接將備份的數據庫文件復制到原目錄。操作步驟:① 停止MySQL服務(sudo systemctl stop mysqld);② 復制備份文件到數據庫目錄(cp -R /path/to/backup/dbname /var/lib/mysql/);③ 修改文件所有權(chown -R mysql:mysql /var/lib/mysql/dbname);④ 啟動MySQL服務(sudo systemctl start mysqld)。需確?;謴铜h境的MySQL版本、配置與備份時一致。
4. 使用第三方數據恢復工具
當常規方法無法恢復(如無備份、Binlog未開啟)時,可使用專業工具。常見工具包括:① Percona Toolkit(提供pt-table-sync等工具修復數據不一致);② Undrop-for-InnoDB(專門恢復InnoDB引擎誤刪除數據,需安裝并指定數據文件路徑);③ Mydumper(高性能備份/恢復工具,支持多線程)。工具使用前需閱讀文檔,避免誤操作。
5. MyISAM/InnoDB引擎內置工具恢復
myisamchk工具修復損壞的表。操作前需停止MySQL服務,執行myisamchk -r /var/lib/mysql/dbname/table_name(-r表示修復),修復成功后重啟服務。mysqlcheck工具自動檢查和修復表,語法為mysqlcheck -u 用戶名 -p --auto-repair --all-databases(修復所有數據庫)或mysqlcheck -u 用戶名 -p dbname tablename --auto-repair(修復指定表)。6. 從主從復制恢復
若數據庫配置了主從復制,可從從服務器恢復數據。步驟:① 停止從服務器的復制進程(STOP SLAVE;);② 將主服務器或健康從服務器的數據文件復制到受損服務器的/var/lib/mysql目錄;③ 修改文件所有權(chown -R mysql:mysql /var/lib/mysql);④ 啟動從服務器的復制進程(START SLAVE;)。此方法需確保主從服務器數據同步正常。