今天使用MySql的Binlog日志来恢复MySql数据。先看看binlog日志有没有打开,
show variables like '%log_bin%';
第一项log_bin 是打开的,如果没打开就先自行百度一下,还有就是要记住一个路径,就是图中的/usr/local/mysql/data目录,因为等会binlog日志生成的日志就是在该目录下。
现在我们创建一个数据库,随便是使用命令还是图形化界面来操作都可以,然后创建一张表,再插入几条数据
我这里创建了一个ds0的数据库和people表,并插入了二条数据.
现在我们进入到/usr/local/mysql/data的目录下
可以看到有一个mysql-bin.000001的文件,我们切换到/usr/local/mysql/bin目录下执行
./mysqlbinlog ../data/mysql-bin.000001
可以看到
这里只是截取了一部分,可以看到我们创建数据库和表的语句。现在我们就把ds0整个数据库删除掉,删除掉之后就可以使用binlog日志进行恢复了,在上图中有很多这样的内容
然后切换到 /usr/local/mysql/bin目录下,执行
./mysqlbinlog --start-position=2757 --stop-position=4008 ../data/mysql-bin.000001 | /usr/local/mysql/bin/mysql -uroot -p
这个2757就是你需要恢复的开始的事件位置号,4008就是结束的事件位置号,在这二个事件号之间要包含你需要恢复的数据库的sql信息就可以,比如在我们创建数据库ds0,创建表和插入数据都在这个范围内。回车,然后输入mysql密码,再进入mysql就可以看到ds0数据库的信息都恢复了