记录一次mysql binlog 恢复数据的操作

本文详述了一次线上数据库被空表覆盖的事故,通过利用MySQL的Binlog功能成功恢复数据的过程。包括Binlog的复制、表结构重建、数据还原的步骤,以及开启和配置Binlog的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于公司人员的一次大意操作,把一个只有表结构的空表,覆盖了线上的数据库。直接把生产系统上的数据库给覆盖了,生产数据全部没了。而碰巧的是这个新的数据库还没有进行每天的备份,直接炸锅.

幸好有binlog,在这里记录一下恢复过程.

1 先把生产线上的binlog 复制到了测试机器和本地上面。防止意外情况发生binlog破坏或者丢失.

2 在测试机器建立和破坏掉的数据库一样的表结构.

3 利用mysqlbinlog 命令进行对数据库的还原

3.1 binlog文件在的目录一般是在/var/lib/mysql/ 这个文件夹下面

3.2 执行mysqlbinlog 命令本机器是在/usr/bin/ 目录下面

3.3 执行命令

mysqlbinlog  --no-defaults --database=【数据库名称】【binlog文件路径】 | mysql -u【mysql用户名】 -p【mysql用户密码】 -v 【数据库名】

例子:

/usr/bin/mysqlbinlog --no-defaults  --set-charset=utf8 --database=db_mjm_015 /var/lib/mysql/mysql-binlog.|mysql -uroot -p123456 -v db_mjm_015

4 如果binlog 文件都在,即把每个binlog 文件都按照如上面进行执行.

binlog 只是对执行过的sql做记录操作,中间可能因为滚动或者覆盖而丢失一部分数据.

以上就是恢复的过程.

mysql 最好要开启binlog 不然真的有那一天mysql 没有进行备份,那么恰巧mysql又出现了意外操作,那是真的头大.

 

mysql 开启binlog 步骤

搜索my.cnf 文件  命令 locate my.cnf

在my.cnf 文件里面配置

log_bin=ON  
log_bin_index=/var/lib/mysql/mysql-bin.index  (此文件就是一个记录,记录了所有的binlog的文件)

配置好后进行数据库的重启

service mysql stop  

service mysql start

 

下面一些是binlog的操作命令

在mysql里面执行

show master logs (可以查看binlogs)

/usr/bin/mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-position='4' --stop-position='1000' /mysql_bin_log/mysql-bin.000046 >/mysql_bin_log/00046.out

可以把对应的开始位置和结束位置的binlog二进制文件输出到文本里面进行查看操作

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值