恢复mysql数据库误删数据
2019-03-28 15:03
639 查看
前言
某一天,天朗气清;突然传来消息:数据库被删库了!这简直不亚于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数据库下误删的数据
- 注.NET技术 恢复误删数据(SQL Server 2000)--Log Explorer过程
- oracle如何恢复误删数据
- 恢复oracle 中误删的表 或delete 删掉的数据恢复
- MySQL数据库InnoDB引擎下服务器断电数据恢复
- 误删Oracle数据文件的恢复方法
- oracle数据被误删或更新的恢复方法
- Oracle笔记之 利用快照的方式恢复误删数据
- MySql恢复误删的表或数据(不完全恢复)
- 误删 oracle 数据文件的恢复
- 重要的表格数据误删了,用EasyRecovery快速恢复!
- 恢复误删数据(SQL Server 2000)--Log Explorer
- 用mysqldump对MySQL数据库进行数据备份与恢复
- MySQL数据库增量数据恢复案例
- delete误删数据使用SCN恢复
- ext2文件系统下rm-rf * 误删数据恢复
- ext3下删除mysql数据库的数据恢复案例数据库
- 移动硬盘上的数据误删了怎么恢复回来?
- ApexSQLLog恢复误删数据
- oracle恢复表中误删的数据