位置: 编程技术 - 正文
推荐整理分享Mysql误操作后利用binlog2sql快速回滚的方法详解(mysql误操作数据恢复),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mysql误操作 恢复,mysql误操作 恢复,mysql 误删,mysql 误删,mysql 误删,mysql误删数据怎么恢复,mysql误操作数据恢复,mysql 误操作,内容如对您有帮助,希望把文章链接给更多的朋友!
前言
在日常工作或者学习中,操作数据库时候难免会因为“大意”而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2sql快速回滚的方法,话不多说,来一起看看详细的介绍:
一、总体解释:
DML(data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL(data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL(Data Control Language):
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL
二、binlog2sql安装
从mysql binlog解析出你要的sql。根据不同选项,你可以得到原始sql、回滚sql、去除主键的insert sql等。
2.1、用途
数据快速回滚(闪回) 主从切换后数据不一致的修复 从binlog生成标准SQL,带来的衍生功能2.2、安装
2.3、user需要的最小权限集合:
select, super/replication client, replication slave权限建议授权
2.4、基本用法
解析出标准SQL
解析出回滚SQL
三、测试:
3.1、新建表users
3.2、解析标准sql
3.3、解析出回滚SQL
查看解析出的sql,如无误,可打印到sql文件中/data/backup/rollback.sql
mysql连接配置
解析模式
--realtime 持续同步binlog。可选。不加则同步至执行命令时最新的binlog位置。 --popPk 对INSERT语句去除主键。可选。 -B, --flashback 生成回滚语句。可选。与realtime或popPk不能同时添加。解析范围控制
--start-file 起始解析文件。必须。 --start-pos start-file的起始解析位置。可选。默认为start-file的起始位置; --end-file 末尾解析文件。可选。默认为start-file同一个文件。若解析模式为realtime,此选项失效。 --end-pos end-file的末尾解析位置。可选。默认为end-file的最末位置;若解析模式为realtime,此选项失效。对象过滤
-d, --databases 只输出目标db的sql。可选。默认为空。 -t, --tables 只输出目标tables的sql。可选。默认为空。3.4、开始回滚
3.5、登陆数据库验证
四、注意事项
4.1、在配置文件中设置了以下参数:
4.2、在闪回的时候必须启动 MySQL 服务
因为它是通过 BINLOG_DUMP 协议来获取 binlog 内容,需要读取server端 information_schema.COLUMNS 表,来获取表结构的元信息,才能拼接成 SQL 语句。因此需要给用户提供的最小权限如下:
源码中,主要是使用 python-mysql-replication 作为实时解析 MySQL binlog 来获取各个 EVENT。 python-mysql-replication 实现了 MySQL 复制协议,客户端伪装成 slave 来获取主的 binlog 和 EVENT。
4.3、insert、update、delete大部分时候可以解析出来标准sql和回滚sql
一种情况例外:insert、updete、delete操作之后,drop/truncate table。 此时虽然在binlog中记录了所有的event,但是使用binlog2sql生成标准sql、回滚sql的时候已经找不到了dml操作的相应的表
4.4、DDL无法使用binlog2sql闪回数据。
总结
标签: mysql误操作数据恢复
本文链接地址:https://www.jiuchutong.com/biancheng/349055.html 转载请保留说明!上一篇:MySql版本问题sql_mode=only_full_group_by的完美解决方案(mysql版本信息)
下一篇:阿里云ECS centos6.8下安装配置MySql5.7的教程(阿里云ecs centos sysctl)
友情链接: 武汉网站建设