ubuntu

ubuntu mysql如何恢复误删除数据

小樊
58
2025-09-02 13:28:16
栏目: 云计算

在Ubuntu系统中恢复MySQL误删除数据,可按以下方法操作,优先使用备份或日志恢复,无备份时谨慎尝试工具恢复:

一、有备份时:直接还原备份

  1. SQL备份恢复
    若有.sql备份文件,用mysql命令导入:
    mysql -u root -p database_name < /path/to/backup.sql  
    
  2. 文件备份恢复
    若备份了数据库目录(如/var/lib/mysql/),停止MySQL服务后复制文件并授权:
    sudo systemctl stop mysql  
    sudo cp -r /path/to/backup/* /var/lib/mysql/  
    sudo chown -R mysql:mysql /var/lib/mysql/  
    sudo systemctl start mysql  
    

二、无备份但有binlog时:通过二进制日志恢复

  1. 确认binlog开启
    执行SHOW VARIABLES LIKE 'log_bin';,返回ON则可用。
  2. 定位误删操作
    mysqlbinlog查看日志,找到误删DELETE语句的时间点或位置点:
    mysqlbinlog --base64-output=decode-rows -v /var/lib/mysql/mysql-bin.000001  
    
  3. 导出恢复SQL
    • 按时间点导出(推荐):
      mysqlbinlog --start-datetime="2025-08-01 10:00:00" --stop-datetime="2025-08-01 10:30:00" /var/lib/mysql/mysql-bin.000001 > recovery.sql  
      
    • 按位置点导出:
      mysqlbinlog --stop-position=12345 /var/lib/mysql/mysql-bin.000001 > recovery.sql  
      
  4. 执行恢复
    编辑recovery.sql删除误删语句,执行导入:
    mysql -u root -p < recovery.sql  
    

三、无备份且无binlog时:尝试工具恢复(仅限未覆盖数据)

四、恢复后检查

登录MySQL验证数据完整性:

mysql -u root -p  
USE database_name;  
SHOW TABLES;  
SELECT * FROM table_name;  

关键提醒

引用标注:

0
看了该问题的人还看了