1. 使用官方备份工具恢复(mariabackup/xtrabackup)
mariabackup是MariaDB官方提供的开源备份工具,支持全量、增量备份及恢复,适用于InnoDB和XtraDB引擎,是生产环境推荐的方式。
- 全量恢复步骤:停止MariaDB服务(
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文件,可通过以下命令恢复:
- SQL文件:
mysql -u 用户名 -p 数据库名 < 备份文件.sql(例如mysql -u root -p mydb < /home/user/backup.sql)。 - dump文件:使用
mysqlimport(mysqlimport -u 用户名 -p --local 数据库名 备份文件.dump)或mariadb-restore工具(mariadb-restore -u 用户名 -p --databases 数据库名 备份文件.dump)。
恢复前需停止MariaDB服务以避免数据冲突,恢复后重启服务并验证数据完整性。
3. 物理文件恢复(extundelete)
若数据文件被误删除(如ibdata1、*.ibd等InnoDB文件),可通过extundelete工具恢复(仅适用于ext3/ext4文件系统)。
- 操作前提:立即停止所有访问数据库的服务(如MariaDB、Web服务),防止新数据覆盖磁盘空间。
- 恢复命令:
sudo extundelete /dev/sdXY --restore-file path/to/deleted/file(例如/dev/sda1是数据分区,/var/lib/mysql/ibdata1是被删文件路径);恢复后需将文件放回原数据目录,修正权限并重启MariaDB。
4. 强制恢复(innodb_force_recovery)
若InnoDB引擎数据文件损坏(如ib_logfile0损坏、数据库无法启动),可通过强制恢复模式尝试导出数据。
- 操作步骤:编辑MariaDB配置文件(
/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. 专业工具恢复
若上述方法均无效,可使用专业数据恢复工具或服务:
- Percona Toolkit:包含
pt-table-checksum(校验数据一致性)、pt-table-sync(同步表数据)等工具,适用于复杂数据损坏场景。 - 第三方服务:如专业的MariaDB数据恢复软件(需选择可信厂商),针对物理介质损坏、逻辑坏道等情况提供深度恢复。
使用专业工具前,需停止对原数据目录的所有写入操作,避免二次破坏。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1446365.html