1. 使用mariabackup工具恢復(物理備份恢復,官方推薦)
mariabackup是MariaDB官方開源的物理備份工具,適用于全量及增量備份恢復,能最大程度保證數據一致性。
/var/lib/mysql)以防恢復失敗。mariabackup --prepare --target-dir=/path/to/full_backup,將全量備份數據轉換為可導入狀態;sudo systemctl stop mariadb;sudo rsync -aP /path/to/full_backup/ /var/lib/mysql/;sudo chown -R mysql:mysql /var/lib/mysql;sudo systemctl start mariadb。/path/to/incr_backup),先執行mariabackup --prepare --target-dir=/path/to/incr_backup --incremental-dir=/path/to/incr_backup合并增量數據到全量備份目錄,再用rsync同步到數據庫目錄。2. 使用mysqldump工具恢復(邏輯備份恢復,通用性強)
mysqldump生成的SQL腳本包含數據庫結構(表、視圖)和數據,適合跨版本、跨平臺恢復,或需要導出部分數據的場景。
mysql -u root -p -e "CREATE DATABASE dbname;"),再導入備份文件:mysql -u root -p dbname < /path/to/backup.sql。mysql -u root -p < /path/to/full_backup.sql。3. 使用mysqlcheck工具修復輕微損壞
若數據庫能啟動但存在表損壞(如查詢報錯“Table corruption”),可通過mysqlcheck檢查和自動修復:
sudo mysqlcheck --all-databases --check --auto-repair -u root -p
該工具會掃描所有數據庫的表,嘗試修復索引或數據不一致問題,適用于InnoDB或MyISAM表的輕微損壞。
4. 配置innodb_force_recovery強制恢復(InnoDB嚴重損壞)
當InnoDB存儲引擎的數據文件(如ibdata1、ib_logfile*)損壞導致MariaDB無法啟動時,可通過強制恢復模式導出數據:
/etc/mysql/my.cnf或/etc/my.cnf),在[mysqld]段添加innodb_force_recovery = 1(值范圍1-6,數字越大修復越徹底);sudo systemctl restart mariadb;mysqldump),然后刪除損壞的數據庫目錄,重新初始化MariaDB并導入數據;innodb_force_recovery的值(每次+1)直至能啟動,再執行數據導出。5. 從系統備份恢復(物理文件恢復)
若數據庫目錄(如/var/lib/mysql)因磁盤故障、誤刪除等原因丟失,可通過系統級備份(如rsync、tar或專業備份軟件)恢復:
sudo rsync -aP /backup/var_lib_mysql/ /var/lib/mysql/);sudo chown -R mysql:mysql /var/lib/mysql;sudo systemctl start mariadb。