修复表 mysql windows_Windows下mysql表数据恢复

本文介绍了在Windows上恢复MySQL删除表数据的步骤,包括检查binlog是否开启、模拟实验、通过binlog恢复数据的实战过程,详细解析了如何使用mysqlbinlog工具定位并导出恢复语句。
摘要由CSDN通过智能技术生成

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

目录

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工具里执行也是可以的

3864e01cbf3ab646ec33b6cbc09749d9.png

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

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

17a164f24cf1ec5c8b665f2c762b99fc.png

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

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

然后就得到了...

e934da93b69f796379ae94ab3b059860.png

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

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

c7125dd23cd79447d0ab7220a55b18e6.png

完整命令如下:

.\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;

#将我们刚刚创建的临时脚本在此处进行恢复(记得加路径)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值