详解:如何恢复MySQL数据库下误删的数据
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,2017-03-27 09:25 阅读 178 评论 0作者:马哥Linux运维-Robin血的教训,事发经过就不详述了。直接上操作步骤及恢复思路(友情提示:数据库的任何操作都要提前做好备份),以下是
千家信息网最后更新 2025年02月02日详解:如何恢复MySQL数据库下误删的数据2017-03-27 09:25 阅读 178 评论 0
2017-03-27 09:25 阅读 178 评论 0
作者:马哥Linux运维-Robin
血的教训,事发经过就不详述了。直接上操作步骤及恢复思路(友情提示:数据库的任何操作都要提前做好备份),以下是Mysql数据后的恢复过程:
1. 找到binlog
恢复数据的前提是必须开启Mysql的binlog日志,如果binlog日志没开启,请忽略此篇文档。binlog日志是否开启可以查看Mysql配置文件。日志位置一般在/var/lib/mysql
目录或者编译安装的date
目录下。也可登录Mysql用命令查看。
# cat /etc/my.cnflog_bin=mysql-bin# mysql -uroot -pEnter password:mysql> show variables like'log_bin%';+---------------------------------+--------------------------------------------------+| Variable_name | Value |+---------------------------------+--------------------------------------------------+| log_bin | ON || log_bin_basename | /home/programs/mysql-5.6.26/data/mysql-bin || log_bin_index | /home/programs/mysql-5.6.26/data/mysql-bin.index || log_bin_trust_function_creators | OFF || log_bin_use_v1_row_events | OFF |+---------------------------------+--------------------------------------------------+5 rows in set (0.00 sec)# ll /home/programs/mysql-5.6.26/data/mysql-bin*-rw-rw---- 1 mysql mysql 343629748 Oct 13 22:09 /home/programs/mysql-5.6.26/data/mysql-bin.000001-rw-rw---- 1 mysql mysql 19 Sep 23 17:11 /home/programs/mysql-5.6.26/data/mysql-bin.index
如果有多个binlog日志也可以在Mysql命令行下查看当前binlog、切割binlog日志。切割完成binlog再次查看就会看到新的日志写入到新的binlog文件中。
mysql> show master status;+------------------+-----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+-----------+--------------+------------------+-------------------+| mysql-bin.000001 | 343629748 | | | |+------------------+-----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> flush logs;Query OK, 0 rows affected (0.01 sec)
2. 找到binlog中错误的语句
可以binlog日志中找到错误语句执行的时间点,分别恢复错误语句前后的binlog日志为sql。也可以跳过此步,直接恢复整个binlog日志为sql,然后打开sql文件,删除错误语句。
# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids mysql-bin.000001 | grep --ignore-case -A3 -B4 '错误的sql语句'
3. 恢复binlog日志
通过mysqlbinlog
命令直接恢复binlog日志为sql脚本,可以指定开始和结束时间。如果从上次备份(建议备份的同时刷新binlog日志)截至到恢复时间产生多个binlog日志,按从小到大的顺序分别导出成sql再顺序导入到数据库。
# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids --start-datetime '2016-10-11 15:22:53' mysql-bin.000001 > /home/stack/data.sql
上面命令中用-d ids
指定要恢复数据库,如果要恢复表级别的数据,导出成sql后再进行过滤grep即可。
# more data.sql | grep --ignore-case -E 'insert|update|delete' | grep table
4. 恢复到数据库
恢复数据时,可能会有重复数据的报错,建议用-f
参数忽略。
# mysql -uroot -p -f ids < data.sql
日志
数据
语句
错误
数据库
命令
备份
文件
时间
多个
建议
目录
顺序
从小到大
中用
从小
位置
作者
再次
前提
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界电脑联机服务器地址
软件产品网络安全管理程序
统计帖子浏览量数据库设计
网络安全模式能用wifi吗
向服务器发送请求报文不包括
私人电脑如何配置网络服务器
华服互联网科技冯华洲
公安网络安全宣讲活动
以太网服务器安装教程
提问服务器管理与维护
西安戴尔服务器
互联网科技大佬学历
文通科技互联网大会
网络安全小卫士手抄报 简单
透视新科技卫星互联网
杭州乐兑网络安全吗
ss服务器负载均衡
中国电科第四届网络安全大赛
网络安全法几章多少条大约多少字
大型餐厅点餐服务器价格
插入变量到数据库
南京伺服控制软件开发工程师
软件开发体系 iso
谁发挥网络安全基础性作用
常见青少年网络安全知识讲座
亚马逊分析软件开发
澳门市网络安全法
江苏前端软件开发大概多少钱
数据库插入一张图片
贝哆蜂软件开发