前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql通过binlog恢复数据

Mysql通过binlog恢复数据

作者头像
入门笔记
发布2022-06-02 15:02:38
6280
发布2022-06-02 15:02:38
举报
文章被收录于专栏:入门小站入门小站

前提要开启binlog日志

用到的sql脚本

代码语言:javascript
复制
drop database if exists demo;
create database demo;
use demo;
drop table  if exists rumenz;
create table rumenz(id int,name varchar(30));
insert into rumenz(id,name) values(1,'qaz');
insert into rumenz(id,name) values(2,'qaz');
insert into rumenz(id,name) values(3,'qaz');
insert into rumenz(id,name) values(4,'qaz');
insert into rumenz(id,name) values(5,'qaz');
insert into rumenz(id,name) values(6,'qaz');
insert into rumenz(id,name) values(7,'qaz');
insert into rumenz(id,name) values(8,'qaz');

使用以上脚本创建数据库和表

代码语言:javascript
复制
> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| demo               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
> use demo;
> show tables;
+----------------+
| Tables_in_demo |
+----------------+
| rumenz         |
+----------------+

查看rumenz表中的数据

代码语言:javascript
复制
> select * from rumenz;
+------+------+
| id   | name |
+------+------+
|    1 | qaz  |
|    2 | qaz  |
|    3 | qaz  |
|    4 | qaz  |
|    5 | qaz  |
|    6 | qaz  |
|    7 | qaz  |
|    8 | qaz  |
+------+------+
8 rows in set (0.00 sec)

删除rumenz

代码语言:javascript
复制
> drop table rumenz;
> show tables;
Empty set (0.00 sec)

此时查看binlog正在记录的额文件

代码语言:javascript
复制
> show master status;

image-20210615224824688

正在被记录的文件是mysql3306-bin.000008

刷新binlog日志,保存前面完整的操作

代码语言:javascript
复制
> flush logs;

查看binlog日志,找到需要恢复到的位置

代码语言:javascript
复制
> show binlog events in 'mysql3306-bin.000008';

image-20210615225134682

在3927位置,rumenz表被删除,所以我们找到了恢复数据的结束点

恢复数据

查看前面用到的所有日志文件

代码语言:javascript
复制
> shwo master logs;
+----------------------+-----------+
| Log_name             | File_size |
+----------------------+-----------+
| mysql3306-bin.000001 |      1275 |
| mysql3306-bin.000002 |       386 |
| mysql3306-bin.000003 |      1326 |
| mysql3306-bin.000004 |       205 |
| mysql3306-bin.000005 |       177 |
| mysql3306-bin.000006 |      3020 |
| mysql3306-bin.000007 |       389 |
| mysql3306-bin.000008 |      4046 |
+----------------------+-----------+
8 rows in set (0.00 sec)

恢复数据

常用选项:

代码语言:javascript
复制
--start-position=953                   起始pos点
--stop-position=1437                   结束pos点
--start-datetime="2021-06-01 13:18:54" 起始时间点
--stop-datetime="2021-06-05 13:21:53"  结束时间点
--database=demo                     指定只恢复demo数据库(一台主机上往往有多个数据库,只限本地log日志)
代码语言:javascript
复制
> mysqlbinlog --stop-position=3927    mysql3306-bin.000001 mysql3306-bin.000002  mysql3306-bin.000003 mysql3306-bin.000004  mysql3306-bin.000005 mysql3306-bin.000006  mysql3306-bin.000007 mysql3306-bin.000007 | mysql -uroot -p123456

如果有多个binlog日志文件,需要全部指定上去

如果只恢复指定数据库,如demo数据库,使用-d demo-database demo

代码语言:javascript
复制
> mysqlbinlog -d demo  --stop-position=3927    mysql3306-bin.000001 mysql3306-bin.000002  mysql3306-bin.000003 mysql3306-bin.000004  mysql3306-bin.000005 mysql3306-bin.000006  mysql3306-bin.000007 mysql3306-bin.000007 | mysql -uroot -p123456

相关文章

Mysql中的binlog入门介绍

Mysql之binlog三种模式

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用到的sql脚本
  • 使用以上脚本创建数据库和表
  • 删除rumenz表
  • 此时查看binlog正在记录的额文件
  • 查看binlog日志,找到需要恢复到的位置
  • 恢复数据
  • 恢复数据
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档