大柚子

这世界不过如此

本文针对当不小心误删除数据库后,如何进行恢复做个小记录。

前提条件

开启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的情况,原理相当于重新执行一遍添加库、添加表语句。

Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。