Windows下mysql表数据恢复

由于本人手欠,上周五无意之间删除了一个表,然后无奈只好搜索如何恢复(幸好数据不多)

目录

mysql删除表数据恢复

实验模拟

恢复实战

在mysql里进行恢复


顺便在此记录一下,以防后续,分享解决同类问题

先在此处引入搜索到的一篇文章

mysql删除表数据恢复

实验模拟

该实验必须是mysql开启了binlog的情况。
binlog日志,即binary log,是二进制日志文件。它有两个作用,一是增量备份,即只备份新增的内容;二是用于主从复制等,即主节点维护了一个binlog日志文件,从节点从binlog中同步数据。我们可以通过binlog日志恢复数据

查看mysql是否开启binlog语句

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
+---------------+-------+
1 row in set (0.01 sec)

如果是OFF,则说明没有开启binlog。可以使用如下方法开启binlog
编辑/etc/my.cnf文件,在文件后面增加如下两行代码即可

server-id=1
log-bin=/var/lib/mysql/mysql-bin

server-id表示单个结点的id,这里由于只有一个结点,所以可以把id随机指定为一个数,这里将id设置成1。若集群中有多个结点,则id不能相同

第二句是指定binlog日志文件的名字为mysql-bin,以及其存储路径
重启让配置生效。

[root@localhost ~]# systemctl stop mysqld.service
[root@localhost ~]# systemctl start mysqld.service
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.01 sec)

恢复实战

由于在/etc/my.cnf配置了binlog,这个日志会存储插入,删除,修改的日志信息

(当然,windows的路径和这个不太对哦,只要你能开起来就行了)

运行mysql,执行下面的命令

show binlog events in '你想查看的那个记录';

当然,像下图这样,在navicat工具里执行也是可以的

然后你就看到了最早的记录

windows查看所有日志记录,你是可以通过查找Date里找到的,如下图的都是了

在这里,我要查看000031的那个记录

mysql> show binlog events in 'DESKTOP-NBJ63T6-bin.000031';

然后就得到了...

然后找到你对应的开始和结束点就可以了(这里要进入mysql安装目录中的bin文件下去执行)

然后,发现我tm找不到...淦,看提示得到(windows下前面要加.\)

完整命令如下:

.\mysqlbinlog --start-position=25055 --stop-position=49536 "C:\ProgramData\MySQL\MySQL Server 8.0\Data\DESKTOP-NBJ63T6-bin.000031" > D:\\beifen.sql;


命令说明:
.\mysqlbinlog --start-position=开始日志点 --stop-position=结束日志点 "日志文件完整路径地址" > 导出日志的路径地址;
常用参数选项解释:
--start-position=875 起始pos点
--stop-position=954 结束pos点
--start-datetime="2016-9-25 22:01:08" 起始时间点
--stop-datetime="2019-9-25 22:09:46" 结束时间点
--database=zyyshop 指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)
-------------------------------------------------------- 
不常用选项: 
-u --user=name 连接到远程主机的用户名
-p --password[=name] 连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
--read-from-remote-server 从某个MySQL服务器上读取binlog日志


a)查询第一个(最早)的binlog日志:
mysql> show binlog events\G;

b)指定查询 mysql-bin.000002这个文件:
mysql> show binlog events in 'mysql-bin.000002'\G;

c)指定查询 mysql-bin.000002这个文件,从pos点:624开始查起:
mysql> show binlog events in 'mysql-bin.000002' from 624\G;

d)指定查询 mysql-bin.000002这个文件,从pos点:624开始查起,查询10条(即10条语句)
mysql> show binlog events in 'mysql-bin.000002' from 624 limit 10\G;

e)指定查询 mysql-bin.000002这个文件,从pos点:624开始查起,偏移2行(即中间跳过2个),查询10条
mysql> show binlog events in 'mysql-bin.000002' from 624 limit 2,10\G;

在mysql里进行恢复

source D:\beifen.sql;
#将我们刚刚创建的临时脚本在此处进行恢复(记得加路径)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值