mysql通过mysqlbinlog日志恢复数据

删库跑路 恢复
如果不是InnoDB跟没开启日志!那就莫得方法了!还是选择跑路吧!(开个玩笑)

【mysql bin 没有mysqlbinlog.exe 去网上下载】
一、首先一定要开启binlog!!!!
在mysql的 my.ini文件
 
[mysqld] 区块设置/添加 log-bin=mysql-bin 确认是打开状态(值 mysql-bin 是日志的基本名或前缀名);
 
二、通过mysql的变量配置表,查看二进制日志是否已开启
show variables like "log_%"

 

mysql通过mysqlbinlog日志恢复数据_第1张图片
 
然后再mysql的data查看 是否有日志 
命令查看:
show master logs (查看所有)
show master status  (查看最后一条)
mysql通过mysqlbinlog日志恢复数据_第2张图片
 
物理查看:
mysql-bin.000xxx 是日志命名(默认的) ,可以通过 my.ini  log-bin=mysql-bin (改成其他别名)
 
mysql通过mysqlbinlog日志恢复数据_第3张图片
 
注意:凡是是创建表、创建数据库、插入、更新、删除都会记录在log里。查询不会去记录。
(可以简单做个实验,insert into 一条记录,Position的记录值行数变大)
 
mysql通过mysqlbinlog日志恢复数据_第4张图片
 
查看mysql日志文件
普通的编辑器文本是看不到日志里的内容,都是二进制,需要用到 mysqlbinlog 去进行查看,
退出mysql;
格式 :  mysqlbinlog [日志文件]  --其他参数(--start 等等)
mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005  【日志文件名+路径】
 
 
mysql通过mysqlbinlog日志恢复数据_第5张图片
 
 
通过指定的开始位置跟结束位置
(比如取日志里的某一段, insert into test3 values(132) )
 
mysqlbinlog mysql.bin00005 --start-position=175 --stop-position=267  -r test.sql 
输出 初始值位置175,结束位置267的所有binlog日志 
 
通过指定时间段 (不精确,因为一个时间段可能有多个sql语句)
 
指定开始时间到结束时间
mysqlbinlog mysql.bin00005 --start-datetime='2019-06-22 11:46:02' --stop-datetime='2019-06-30 11:46:02' -r test.sql
 
从文件开头到指定结束时间
mysqlbinlog mysql.bin00005 --stop-datetime='2019-06-22 11:46:02' -r test.sql
 
指定开始时间到结束
mysqlbinlog mysql.bin00005 --start-datetime='2019-06-22' -r  test.sql
 
 
将日志转成mysql格式(其他格式 sql/txt····)
如果二进制文件过大,在命令行是看不到太多的内容,需要导出数据查看
格式 :  mysqlbinlog [日志文件] > [导出在哪个目录]
mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005 > test.sql 
然后再 source 运行test.sql
 
直接日志恢复数据
格式 : mysqlbinlog [日志文件] | [数据库链接]
mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005 | mysql -u root - p 
 
 
其他命令
刷新日志   flush logs;
清空日志   reset master;
 

你可能感兴趣的:(Mysql学习)