从删库到跑路 恢复
如果不是InnoDB跟没开启日志!那就莫得方法了!还是选择跑路吧!(开个玩笑)
【mysql bin 没有mysqlbinlog.exe 去网上下载】
一、首先一定要开启binlog!!!!
在mysql的 my.ini文件
在[mysqld] 区块设置/添加 log-bin=mysql-bin 确认是打开状态(值 mysql-bin 是日志的基本名或前缀名);
二、通过mysql的变量配置表,查看二进制日志是否已开启
show variables like "log_%"
然后再mysql的data查看 是否有日志
命令查看:
show master logs (查看所有)
show master status (查看最后一条)
物理查看:
mysql-bin.000xxx 是日志命名(默认的) ,可以通过 my.ini log-bin=mysql-bin (改成其他别名)
注意:凡是是创建表、创建数据库、插入、更新、删除都会记录在log里。查询不会去记录。
(可以简单做个实验,insert into 一条记录,Position的记录值行数变大)
查看mysql日志文件
普通的编辑器文本是看不到日志里的内容,都是二进制,需要用到 mysqlbinlog 去进行查看,
退出mysql;
格式 : mysqlbinlog [日志文件] --其他参数(--start 等等)
mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005 【日志文件名+路径】
通过指定的开始位置跟结束位置
(比如取日志里的某一段, 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;