MySQL 数据恢复 全备份恢复以及增量恢复 (以手残删库为例)

数据恢复原理图

测试环境 MySQL5.5

1 首先新建数据库 lampol  数据表 test

create database lampol;

use lampol;

create table test (id int(10),name varchar(10));

2 插入数据信息

insert into test values(1,‘lampol1‘);
insert into test values(2,‘lampol2‘);

3 插入后的信息

mysql> select * from lampol.test;
+------+---------+
| id   | name    |
+------+---------+
|    1 | lampol1 |
|    2 | lampol2 |
+------+---------+

4 开始模拟凌晨的全备份

mysqldump -uroot -proot --flush-logs --single-transaction --master-data=2  lampol > /shell/test.sql

(1)--flush-logs 刷新切割日志  方便以后恢复增量binlog

(2)--single-transaction InnoDB的存储引擎  MyISAM --lock-all-tables (锁表)

(3)--master-data=2 记录备份的位置binlog日志 及pos

全量备份成功 记录msyql-bin日志 和位置

5 备份之后开始继续插入数据  这些数据不在全备里面

insert into test values(3,‘lampol3‘);
insert into test values(4,‘lampol4‘);

6执行drop database lampol;

数据库被删除之后

开始恢复

1 首先停止对外访问;停掉web服务器即可 开始准备恢复

flush logs  刷新binlog日志 否则后期导入的全量可能会写进binlog影响恢复

2 开始恢复全量备份  创建删除的数据库

mysql -uroot -proot lampol<test.sql

全量已经被恢复到数据库了;后来插入的只能用增量来恢复。

3 增量binlog恢复 进test.sql 找到binlog位置

取出binlog 转化成sql语句  mysqlbinlog mysql-bin.000012 > /shell/bin.sql

进入bin.sql  找到 drop database lampol;这一句 删除此句

把bin.sql导入到数据库

mysql -uroot -proot lampol<bin.sql

恢复成功  还有很多不足之处 以后在慢慢完善

时间: 2024-12-14 04:21:40

MySQL 数据恢复 全备份恢复以及增量恢复 (以手残删库为例)的相关文章

mysql数据库的备份和二进制日志恢复

mysql备份和bin-log日志 备份数据: mysqldimp -uroot -p  test -l -F '/tmp/test.sql' -l 读锁 -F即flush logs, 可以重新生成的日志文件,当然包括log-bin日志. 查看bin-log日志用 mysql>show master status; 清空表数据 truncate tables; 根据二进制bin-log日志恢复 查看bin-log日志 mysqlbinlog --no-defaults mysql-bin.000

服务器上的Mysql表全丢了情况下恢复数据

任务: web项目是在linux的Tomcat部署,Mysql也在上面,不知明原因下数据库宕机,启动不了,数据库表也突然没了,全空了!!!!!!!! mysql安装目录 惊喜的发现var/目录下有类似丢失数据库的表 接下来就是怎么恢复进去了,首先我们用的是mysql的InnoDb引擎,找了下其资料: 两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用. 我作为使用MySQL的用户角度出发,Innodb和M

mysql数据没有备份误删了怎么恢复

打开mysql的bin log功能:对于mysql也是支持增量备份,但要打开mysql的bin log功能.我们修改mysql的配置文件.linux是/etc/my.cnf,windows是mysql的安装目录/my.ini我们在[mysqld]下面加上log-bin一行代码,如下面. [mysqld] log-bin=mysql-bin 复制代码加完后重起mysql即可. 某客户更新数据的时候,误删了数据库的内容,因为数据库做了主从,但是没有做备份(备份很重要啊!)幸好开启了bin-log,之

MYSLQ 增量恢复学习及实践

MYSQL的架构一般都是一主多从 或是双主高可用模式,物理故障不需要增量恢复 什么情况需要增量恢复? 一般是由人为引起的误操作才需要增量恢复. 增量恢复的必需要满足的条件 1)开启MYSQL log-bin 日志功能 2)存在一份全备加上全备之后的时刻到出问题时刻的所有增量binlog 文件备份. 增量恢复的思路: 先恢复全量,然后把全备时刻点以后的增量日志,按顺序恢复成SQL文件,然后把文件中有问题的SQL语句删除(也可通过时间和位置点),再恢复到数据库. 下面模拟认为误操作删除数据库后 通过

MySQL灾难恢复与备份(下篇)

xiaorenwutest.blog.51cto.com  MySQL灾难恢复与备份(下篇) 前言:在上次的讲解中我们了解了数据库通过mysqldump工具和binlog日志结合回复数据库当中的数据.但是有一个弊端.那就是mysqldump工具在回复数据量小的情况下好使,一旦数据量规模庞大的时候回复该怎么办?相信在公司当中几乎不会有DBA使用mysqldump工具恢复数据. 另一个问题是,当我们的备份工具有了的时候那么我们该怎么备份呢?难道要手动一次又一次的去备份吗?要是晚上备份该怎麽办呢?难道

xtrabackup 全备份,增量备份,恢复 mysql数据库

Xtrabackup使用指南 InnoDB数据备份工具 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写,也就是不加锁),是商业备份工具InnoDB Hotbackup的一个很好的替代品 一.Xtrabackup介绍  A.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具

Mysql 通过全量备份和binlog恢复整体数据

某天工作时间,一个二货犯晕登错生产当测试环境了,直接drop了一个数据库,需要紧急恢复!可利用备份的数据文件以及增量的 binlog 文件进行数据恢复. 具体思路归纳几点: 1.恢复条件为 MySQL 要开启 binlog 日志功能,并且要全备和增量的所有数据. 2.恢复时建议对外停止更新,即禁止更新数据库.(这点很重要) 3.先恢复全量,然后把全备时刻点以后的增量日志,按顺序恢复成 SQL 文件, 4.然后把文件中有问题的SQL语句删除(也可通过时间和位置点),再恢复到数据库. 具体实例演示:

9.11、mysql增量备份和增量恢复介绍

1.增量备份: 增量数据是从上次全量备份之后,更新的新数据,对于mysql来说,binlog日志就是mysql的增量数据: (1)按天进行备份: 周一00点全量备份 周二00点全量备份 ...... 01.sql.gz 02.sql.gz ...... 周一增量备份 周二增量备份 ...... mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.index mysql-bin.000004 mysql-bin.000005 m

MySQL第五天(增量备份和增量恢复)

day05一.数据备份与恢复-增量备份和增量恢复a.binlog日志介绍(二进制文件):使用Mysql数据库服务日志文件类型的一种.记录除查询之外的sql命令.默认没启用 查询的sql包括:select desc show 不是查询的命令:insert update delete create drop grant revoke b.启用binlog日志如何启用日志默认存放位置/var/lib/mysql日志默认名称主机名-bin.00000151-bin.000001 (大于500M自动生成0