查看MySQL日志文件存储位置
SHOW VARIABLES LIKE '%query%';
查看binlog是否开启:
show variables like 'log_bin';
show master status;
show master logs;
打开liunx 下的配置文件
/etc/my.cnf
添加
log-bin=mysql-bin
开启二进制文件
导出二进制文件 采用从节点4开始到3000结束
C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqlbinlog --start-position=4 --stop-position=3000 "C:\ProgramData\MySQL\MySQL Server 5.7\data\mysql.000001" >c:\binlog.sql
导出二进制文件 采用utf8格式
mysqlbinlog --set-charset=utf8 "C:\ProgramData\MySQL\MySQL Server 5.7\Data\mysql_bin.000001" >d:\binlog.sql
利用二进制起始时间恢复文件
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 5.7\Data\mysql_bin.000001" --start-datetime="2017-03-03 16:14:56" --stop-datetime="2017-03-03 17:14:56" | mysql -uroot -p632013
利用二进制起始位置恢复文件
mysqlbinlog --start-position="3947" --stop-position="4055" "C:\ProgramData\MySQL\MySQL Server 5.7\Data\mysql_bin.000001" | mysql -uroot -p632013
删除列于指定日志之前的所有日志,但不包括指定的日志:
purge binary logs to 'mysql-bin.000002';
删除2017-03-01 00:00:00时间点之前的日志:
purge binary logs before '2017-03-01 00:00:00';
刷新日志
flush logs;
reset master;
设置日志过期天数
set GLOBAL expire_logs_days=7;
注意:当你误删一条数据,利用二进制日志恢复的时候你需要寻找的是 创建数据的那个节点(时间),而并非你删除数据的那个节点(时间)
当你回滚数据,回滚到删数据之前的数据库状态(只执行了stop-position 或者stop-datetime),那么在stop-position之后所有的数据库操作都将丢失所以你需要
start-position stop-position 回滚单条被删数据
执行后续回滚的操作(避开删数据节点,往后面继续执行start-position stop-position )
关于利用二进制恢复文件还有很多解,果然知识海是无穷的