目录
前言
本文针对当不小心误删除数据库后,如何进行恢复做个小记录。
前提条件
开启binlog日志
演示过程
1、测试环境准备
Windows server 2008 R2
Mysql数据库 (5.5.53)
2、查看Binlog是否开启
(1)配置文件配置
在my.ini主配置文件中添加如下三行:
linux机器中:
log_bin=ON #打开binlog日志
log_bin_basename=/var/lib/mysql/mysql-bin #binlog日志基本文件名,后面会追加标识来表示每一个文件
log_bin_index=/var/lib/mysql/mysql-bin.index #指定binlog文件的索引文件,这个文件管理了所有的binlog文件的目录
server-id=12345 #5.7及以上版本需要配置,存在集群的话id需要唯一
Windows机器中:
log-bin=mysql-bin
binlog-format=Row
配置完毕后重启服务
(2)查看是否开启
#查看日志开启状态 show variables like 'log_%'; #查看所有binlog日志列表 show master logs; #查看最新一个binlog日志的编号名称,及其最后一个操作事件结束点 show master status; #刷新log日志,立刻产生一个新编号的binlog日志文件,跟重启一个效果 flush logs; #清空所有binlog日志 reset master;
3、创建和删除数据库
create database test123; //创建数据库 #创建表 CREATE TABLE IF NOT EXISTS `test123`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; #删除数据库 drop database test123;
4、恢复数据库
(1)执行语句:show master status;命令,找到当前mysql记录的binlog文件
(2)执行语句:show binlog events in ‘mysql-bin.000001’;查看binlog日志
(3)进入data文件夹:执行:mysqlbinlog --no-defaults mysql-bin.000001 >0001bin.sql 命令,将binlog文件导出为001bin.sql文件。(需要安装)
从此文件中可以看出创建数据库、创建表、设计表、添加表数据,删除数据的所有SQL语句。重新执行这些语句就能恢复。
小结
此方式适用于误删除数据库,且存在于binlog的情况,原理相当于重新执行一遍添加库、添加表语句。