柔晶美网络工作室

柔晶美网络工作室,倾心于web技术的博客站点

关注我 微信公众号

您现在的位置是: 首页 > 博客日记

记一次mysql数据库误删除,利用二进制日志恢复的过程

2020-12-21 admin linux  mysql  2364

因用户误点了一键清空,导致数据表全部没了数据。为找回数据,首先查看有没计划备份,查看后台发现没有;再进入阿里云后台看看有无快照,也是没有启用。最后,只能看看有没有开启二进制日志:

第一步:保证mysql已经开启binlog,查看命令:

查看binklog是否开启

show variables like '%log_bin%';

查看binlog存放日志文件目录

show variables like '%datadir%';

值为OFF,需开启,值为ON,已开启。

如果没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。

第二步:进入binlog文件目录,找出日志文件

第三步:切换到mysqlbinlog目录,通过mysqlbinlog工具命令查看数据库增删改查记录(必须切换到mysqlbinlog目录才有效)

/www/server/mysql/bin/mysqlbinlog --no-defaults --database=cx_xiangxinedu_c --start-datetime="2020-12-21 15:05:00" --stop-datetime="2020-12-21 15:06:00" /www/server/data/mysql-bin.000004    > templog.txt

上面的命令,需要绝对路径,并指定数据库和开始时间,结果时间,日志文件。执行完毕后,打开/www/server/mysql/bin/mysqlbinlog目录下的templog.txt文件,复制,粘贴到Phpmyadmin中的sql语句中执行,数据库恢复了。

如果数据有误,需要核对上面文本中的sql语句。

例子3:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的操作日志,并且过滤出 只包括 template_coupon_tb_product_category 表数据的操作记录 ,输入如下命令将数据写入到一个备用的txt文件中

mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015   | grep template_coupon_tb_product_category   > templog.txt

附:在恢复过程中,发现直接导入会导致很多update的数据没有更新,原因是日志的sql语句,许多id=1变成了id=1_fg这种。因此,最好将updata和insert语句分开为两个文件,再分开导入,先插入再更新。

数据恢复是非常繁琐的,因此管理员在做删除操作时,一定要慎重。

要通过 MySQL 二进制日志文件来恢复数据库数据,你需要执行以下步骤:

  1. 停止 MySQL 服务: 在进行数据恢复之前,首先停止 MySQL 服务,以防止在恢复过程中出现数据写入冲突。

  2. 备份当前数据: 在执行恢复操作之前,建议先对当前数据库进行备份,以防意外情况发生。

  3. 找到正确的二进制日志文件: 确保你选择了正确的二进制日志文件进行恢复。在你提供的情况下,你提到的日志文件是 /www/server/data/mysql-bin.000007

  4. 执行恢复命令: 使用 mysqlbinlog 命令解析二进制日志文件,并将其应用到 MySQL 服务器上。命令可能类似于以下内容:


/www/server/mysql/bin/mysqlbinlog --no-defaults /www/server/data/mysql-bin.000007 | mysql -u username -p

这将会应用二进制日志文件中的操作到 MySQL 服务器上。请替换 username 为你的 MySQL 用户名,然后输入密码以确认。

  1. 启动 MySQL 服务: 当恢复完成后,重新启动 MySQL 服务。

请注意,这种方法只能用于恢复在二进制日志中记录的更改,而不能用于恢复完整的数据库备份。此外,恢复过程可能会影响当前数据库中的数据,因此在执行此操作之前,请确保已经做好了充分的备份并谨慎操作。

文章评论


需要 登录 才能发表评论
热门评论
0条评论

暂时没有评论!