温馨提示×

MariaDB在Ubuntu上如何恢复数据

小樊
37
2025-11-06 22:18:27
栏目: 云计算

1. 通过备份文件恢复(推荐,最安全有效)
若你有MariaDB的备份文件(常见格式为.sql.dump),可通过以下步骤恢复:

  • SQL格式备份恢复:使用mysql命令直接导入备份文件。例如恢复名为my_database的数据库,命令为:

    mysql -u 用户名 -p 数据库名 < 备份文件.sql
    

    示例(恢复到my_database,备份文件位于/home/user/my_backup.sql):

    mysql -u root -p my_database < /home/user/my_backup.sql
    

    输入密码后,系统会自动执行SQL语句恢复数据。

  • .dump格式备份恢复:需使用mysqlimportmariadb-restore工具。

    • mysqlimport命令(需提前安装mariadb-client):
      mysqlimport -u 用户名 -p --local 数据库名 备份文件.dump
      
      示例:
      mysqlimport -u root -p --local my_database /home/user/my_backup.dump
      
    • mariadb-restore命令(更直观):
      mariadb-restore -u 用户名 -p --databases 数据库名 备份文件.dump
      
      示例:
      mariadb-restore -u root -p --databases my_database /home/user/my_backup.dump
      

    两种工具均会自动解析.dump文件并导入数据。

2. 使用mariabackup工具恢复(官方推荐,支持物理备份)
若你使用mariabackup(MariaDB官方开源备份工具)创建了物理备份,恢复步骤如下:

  • 安装mariabackup(若未安装):
    sudo apt install mariadb-backup
    
  • 准备备份数据:进入备份目录,执行--prepare命令使备份数据可导入:
    mariabackup --prepare --target-dir=/path/to/full_backup
    
  • 停止MariaDB服务
    sudo systemctl stop mariadb
    
  • 恢复数据到数据目录:将准备好的备份数据复制到MariaDB默认数据目录(通常为/var/lib/mysql):
    sudo rsync -aP /path/to/full_backup/ /var/lib/mysql/
    
  • 修正权限:确保数据目录属主为mysql用户:
    sudo chown -R mysql:mysql /var/lib/mysql
    
  • 启动MariaDB服务
    sudo systemctl start mariadb
    
    若需恢复增量备份,需先准备全量备份,再依次准备并合并增量备份。

3. 无备份时的数据恢复(使用extundelete工具,成功率有限)
若未备份且数据文件被误删除,可尝试使用extundelete工具恢复(仅适用于ext3/ext4文件系统):

  • 停止相关服务:立即停止MariaDB及所有可能访问数据文件的服务(如Apache、Nginx),防止新数据覆盖被删除文件。
  • 安装extundelete
    sudo apt install extundelete
    
  • 恢复指定文件:执行以下命令恢复被删除的MariaDB数据文件(如表文件.ibd或数据库目录)。例如恢复/var/lib/mysql/my_database目录下的所有文件:
    sudo extundelete /dev/sdXY --restore-directory /var/lib/mysql/my_database
    
    其中/dev/sdXY是包含MariaDB数据文件的分区(可通过df -h /var/lib/mysql查看)。
  • 恢复后操作:恢复的文件会保存在当前目录的RECOVERED_FILES文件夹中,需将其移回原数据目录并修正权限,再重启MariaDB服务。

注意事项

  • 恢复前务必停止MariaDB服务,避免数据冲突或覆盖;
  • 优先使用备份文件恢复,无备份时尝试数据恢复工具的成功率较低;
  • 定期备份数据(建议使用mariabackup创建物理备份+mysqldump创建逻辑备份),并验证备份完整性;
  • 恢复后检查数据库连接及数据完整性(如登录MySQL执行SHOW DATABASES; SHOW TABLES;)。

0