恢复mysql数据库误删数据
前言
某一天,天朗气清;突然传来消息:数据库被删库了!这简直不亚于8级大地震呀;一找原因,服务器宕机造成了数据库数据丢失。于是,通过日志恢复数据的救援开始了。
正文
在数据库开启binlog功能
找到/etc/my.cnf并编辑(没有my.cnf的时候就找my.ini);添加
log-bin=mysql-bin
expire_logs_days=7(日志保留天数)
然后重启mysql
注意:log_bin是生成的bin-log的文件名,后缀则是6位数字的自增编码,从000001开始:
mysql_bin.000001
mysql_bin.000002
......
操作日志
1、查看日志文件:
mysql> show master logs;
+------------------+--------------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 120 |
| mysql-bin.000002 | 4249 |
| mysql-bin.000003 | 1110 |
+------------------+--------------+
2、查看最后一个binlog日志的编号名称(就是最后一个操作事件的值):
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 1110 | | | |
+------------------+----------+--------------+------------------+-------------------+
3、产生一个新的日志文件
mysql> flush logs;
Query OK, 0 rows affected (0.01 sec)
mysql> show master status;
+--------------+---------------+
| Log_name | File_size |
+--------------+---------------+
| mysql-bin.000004 | 106 |
+-----------------+------------+
4 rows in set (0.01 sec)
4、删除所有binlog日志,重新记录
mysql> reset master;
Query OK, 0 rows affected (0.01 sec)
mysql> show master status;
+--------------+---------------+
| Log_name | File_size |
+--------------+---------------+
| mysql-bin.000001 | 106 |
+-----------------+------------+
1 rows in set (0.01 sec)
恢复数据
恢复数据的方式有很多种,可以根据自己具体的情况来选择用哪种。
1、如果想全部恢复,先执行之前的备份恢复,再执行自备份后产生的二进制日志文件
mysql localhost mysql-bin.000001 | mysql -uroot -p( 这样数据库就可以恢复到删除数据前的状态)
2、根据时间点来恢复,如果确认被删的时间点为2019-03-25 09:00:00,那么就可以如下
mysqlbinlog --stop-date='2019-03-25 8:59:59' mysql-bin.000001 | mysql -uroot -p 然后跳过数据被删的时间点,继续执行后面的binlog # mysqlbinlog --start-date='2019-03-25 09:01:00' mysql-bin.000001 | mysql -uroot -p
其中--stop-date='2019-03-25 08:59:59' 和--start-date='2019-03-25 09:01:00'
3、如果知道两个时间点,就按如下操作
mysqlbinlog --start-datetime="2019-03-25 10:30:30" --stop-datetime="2019-03-25 11:10:10" mysql-bin.000001 | mysql -u root -p
4、通过查看日志文件信息确认(假如操作点为6200-6300)
mysqlbinlog --stop-position=6200 mysql-bin.000001 | mysql -uroot -p
mysqlbinlog --start-position=6300 mysql-bin.000001 | mysql -uroot -p
注意
因为mysql的binlog是二进制文件,一定要用mysqlbinlog命令才可以操作。
> 举例,导出sql文件:# mysqlbinlog mysql-bin.000001 >test.sql
后续
通过这一次经历,知道了以后一定要做好数据库的备份;这很重要!
恢复mysql数据库误删数据的更多相关文章
- 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...
- 烂泥:通过binlog恢复mysql数据库
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用bin ...
- MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库【转载】
转自 MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库 - _安静 - 博客园http://www.cnblogs.com/xionghui/archive/2012/ ...
- 电脑重装系统后如何恢复Mysql数据库
电脑重装系统后如何恢复Mysql数据库 一.[设置mysql的path]
- CentOS6 更改Mysql数据库的数据存放位置
mysql使用yum安装时,默认的数据是存储在/var/lib/mysql下.一般情况下,为了数据的安全性,建议将mysql数据库的数据文件存储在系统的第二块磁盘上的目录下可以按照以下步骤进行操作: ...
- mysql数据库delete数据时不支持表别名
今天在帮同事查看一条删除的SQL语句执行出错的问题 SQL语句如下: 1 DELETE FROM LEAD_SYSTEM_MENU_ORG_REF as t WHERE t.resourceid='4 ...
- 转】mysql数据库delete数据时不支持表别名
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4012853.html 感谢! 今天在帮同事查看一条删除的SQL语句执行出错的问题 SQL语句如下: 1 DELE ...
- SQLServer数据库误删数据找回
记一次SQLServer数据库误删数据找回 昨天 同事在本机清理数据库表时,连接到了生产机,误删了二十几张表,幸好是晚上加班的时候删除的,生产机上当时是一天一备份,还原备份是最后的策略,最关键的还是要 ...
- 使用python将mysql数据库的数据转换为json数据
由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...
随机推荐
- centos7 mysql5.7.17源码安装
**安装前准备 操作系统环境:Centos 7.2 1.解决依赖包并下载源码包至/home/soft/目录下 1 2 3 4 5 6 7 [root@node03 ~]# yum -y install ...
- JS中client/offset/scroll等的宽高解析
原文地址:→传送门 window相关宽高属性 1. window.outerHeight (窗口的外层的高度) / window.outerWidth (窗口的外层的宽度) window.outerH ...
- unZip/Zip的安装
1.apt-get安装: apt-get install zip 2.yum安装: yum install -y unzip zip
- 关于Cookie跨域的问题研究
Cookie是一个伟大的发明,它允许Web开发者保留他们的用户的登录状态.但是当你的站点有一个以上的域名时就会出现问题了.在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名 ...
- ASP.Net中表单POST到其他页面的方法
在ASP中,我们通常把表单提交到另外一个页面(接受数据页面).但是在ASP.NET中,服务端表单通常都是提交到本页面的,如果我设置 form1.action="test.aspx" ...
- 【leetcode 简单】第二题 反转整数
给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假 ...
- 如何关闭sublime更新提示
前提:sublime已激活
- JS设计模式——5.单体模式(用了这么久,竟全然不知!)
单体模式的优势 用了这么久的单体模式,竟全然不知!用它具体有哪些好处呢? 1.可以用它来划分命名空间(这个就是就是经常用的了) 2.利用分支技术来封装浏览器之间的差异(这个还真没用过,挺新鲜) 3.借 ...
- jsoup抓取网页报错UnsupportedMimeTypeException
今天在用Jsoup爬虫的时候两次遇到下面错误 Exception in thread "main" org.jsoup.UnsupportedMimeTypeException: ...
- mysql开启GTID跳过错误的方法【转】
1.数据库版本 MySQL> select version() -> ;+-------------------------------------------+| version( ...