mysql8.x通过备份文件及binlog日志恢复数据
问题简述
记一次mysql数据库被误删(是整个库被删了)后的还原
前提条件
- 数据库版本为
mysql8.x
以上 - 具有库被删除前的完整备份
- 数据库开启binlog
还原步骤
第一步:通过完整备份还原被删的库
注意事项:还原后切勿让其他用户连接,操作数据库。待使用binlog日志恢复数据后再对库进行操作,否则可能会丢失数据
第二步:查找日志位于哪个文件
进入binlog日志所在目录,根据最近修改时间,大致判断需要还原的位置处于哪个日志文件,因为我们在每日凌晨1点有做全量备份,所以对应找到00:25到当前时间所在的那份日志mysql-bin.000335
第三步:查看数据被破坏时间点
通过第二步找到的binlog日志文件,我们可以将其转为SQL文件查看(PS:直接用notepad打开会乱码),或者使用专有工具打开,此处将其转为SQL文件
/usr/bin/mysqlbinlog /var/lib/mysql/mysql-bin.000335 > /var/lib/mysql/mysql-bin.000335.sql
通过搜索drop
关键字查看破坏数据的时间点在2022-09-29 10:21:24
,我们选择将数据还原到2022-09-29 10:20:59
第四步:还原数据
还原前还需要大致确定我们需要还原的时间范围,此处我们选择还原2022-09-29 08:00:00
到2022-09-29 10:20:59
之间的数据,可以使用以下命令
#还原指定数据库 /usr/bin/mysqlbinlog --database=istrong_portal --start-datetime="2022-09-29 08:00:00" --stop-datetime="2022-09-29 10:20:59" /var/lib/mysql/mysql-bin.000335 | mysql -h127.0.0.1 -uroot -pPWDxxxxx #还原所有数据库 /usr/bin/mysqlbinlog --start-datetime="2022-09-29 08:00:00" --stop-datetime="2022-09-29 10:20:59" /var/lib/mysql/mysql-bin.000335 | mysql -h127.0.0.1 -uroot -pPWDxxxxx
注意事项
1、建议还原的时候停止系统,或者切断系统与数据库的连接,否则可能会出现系统日志实时写入库中,还原时报记录不一致错误
2、还原时需要找准对应的时间起止点,否则还原会出现数据不一致,还原的结果不是想要的情况
吾乃代码搬运工,侵联删
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」