mysql mysqlbinlog 恢复数据

mysqlbinlog 恢复数据

问题描述

2020年,5月8日,备份了一次某项目的数据库。
5月29日,该项目的数据库被覆盖了。(也就是数据回到了5月8日)
期间没有任何备份,由于一些原因,需要找回丢失的数据。

解决方法

mysqlbinlog 提取sql记录 时间节点就是覆盖数据库之前的时间
先看看是否开启了mysql数据库日志(如果没开启,估计要杯具。)
登录服务器,进入mysql终端,输入如下命令

show variables like '%log_bin%';

在这里插入图片描述
可以看到,log_bin 是 ON
接下来找一找mysql 的安装目录

vi /etc/my.cnf

在这里插入图片描述
安装路径就是 /usr/local/mysql/var

cd /usr/local/mysql/var

查看一下,标红的文件可能就是你要操作的文件,
环境不同,文件名后缀也不一样
在这里插入图片描述
为了更直观,我用SFTP连到服务器,可以看到文件都是有修改日期的,
一般情况下 mysql-bin 文件
在这里插入图片描述
以5月27日的文件为例,mysql-bin.000062 63.84MG 那个
执行命令

cd /usr/local/mysql/bin/
./mysqlbinlog -d shop_qifenbao --stop-datetime='2020-5-29 6:00:01' /usr/local/mysql/var/mysql-bin.000062 >/recovery_62.sql;

说明,-d shop_qifenbao (-d 后面是数据库名称)–stop-datetime 后面是结束的时间节点 /usr/local/mysql/var/mysql-bin.000062 是要提取的文件 最后是导出到哪个文件

文件导出后,再下载到本地,进行数据恢复
去到本地mysql 的bin 目录,执行如下命令

mysql -uroot -p < d:\recovery\recovery_62.sql

到此数据就恢复到27号的

文件较多,一个一个来比较麻烦,可以合并文件后,再按上门的方法提取

cat mysql-bin.0000* > merge.sql

或者逐个文件合并

cat mysql-bin.000062 mysql-bin.000063 > merge.sql

要合并哪些文件,得看情况了 ,到此结束。

对于使用mysqlbinlog恢复数据,您可以按照以下步骤进行操作: 1. 首先,您需要确保已经备份了要恢复MySQL二进制日志文件(通常以binlog开头)。如果没有备份,恢复数据将会变得困难,甚至不可能。 2. 定位最新的完整备份文件和二进制日志文件。如果您只有备份文件而没有二进制日志文件,您可以使用该备份文件还原数据库,并且会丢失备份后的更改。 3. 在MySQL服务器上停止所有相关的服务,以确保数据一致性。可以使用以下命令: ``` sudo service mysql stop ``` 4. 使用mysqlbinlog命令来解析和恢复二进制日志文件。例如,使用以下命令从二进制日志文件中创建SQL语句文件: ``` mysqlbinlog <binlog文件名> > restore.sql ``` 5. 打开恢复.sql文件,并检查其中的SQL语句,确保其包含正确的恢复操作。可以使用文本编辑器进行编辑。 6. 重新启动MySQL服务并登录到MySQL服务器: ``` sudo service mysql start mysql -u <用户名> -p ``` 7. 在MySQL命令行中执行恢复.sql文件中的SQL语句: ``` source /path/to/restore.sql; ``` 8. 等待恢复操作完成。这可能需要一些时间,具体取决于二进制日志文件的大小和恢复操作的复杂性。 请注意,使用mysqlbinlog恢复数据可能会有一定的风险,因此在执行之前务必进行备份,并在恢复之前仔细检查和验证恢复的SQL语句。此外,根据具体情况可能需要额外的步骤和配置,请参考MySQL官方文档或专业人士的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值