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。