首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用mysql二进制日志从drop database命令恢复?

在MySQL中,二进制日志(Binary Log)是一种记录数据库更改的方式,可以用于恢复数据库。当执行DROP DATABASE命令时,数据库中的所有数据和表都将被删除,因此需要通过二进制日志进行恢复。

以下是恢复数据库的步骤:

  1. 停止MySQL服务器。
  2. 使用mysqlbinlog工具从二进制日志中提取DROP DATABASE命令之前的所有更改。
  3. 将提取的数据导入到新的数据库中。
  4. 重新启动MySQL服务器。

具体步骤如下:

  1. 停止MySQL服务器。

在Linux系统中,可以使用以下命令停止MySQL服务器:

代码语言:txt
复制
sudo systemctl stop mysqld
  1. 使用mysqlbinlog工具从二进制日志中提取数据。

首先,找到二进制日志的文件名和位置,可以使用以下命令查看:

代码语言:txt
复制
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'datadir';

然后,使用mysqlbinlog工具从二进制日志中提取数据,例如:

代码语言:txt
复制
mysqlbinlog --start-datetime="2022-01-01 00:00:00" --stop-datetime="2022-01-01 03:00:00" /path/to/binlog-file > restore.sql

其中,start-datetimestop-datetime参数指定提取的时间范围,binlog-file参数指定二进制日志文件的路径,restore.sql参数指定输出的SQL文件。

  1. 将提取的数据导入到新的数据库中。

首先,创建一个新的数据库,然后使用以下命令导入提取的数据:

代码语言:txt
复制
mysql -u username -p new_database< restore.sql

其中,username参数指定MySQL用户名,new_database参数指定新的数据库名,restore.sql参数指定之前提取的SQL文件。

  1. 重新启动MySQL服务器。

在Linux系统中,可以使用以下命令重新启动MySQL服务器:

代码语言:txt
复制
sudo systemctl start mysqld

完成以上步骤后,数据库应该已经成功恢复。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql数据恢复

