一 .先查看binlog功能是否开启 (登录mysql)
show variables like '%log_bin%';
二.查看数据文件存方路径
show variables like '%datadir%';
或者 查看 /etc/my.cnf 文件 配置的 log-bin 路径
如果还找不到的话,可以使用下面步骤(登录mysql 内部命令):
show master logs; 会显示所有的 binlog 文件
show master status; 显示 最新的 binlog 文件
find / -name xx_bin.xx(binlog 文件名)
三:cat命令无法查看,可使用如下查看命令:
show binlog events in ‘mysql-bin.000003’;
四:进行操作前要做好备份,防止误操作
cp xx_bin.xx /homt/ (如:复制到home 文件夹下)
五: 执行如下命令 转换binlog日志为sql(如下是关键步骤)
/www/server/mysql/bin/mysqlbinlog --base64-output=decode-rows -v --database=sq_yundan --start-datetime="2020-06-23 00:00:00" --stop-datetime="2020-07-26 16:50:00" /www/server/data/mysql-bin.000011 > my_yundan.sql
mysqlbinlog 命令的参数说明
--base64-output=decode-rows //数据转换正常的字符,如果不设置这个参数将显示base64的数据
--database=DBName //数据库名(一个mysql数据库比较多,指定方便恢复)
--start-datetime="2020-06-23 00:00:00" //恢复起始时间
--stop-datetime="2020-07-26 16:50:00" //恢复结束时间(注意:在误删操作之前,如果不是在误操作之前需要 转sql后 点开生成的sql -->编辑 --> 找到删除命令 --> 重新 保存)
/www/server/data/mysql-bin.000011 //为数据恢复的日志文件
my_yundan.sql //恢复以后我们需要的文件名
六:将误删的数据库的结构 导出(表中不需要数据,有的话清空一下),然后导入到本地的mysql 或者在你本地 创建同名的数据 库,并将 上面 第 五 步骤生成的 my_yundan.sql 放到本地 最好放到mysql 文件夹下(放哪里都行,前提你的电脑有mysql环 境就行) 然后:
运行如下命令: mysql -uroot -p123456 sq_yundan < my_yundan.sql
到此:数据恢复了,挑选出你误删的数据,导出,导入到正式库 就可以了,此处利用Navicat
1.查看当前正在写入的binlog文件
show master status\G
2.如果需要过滤,只查询insert,update,delete的语句,可以这样写:
mysqlbinlog --no-defaults --database=数据库名 binlogs.000078 |grep update |more
3.Flush logs 刷新日志,会产生一个新编号的binlog文件
4.清空所有binlog日志命令 :reset master; 最好不要用,用了binlog日志就没了
5.开启bin-log
在 /etc/my.cnf 写入一下,重启mysql 即生效
log-bin=mysql-bin binlog_format = ROW
总结:此方法只能对启动binlog日志的mysql进行恢复;没开启的请开启下吧(扩展中:5),当然最好的是备份,请认真对待你的数据!!