不熟悉使用mysql数据库的朋友们,可能会对其有非常多的小问题,例如说,mysql更新数据可以回滚吗?我们应该如何去实现呢?
操作数据库时候难免会因为“大意”而误操作,需要快速恢复的话通过备份来恢复是不太可能的,因为需要还原和binlog差来恢复,等不了,很费时。这里说明因为Update 操作的恢复方法:主要还是通过binlog来进行恢复,前提是binlog_format必须是Row格式,否则只能通过备份来恢复数据了。
以下情况可以恢复数据:
1 ,innodb引擎表开启了事务,执行dml语句,比如delete、update、insert之类,并且没有提交即commit操作的话,可以执行rollback进行回滚恢复。如果是ddl操作,如drop、create、alter之类的操作时无效的。
2, 在进行删除操作之前有备份,比如mysqldump,物理备份数据文件之类的操作,那么可以恢复到删除前的数据。
3, 如果你的删除操作是直接对data下的文件进行删除,注意,不是粉碎文件操作,那么你可以尝试用磁盘恢复软件来找回被误删的数据文件;
binlog2sql快速回滚:
首先,确认你的MySQL server开启了binlog,设置了以下参数:
[mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 1000M binlog-format = row
如果没有开启binlog,也没有预先生成回滚SQL,那真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。
随后,安装开源工具binlog2sql。binlog2sql是一款简单易用的binlog解析工具,其中一个功能就是生成回滚SQL。
git clone https://github.com/danfengcao/binlog2sql.git pip install -r requirements.txt
然后,我们就可以生成回滚SQL了。
回滚步骤:
登录mysql,查看目前的binlog文件。
最新的binlog文件是mysql-bin.000002,我们再定位误操作SQL的binlog位置
生成回滚sql,并检查回滚sql是否正确。
确认回滚sql正确,执行回滚语句。登录mysql,数据回滚成功。
那么以上就是有关mysql更新数据回滚的所有内容了,还想了解java常见问答的更多相关信息,记得关注本站消息哦。
推荐阅读: