linux

MariaDB在Linux上如何进行数据恢复

小樊
42
2025-09-16 16:42:31
栏目: 云计算

MariaDB在Linux上的数据恢复方法如下:

  1. 停止服务

    sudo systemctl stop mariadb  
    
  2. 备份当前数据(可选)

    sudo cp -R /var/lib/mysql /var/lib/mysql_backup  
    
  3. 从SQL备份恢复

    mysql -u root -p < /path/to/backup.sql  
    
  4. 从物理备份恢复

    sudo rsync -aAXv /path/to/backup/mysql/ /var/lib/mysql/  
    sudo chown -R mysql:mysql /var/lib/mysql  
    sudo systemctl start mariadb  
    
  5. 使用工具恢复(如xtrabackup/mariabackup)

    • xtrabackup(需先安装):
      # 恢复全量备份  
      innobackupex --apply-log /path/to/backup  
      sudo rsync -aP /path/to/backup/ /var/lib/mysql/  
      sudo chown -R mysql:mysql /var/lib/mysql  
      sudo systemctl start mariadb  
      
    • mariabackup(官方工具):
      # 恢复全量备份  
      mariabackup --prepare --target-dir=/path/to/backup  
      sudo rsync -aP /path/to/backup/ /var/lib/mysql/  
      sudo chown -R mysql:mysql /var/lib/mysql  
      sudo systemctl start mariadb  
      
  6. 修复表(针对损坏的表)

    • MyISAM表
      sudo myisamchk -r /var/lib/mysql/database_name/table_name.MYI  
      
    • InnoDB表
      编辑配置文件(/etc/my.cnf),添加:
      [mysqld]  
      innodb_force_recovery = 1  
      
      逐步增加值(最大6)直至能启动服务,然后导出数据。
  7. 基于二进制日志恢复(针对误操作)

    # 查看二进制日志定位误操作  
    mysqlbinlog /var/lib/mysql/mysql-bin.000001 --start-datetime="YYYY-MM-DD HH:MM:SS" --database=database_name  
    # 生成恢复SQL并执行  
    mysqlbinlog --start-datetime="YYYY-MM-DD HH:MM:SS" --database=database_name /var/lib/mysql/mysql-bin.000001 > recovery.sql  
    mysql -u root -p < recovery.sql  
    

注意:操作前确保有完整备份,优先使用官方工具(如mariabackup),复杂场景建议咨询专业人士。

0
看了该问题的人还看了