binlog数据恢复(binlog使用一)

1 篇文章 0 订阅
1 篇文章 0 订阅

binlog(归档日志)

一、介绍

binlog是server层的归档日志,所以没有crash-safe能力(redo log)

  • binlog是mysql的逻辑日志,并由server层进行记录,任何存储引擎都可以开启并使用;
  • binlog 记录数据库执行写入性操作信息,及语句的原始逻辑,还包括语句执行开始、结束时间,事务ID等信息;
  • binlog 磁盘记录是顺序记录,但日志的最大值(默认1G,可以通过max_binlog_size来设置),则会新起一个文件继续记录(不同于redo log)

二、使用场景

  • 数据恢复
  • 主从同步

三、日志开启及查询

数据恢复,通过使用mysqlbinlog工具来恢复数据

  • 查看binlog日志是否开启
    show variables like "log_bin%"
    在这里插入图片描述
    log_bin:on 表示已开启
    ==log_bin_basename:==日志保存的位置和名称,(如mysql-bin.000001)
    ==log_bin_index:==指定索引文件位置
    如果binlog没有开启,可以到mysql配置文件的【mysqld】下面添加:
    log_bin=mysql-bin
    重启mysql服务器,可以查看到日志已开启
    会在datadir下创建mysql-bin.index和mysql-bin.000001

  • 查看所有binlog日志
    show master logs;
    在这里插入图片描述

  • 刷新日志,则会停止当前日志文件的记录,生成新的日志文件继续后续记录
    flush logs;
    在这里插入图片描述
    可以看到生成了新的日志文件mysql-bin.000005

  • 重置日志文件
    reset master;
    重置之后也会生成新的日志文件,不过是从头开始记录
    在这里插入图片描述
    可以看到日志文件被重置,从头开始记录

四、数据恢复

  • 创建数据
create table `t` (
`id` int(11) not null auto_increment,
  `k` varchar(255) default null,
  `c` varchar(255) default null,
  `pad` varchar(255) default null,
  primary key (`id`),
  key `index_kc` (`k`,`c`)
) engine=innodb;
  • 插入数据
insert into t values(null,'k1','c1','p'),(null,'k2','c2','pp');
-- insert into t values(null,'k3','c3','pnew');

查询可看到数据已存在
在这里插入图片描述
可以使用mysqlbinlog查看日志信息
在这里插入图片描述
查看日志文件已经有内容写入,使用mysqkbinlog查看
在这里插入图片描述
可以看到日志内记录写入数据库执行的语句及开始结束时间
在这里插入图片描述

  • 删除数据

之后我们删除表,然后再通过binlog做数据恢复
在这里插入图片描述

  • 查看日志恢复数据

在数据恢复前我们要先找表呗删除前的记录点

./mysqlbinlog --no-defaults /www/server/data/mysql-bin.000001 |cat -n | grep -iw 'drop'

在这里插入图片描述
可以看到drop语句在82行,然后看drop语句的position

./mysqlbinlog --no-defaults /www/server/data/mysql-bin.000001 | cat -n |sed -n '60,85p'

在这里插入图片描述
找到drop是在985左右,所以我们数据恢复可以恢复到985这个位置

./mysqlbinlog --no-defaults --stop-position='985' /www/server/data/mysql-bin.000001 |mysql -uroot -proot
// --start-position 和 --stop-position 一起使用可以恢复某一段的数据

在这里插入图片描述
在这里插入图片描述
至此可以看到数据已经恢复了

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值