二进制有两个最重要的使用场景:      其一:MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的...(清空)所有binlog日志       mysql> reset master; 四、查看某个binlog日志内容,常用有两种方式:     1.使用mysqlbinlog自带查看命令法:      ...注: binlog是二进制文件,普通文件查看器cat more vi等都无法打开,必须使用自带的 mysqlbinlog 命令查看           binlog日志与数据库文件在同目录中(我的环境配置安装是选择在...就得从前文提到的 mysql-bin.000023 新日志做文章了......     6.binlog日志恢复数据       恢复语法格式:       # mysqlbinlog mysql-bin...这些命令、文件尽量写成绝对路径;       A.完全恢复(本例不靠谱,因为最后那条 drop database zyyshop 也在日志里,必须想办法把这条破坏语句排除掉,做部分恢复)

2.8K30

如何删库跑路?教你使用Binlog日志恢复误删的MySQL数据

开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到: MySQL的binlog日志是什么?通常是用来干什么的?...所以说,想要能够恢复数据,首先,你得打开Mysql的binlog,在平常你自己安装的单机Mysql中,默认情况下不会开启。下面就一步步地实践下如何开启你服务器上的Binlog日志。...参数描述: --start-datetime:二进制日志中读取指定等于时间戳或者晚于本地计算机的时间 --stop-datetime:二进制日志中读取指定小于时间戳或者等于本地计算机的时间 取值和上述一样...--start-position:二进制日志中读取指定position 事件位置作为开始。...--stop-position:二进制日志中读取指定position 事件位置作为事件截至 执行成功后,再次查看表table1,可以看到两条新的id=3和4的数据被插入了进来。恢复成功了。

2.1K10
  • MySQL8.0新特性之原子DDL语句

    要避免此故障情形,请在DROP TABLE语句中使用IF EXISTS语法以防止对不存在的表发生错误 3.2、DROP DATABASE: 如果所有表都使用原子DDL支持的存储引擎,则为atomic。...但是,文件系统中删除数据库目录是最后一次,并且不是原子事务的一部分。如果由于文件系统错误或服务器暂停而导致数据库目录的删除失败, DROP DATABASE则不会回滚事务。...3.3、对于不使用原子DDL支持的存储引擎的表,表删除发生在原子 DROP TABLE或 DROP DATABASE事务之外。...这样的表删除被单独写入二进制日志,这在中断DROP TABLE或 DROP DATABASE操作的情况下将存储引擎,数据字典和二进制日志之间的差异限制为最多一个表 。...要避免此故障情形,请在创建用户的命令使用IF EXISTS或 IF NOT EXISTS语法,以防止与命名用户相关的错误。

    74820

    Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

    --stop-datetime:二进制日志中读取指定小于时间戳或者等于本地计算机的时间 取值和上述一样 --start-position:二进制日志中读取指定position 事件位置作为开始。...binlog日志有两个最重要的使用场景: 1)MySQL主从复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves来达到 master-slave...: 1)使用mysqlbinlog自带查看命令法: 注意: -->binlog是二进制文件,普通文件查看器cat、more、vim等都无法打开,必须使用自带的mysqlbinlog命令查看 -->binlog...mysql-bin.000002 mysql-bin.index mysql.sock ops test 使用mysqlbinlog命令查看binlog日志内容,下面截取其中的一个片段分析:...8) binlog日志恢复数据 恢复命令的语法格式: mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名 --------------------

    2.7K80

    MySQL数据库备份与恢复

    接下来我们了解一下如何MySQL数据库的备份与恢复。...因为使用范围很小,这里认识即可,不多做介绍。 3)通过启动二进制日志进行增量备份 MySQL支持增量备份,进行增量备份时必须启用二进制日志。...’ 二进制日志 |mysql -u 用户名 -p 密码 2.指定位置开始恢复数据,命令格式: mysqlbinlog --start-position=’操作 id’ 二进制日志 |mysql -u...秒’ 二进制日志 | mysql -u 用户名 -p 密码 2.某个时间点到日志结尾的恢复命令格式: mysqlbinlog [--no-defaults] --start-datetime=’年-...月-日 小时:分钟:秒’ 二进制日志 | mysql -u 用户名 -p 密码 3.某个时间点到某个时间点的恢复命令格式: mysqlbinlog [--no-defaults] --start-datetime

    3.4K30

    Mysql-12-mysql的备份和恢复

    ) ④回到服务器端 mysql> show master status;显示此时的二进制日志的位置,备份文件里边记录的位置到我们此时的位置即为增量的部分。...mysql> drop database hellodb; ⑦导出这次二进制日志 [root@cai backup]# mysqlbinlog --start-position=394 /application...=0;关闭二进制日志 mysql>flush logs;滚动下日志 ⑨模拟数据库破坏 mysql>drop database hellodb; ⑩开始恢复数据 #mysql </backup/hellodb...(2在导出二进制日志的时候,可以直接复制文件即可,但是要注意的是,备份之前滚动下日志。 (3利用LVM快照实现几乎热备的数据备份与恢复。...xtrabackup_binlog_info:mysql服务器当前正在使用二进制文件及备份这一刻为止的二进制日志事件的位置。

    1.5K51

    mysql备份命令_mysql命令行备份方法

    文件名.sql mysqldump -h *.*.*.* -p 3306 -u username -p password –add-drop-table –add-drop-database mysql...| mysql –host=*.*.*.* -C database 11、–master-data 和–single-transaction 在mysqldump中使用–master-data=2,会记录...13、查看binlog日志 查看binlog日志可用命令 mysqlbinlog binlog日志名称|more 14、general_log General_log记录数据库的任何操作,查看general_log...这时将会产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了全备过后的所有更改,既增加记录的操作也保存在了bin-log.00002中。...三、恢复 1、首先导入全备数据 # 也可以直接在mysql命令行下面用source导入 mysql-h *.*.*.* -u username -p passward -p 3310 < test.sql

    10.4K20

    MySQL备份与恢复详述

    --查看一班学生成绩表中所有数据--> 2、物理冷备份与恢复 物理冷备份一般用tar命令直接打包数据库文件夹,而在进行备份之前需要使用“systemctl stop mysqld”命令关闭mysql服务...--启动mysql服务--> 3、mysqldump备份与恢复 通过mysqldump命令可以将指定的库、表或全部的库导出为SQL脚本,便于该命令在不同版本的MySQL服务器上使用。...二进制日志在启动MySQL服务器后开始记录,并在文件达到二进制日志所设置的最大值或者接收到flush logs命令后重新创建新的日志文件,生成二进制文件序列,并及时把这些日志保存到安全的存储位置,即可完成一个时间段的增量备份...这时所恢复的数据是指定位置开始直到二进制日志文件的最后。...基于时间点恢复数据所使用的选项是“--stop-datetime”,指定的时间同样也是查询二进制日志所得。

    2.4K10

    听说Mysql你很豪横?-------------呕心沥血深入解析mysql备份与恢复!!!

    2、物理与逻辑的角度,如何分类备份?...使用 mysqldump命令导出的SQL备份脚本,在进行数据恢复时可使用以下方法导入 source命令 mysql命令 2、使用source命令恢复数据库 使用 source恢复数据库的步骤 登录到...--stop-position='操作id' 二进制日志 |mysql -u 用户名 -p 密码 指定的位置开始恢复数据 mysqlbinlog --start-position='操作id' 二进制日志...|mysql -u 用户名 -p 密码 (4)基于时间点恢复 使用基于时间点的恢复,可能会出现在一个时间点里既同时存在正确的操作又存在错误的操作,所以我们需要一种更为精确的恢复方式 日志开头截止到某个时间点的恢复...mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小时:分钟:秒' 二进制日志 |mysql -u 用户名 -p 密码 某个时间点到日志结尾的恢复

    65620

    03 . MysSQL权限和备份

    特点: 逻辑备份工具,支持InnoDB热备份,MyISAM温备份:备份与恢复较慢 2.使用LVM逻辑卷快照功能实现几乎热备份的完全备份,并结合二进制日志实现增量备份....=930 生成新bin-log日志文件 # 方法一: 在mysql中执行刷新日志命令 mysql> flush logs; # 方法二: 在命令行执行刷新日志命令(可用于编写计划任务) [root...(2)xtrabackup_binlog_info # mysql 服务器当前正在使用二进制日志文件及至备份这一刻为止二进制日志时间的位置。...(5)xtrabackup_logfile # xtrabackup记录innodb事务日志的信息,二进制文件,不能直接看 接下来我们模拟误删库 mysql> drop database...> drop database youmen; mysql> drop database db; # 模拟宕机 systemctl stop mysqld # 数据丢失 rm -rf /var/lib

    77450

    第八章· MySQL日志管理

    binlog的作用: 1)如果我拥有数据库搭建开始所有的二进制日志,那么我可以把数据恢复到任意时刻 2)数据的备份恢复 3)数据的复制 二进制日志的管理操作实战 开启方式 [root@db01 data...2)所谓的位置就是event对整个二进制的文件的相对位置。 3)对于一个二进制日志中,前120个position是文件格式信息预留空间。 4)MySQL第一个记录的事件,都是120开始的。...row模式下二进制日志分析及数据恢复 #查看binlog信息 mysql> show master status; #创建一个binlog库 mysql> create database binlog;...from binlog_table; #删表 mysql> drop table binlog_table; #删库 mysql> drop database binlog; ---- 工作中做完以上操作...1)可以用备份恢复+短时间内二进制日志恢复到故障之前 2)非官方方法,binlog2sql,binlog取反,类似于Oracle的flushback 3)延时库 如果同一时间内和故障库无关的数据库都有操作

    68220

    mysql8.0原子ddl特性

    若要避免此失败情况,请在DROP TABLE语句中使用IF EXISTS语法,以防止不存在的表发生错误。 ●如果所有表都使用原子DDL支持的存储引擎,则DROP DATABASE是原子的。...但是,最后一次文件系统中删除数据库目录不是原子事务的一部分。如果由于文件系统错误或服务器停止而导致数据库目录删除失败,则不会回滚DROP DATABASE事务。...●对于不使用原子DDL支持的存储引擎的表,表删除发生在原子DROP TABLE或DROP DATABASE事务之外。...此类表删除操作将分别写入二进制日志,这在DROP TABLE或DROP DATABASE操作中断的情况下,最多将存储引擎,数据字典和二进制日志之间的差异限制为一个表。...在早期的MySQL版本中,这些操作的中断可能会导致存储引擎,数据字典和二进制日志之间出现差异,或者留下孤立的文件。仅当所有表都使用原子DDL支持的存储引擎时,RENAME TABLE操作才是原子的。

    98030

    MySQL基于日志还原数据

    简介 Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基于...> drop database mydb; 3.查看二进制日志信息 mysql> show master status\G; *************************** 1. row ***...> /tmp/binlog.sql 5.恢复数据 #临时关闭二进制日志记录以免重复记录 mysql> set sql_log_bin=0; #恢复数据 mysql> source /tmp/binlog.sql...#重启二进制日志记录 mysql> set sql_log_bin=1; 6.查看数据恢复情况 mysql> show databases; +--------------------+ | Database...> drop database mydb1; 3.查看二进制日志信息 mysql> show master status\G; *************************** 1. row **

    46910

    MySQL通过 bin-log 恢复备份点到灾难点之间数据

    今天分享一期 mysql中 备份之后发生灾难造成数据丢失 那么如何恢复中间的数据呢? 数据库数据高于一切(任何数据是不能丢失的) 目录 1.准备测试数据库 2.备份数据库 观察备份细节 3....普遍所使用的工具来备份mysql 但是都只能恢复备份之前数据 本期试验所使用的工具和文件:mysqldump+binlog 二进制文件 1.准备测试数据库 mysql> create database...> drop table t1; 删除表 Query OK, 0 rows affected (0.00 sec) mysql> drop database test; 删除整个数据库test...(模拟备份点到灾难点的数据)这些数据如何恢复?...-p" " 192-bin.000002 还原备份之后的二进制 有多少个二进制跟多少个二进制(只要是备份后的二进制都行) --start-position=154 开始还原 154这一行开始

    21910

    MySQL 备份与恢复详解

    表示在使用–databases或者是–all-databases参数时在每个create database命令前都加上drop database命令 –add-drop-table表示在每个create...table命令前加上drop table命令 –add-drop-trigger表示在每个create trigger命令前加上drop trigger命令 –replace表示使用replace命令插入数据而不是使用...,通常是先通过全量恢复的方式先将数据库恢复到上一个全量 恢复的时间点,然后再利用二进制日志恢复到指定的时间点 Mysqlbinlog工具可以用来解析二进制日志的内容,让日志可以被执行或者是查看 在数据库中重新执行某个二进制日志文件中的内容...logs的时候alter table 插入a,b的那次数据的二进制日志文件  恢复第一个二进制日志文件:插入a,b 1 2 3 4 5 6 7 mysql> truncate table students...; ##先删除表里的全部数据   mysql> desc students; 恢复第一个二进制日志文件:插入a,b 可以通过mysqlbinlog 查询一下二进制文件看看里面的具体内容   [root@

    1.2K10

    MySQL 之数据备份及恢复

    MySQL备份一般采用全库备份加日志备份的方式,根据业务的需要,可以采用每周日凌晨1点进行完全备份以及每小时进行一次增量备份,这样在MySQL故障后可以使用完全备份和日志备份尽可能的去恢复最完整的数据。...一、binlog日志恢复 MySQL二进制日志记录着该数据库所有增删改的操作日志(前提是需要自己开启binlog),还包括了这些操作的执行时间,binlog的使用场景无外乎就是主从同步以及恢复数据库。...其他命令: show master logs:也是查看二进制日志文件; PURGE BINARY LOGS:用于删除二进制文件; ....7、通过二进制日志恢复数据 假设在开始删除lisi记录的那条sql语句是误操作,现在要通过二进制日志恢复数据。...3)删除数据库 mysql> drop database test1; 4)利用binlog恢复数据 [root@mysql data]# mysql -uroot -p123 < /tmp/01.sql

    89840

    mysql 中的备份恢复、分区分表、主从复制、读写分离

    mysql -uroot -p 数据库 < sql文件 # 然后查看备份的sql文件的 CHANGE MASTER 值,基于该值进行二进制日志的还原 CHANGE MASTER TO MASTER_LOG_FILE...='binlog.000007', MASTER_LOG_POS=154; # 查看二进制日志,根据时间点找到误操作前一段时间的二进制日志 cd /var/lib/mysql mysqlbinlog...| more # 记录最早删除记录的节点值,执行日志导出 mysqlbinlog --start-position=开始节点 --stop-position=结束节点 --database=数据库 二进制日志名...--parallel=2 /home/db_backup/ # 全量恢复,建议恢复前停止mysql服务,且清空mysql数据文件 innobackupex --datadir=mysql数据路径 --...'; 配置mysql服务器 主服务器已经配置成功,这时要切换到服务器开始配置 在从服务器中开启 binlog 日志和设置要发生主从同步数据库,使用 vim 打开 /etc/my.cnf 文件,修改配置如下

    3.3K52

    Centos7实现MySQL基于日志还原数据的示例代码

    简介 Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基于...| 10 | +------+ 4 rows in set (0.00 sec) mysql> drop database mydb; 查看二进制日志信息 mysql> show master status...> /tmp/binlog.sql 恢复数据 #临时关闭二进制日志记录以免重复记录 mysql> set sql_log_bin=0; #恢复数据 mysql> source /tmp/binlog.sql...#重启二进制日志记录 mysql> set sql_log_bin=1; 查看数据恢复情况 mysql> show databases; +--------------------+ | Database...> drop database mydb1; 查看二进制日志信息 mysql> show master status\G; *************************** 1. row ****

    33741

    Mysql资料 Binlog(下)

    三.查看binlog日志 使用mysqlbinlog自带查看命令法 注意: –>binlog是二进制文件,普通文件查看器cat、more、vim等都无法打开,必须使用自带的mysqlbinlog命令查看...–>binlog日志与数据库文件在同目录中 –>在MySQL5.5以下版本使用mysqlbinlog命令时如果报错,就加上 “–no-defaults”选项 查看 mysqlbinlog mysql-bin...可以看到104条是删除,那就恢复到103条的。当前看到的是日志区间。 以下命令进行恢复,stop-position是指定恢复截止的pos点。...实际是将读出的binlog日志内容,通过管道符传递给mysql命令。...,可以只恢复单个数据库而不是所有: `mysqlbinlog mysql-bin.000015 –database=数据库A | mysql -uroot -p’123456 数据库A’ 五.命令参数

    1.6K10
    领券