1. 使用官方备份工具恢复(mariabackup/xtrabackup)
mariabackup是MariaDB官方提供的开源备份工具,支持全量、增量备份及恢复,适用于InnoDB和XtraDB引擎,是生产环境推荐的方式。
systemctl stop mariadb);清空目标数据目录(如/var/lib/mysql,rm -rf /var/lib/mysql/*);执行恢复命令(mariadb-backup --copy-back --target-dir=/path/to/full-backup);修正数据目录权限(chown -R mysql:mysql /var/lib/mysql);启动服务(systemctl start mariadb)。mariadb-backup --copy-back --incremental-dir=/path/to/incremental-backup --target-dir=/path/to/full-backup)。.xbstream或.gz格式,需先解压(如mbstream -x -C /path/to/backup < backup.xbstream或gunzip -c backup.gz | mbstream -x -C /path/to/backup),再按全量恢复流程操作。2. 从SQL逻辑备份恢复
若存在.sql(如mysqldump生成的备份)或.dump文件,可通过以下命令恢复:
mysql -u 用户名 -p 数据库名 < 备份文件.sql(例如mysql -u root -p mydb < /home/user/backup.sql)。mysqlimport(mysqlimport -u 用户名 -p --local 数据库名 备份文件.dump)或mariadb-restore工具(mariadb-restore -u 用户名 -p --databases 数据库名 备份文件.dump)。3. 物理文件恢复(extundelete)
若数据文件被误删除(如ibdata1、*.ibd等InnoDB文件),可通过extundelete工具恢复(仅适用于ext3/ext4文件系统)。
sudo extundelete /dev/sdXY --restore-file path/to/deleted/file(例如/dev/sda1是数据分区,/var/lib/mysql/ibdata1是被删文件路径);恢复后需将文件放回原数据目录,修正权限并重启MariaDB。4. 强制恢复(innodb_force_recovery)
若InnoDB引擎数据文件损坏(如ib_logfile0损坏、数据库无法启动),可通过强制恢复模式尝试导出数据。
/etc/my.cnf或/etc/mysql/my.cnf),在[mysqld]段添加innodb_force_recovery = 1;重启MariaDB服务(systemctl restart mariadb);若仍无法启动,逐步增加innodb_force_recovery值(最大至6,每步重启服务);待能启动后,立即导出所有数据(mysqldump -u root -p --all-databases > all_databases.sql);重新初始化数据库并导入备份数据。5. 专业工具恢复
若上述方法均无效,可使用专业数据恢复工具或服务:
pt-table-checksum(校验数据一致性)、pt-table-sync(同步表数据)等工具,适用于复杂数据损坏场景。