通过binlog恢复数据
什么是binlog
binlog主要用于主从复制,恢复数据
binlog脑图
如何查看binlog是否开启?如何开启
说明此时是关闭的状态,那么如何开启binlog呢?
server_id=2
log_bin = mysql-bin
binlog_format = statement
expire_logs_days = 30
重启mysql
binlog有几种格式
1、statement 当前使用的是这个
2、row 不配置默认用的是row mysql 5.7以上
3、mixed
如何通过mysql中的binlog恢复数据
我们先来创建一个表
当前状态
当前日志记录的其实位置
– 建表
crete table eee (id.int,c1 varchar(100),c2 varchar(100))
insert into eee(id, c1,c2) values (1, ‘测试1c1’,‘测试c2’);
insert into eee(id, c1,c2) values (1, ‘测试2c1’,‘测试c2’);
insert into eee(id, c1,c2) values (1, ‘测试3c1’,‘测试c2’);
– 更新/删除
update ccc set c2=‘修改’ where id=2;
我这个时候假如我误操作删除了表
drop table ccc;
mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000005
执行mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000005 --start-position=154 --stop-position=1607 | mysql -uroot -proot wly_test1
此时已经恢复完成
如何使用row格式来恢复数据?
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001