天天看点

MySQL日志文件恢复数据

查看MySQL日志文件存储位置

查看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
           

利用二进制起始时间恢复文件

利用二进制起始位置恢复文件

删除列于指定日志之前的所有日志,但不包括指定的日志:

删除2017-03-01 00:00:00时间点之前的日志:

刷新日志

flush logs;
reset master;  
           

设置日志过期天数

注意:当你误删一条数据,利用二进制日志恢复的时候你需要寻找的是 创建数据的那个节点(时间),而并非你删除数据的那个节点(时间)

当你回滚数据,回滚到删数据之前的数据库状态( 只执行了stop-position 或者stop-datetime ),那么在stop-position之后所有的数据库操作都将丢失所以你需要

  1. start-position stop-position 回滚单条被删数据
  2. 执行后续回滚的操作(避开删数据节点,往后面继续执行start-position stop-position )

关于利用二进制恢复文件还有很多解,果然知识海是无穷的

继续阅读