MySQL数据误删,恢复被删除的数据
使用这个方法的前提:
mysql必须开启binlog日志。
使用的工具
go语言开发的 my2sql,(可直接下载 linux 二进制版本执行),除了闪回,
还提供了前滚和事务分析的功能。
1. 先在Linux服务器上安装Go运行环境
1. wget https://dl.google.com/go/gol.10.3.linux-amd64.tar.gz
2. mv gol.10.3.linux-amd64.tar.gz /usr/local/
3. cd /usr/local/
4. tar -zxvf go1.10.3.linux-amd64.tar.gz
5. vim /etc/profile
6. exprot GOROOT=/usr/local/go
7. export PATH=$PATH:$GOROOT/bin
8. suorse /etc/profile
9. go version
2.my2sql下载安装
my2sql链接:link
1. unzip my2sql-master.zip
2. mv my2sql-master my2sql
3. cd my2sql/releaes/centOS_release_7.x/
4. mv my2sql /usr/local/bin/my2sql
5. chmod +x /usr/local/bin/my2sql
3.查看binlog日志
show variables like 'binlog_format';
show master status;
show binary logs;
4.使用my2sql工具解析binlog日志
4.1 主要参数
-work-type:指定工作类型(前滚、闪回、事务分析),合法值分别为:2sql(默认)、rollback、stats
-sql:过滤 DML 语句的类型,合法值为:insert、update、delete
-ignorePrimaryKeyForInsert:对于 work-type 为 2sql 的 insert 操作,忽略主键(适合大量数据导入的场景)
-big-trx-row-limit int:判定为大事务的阈值(默认 500 行),合法值区间:10-30000 行
-long-trx-seconds int:判定为长事务的阈值(默认 300 秒),合法值区间:1-3600 秒
-databases:过滤库,默认为全部库
-tables:过滤表,默认为全部表
-start-file:指定开始的 binlog 文件
-start-pos:指定 binlog 文件中开始的点位
-start-datetime:指定开始的时间
-stop-datetime:指定结束的时间
-output-dir:指定文件生成目录
-output-toScreen:指定输出到屏幕
-tl:指定时区(time location),默认为 local(Asia/Shanghai)应用场景
my2sql -user root -password 数据库密码 -host 服务器IP/ -port 数据库端口(3306) -work-type (工作类型)rollback -start-file (需要解析的日志)mysql-bin.000001 -output-dir (日志解析后输出的路径)/usr/tmp;
成功后如上图所示,会生成一个sql文件,sql文件里就是你想要还原的数据。
还原前做的删除操作,被my2sql还原后就会变成insert sql语句,以此类推。
再也不怕误删除了。