删库了不用跑路!binlog恢复数据实操
各位道友大家好呀!
想必道友们或多或少都听说过MySQL的binlog的作用,它记录了数据库整个的生命周期,可用于恢复数据或者从库同步数据。
那么如果发生了数据库误删,具体该怎样恢复数据呢?
下面就以一个例子来给道友们演示一下,让我们开始吧!do it!
数据备份
首先,数据库要定时进行备份,因为如果需要恢复数据,可以缩小binlog执行范围
mysqldump -uroot -p --master-data=2 --single-transaction -A > /www/server/data/fanrencode-back.sql
参数master-data为2可以记录更多的细节,比如位置信息,方便binlog --start-position
定位
binlog恢复数据
模拟误删操作
首先,新增一条测试数据,然后对库进行备份
然后我们又新增了数据,但是不小心把表给清空了
那么我们该怎么恢复数据呢?
有条件的话先在测试库里执行,没问题再在生产执行。
恢复数据
1.执行备份的文件
可以看到数据已经恢复成mysqldump备份时的数据了
2.执行binlog
查看mysqldump备份的文件的结束位置,如图可知是1969
注意这个MASTER_LOG_POS在文件的最上面,用PgUp翻到最上面即可。
然后查询mysql-bin.000011这个binlog文件,直接vim查看的话会乱码,所以我们把文件以明文的形式(-vv)输出到另一个test.binlog文件
/www/server/mysql/bin/mysqlbinlog mysql-bin.000011 -vv > test.binlog
如果提示unknown variable 'default-character-set=utf8'.错误,则需要在mysqlbinlog 后面加上--no-defaults参数
然后再vim查看就不乱码了,由图可知truncate操作的位置在902120
然后执行恢复操作
/www/server/mysql/bin/mysqlbinlog --start-position=1969 --stop-position=902120 /www/server/data/mysql-bin.000011 | mysql -uroot -p
这样就完成了数据的恢复
当当,是不是还挺简单的,各位道友实操起来若有参差欢迎给小道留言~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了