本文针对当不小心误删除数据库后,如何进行恢复做个小记录。
前提条件
开启binlog日志
演示过程
测试环境准备
Windows server 2008 R2
Mysql数据库 (5.5.53)
查看binlog是否开启
1、配置文件配置
在my.ini主配置文件中添加如下三行:
<strong>linux机器中:</strong>
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需要唯一
<strong>Windows机器中</strong>:
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;

创建和删除数据库
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; #删除数据库 dorp datebase test123;
恢复数据库
执行语句:show master status;命令,找到当前mysql记录的binlog文件

执行语句:show binlog enents in ‘mysql-bin.000001’;查看binlog日志

执行mysqlbinlog –no-defaults mysql-bin.000001 >001bin.sql命令,将binlog文件导出为001bin.sql文件。(需要安装)
从此文件中可以看出创建数据库、创建表、设计表、添加表数据,删除数据的所有SQL语句。重新执行这些语句就能恢复。
小结
此方式适用于误删除数据库,且存在于binlog的情况,原理相当于重新执行一遍添加库、添加表语句。