通过防火墙禁止web等应用向主库写数据或者锁表,让主库暂时停止更新,然后进行恢复

模拟整个场景

1、登录数据库

[root@promote 3306]# mysql -uroot -S /data/3306/mysql.sock

创建一个库,并创建一个表,里面适当的加入一些初始数据
insert into nima(id,name) values(4,'hahh');

2、将我本机的时间设置为早上0点 

[root@promote ~]# date -s '2017/7/27'
2017年 07月 27日 星期四 00:00:00 CST

3、完全备份

[root@promote 3306]# mysqldump -uroot -S /data/3306/mysql.sock -F -B --master-data=2 test >/opt/test.sql

[root@promote 3306]# ll
总用量 36
drwxr-xr-x. 5 mysql mysql 4096 7月 20 15:15 data
-rw-r--r--. 1 root root 1897 7月 18 20:11 my.cnf
-rwx------. 1 root root 1299 7月 18 20:29 mysql
-rw-rw----. 1 mysql mysql 1047 7月 27 00:02 mysql-bin.000002
-------------------------------------------------------------------------------备份点 //最好提前看一下从哪里开始备份的,就是查看新的bin-log
-rw-rw----. 1 mysql mysql 107 7月 27 00:02 mysql-bin.000003 --------------新内容
-rw-rw----. 1 mysql mysql 56 7月 27 00:02 mysql-bin.index
-rw-rw----. 1 mysql mysql 6 7月 20 15:15 mysqld.pid
-rw-r-----. 1 mysql root 4184 7月 20 15:15 mysql_oldboy3306.err
srwxrwxrwx. 1 mysql mysql 0 7月 20 15:15 mysql.sock

4、在创建的表中加入新的数据

没加入数据前
mysql> select * from nima;
+------+--------+
| id | name |
+------+--------+
| 1 | 尼玛 |
| NULL | hahh |
| 3 | hahh |
| 4 | hahh |
+------+--------+
4 rows in set (0.00 sec) mysql> insert into nima(id,name) values(100,'hahh');
Query OK, 1 row affected (0.00 sec) mysql> insert into nima(id,name) values(101,'hahh'); mysql> select * from nima;
+------+--------+
| id | name |
+------+--------+
| 1 | 尼玛 |
| NULL | hahh |
| 3 | hahh |
| 4 | hahh |
| 100 | hahh |
| 101 | hahh |
+------+--------+
6 rows in set (0.00 sec)

5、删除创建的数据库

mysql> drop database test;
Query OK, 1 row affected (0.07 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

6、此时就出现了问题,test库没有了,然后去查看bin-log  

[root@promote 3306]# mysqlbinlog mysql-bin.000003

# at 511
#170727 0:08:56 server id 1 end_log_pos 592 Query thread_id=3 exec_time=0 error_code=0
SET TIMESTAMP=1501085336/*!*/;
drop database test <==发现了是此条语句的问题
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

7、此时刷新一下bin-log

 

[root@promote 3306]# mysqladmin -uroot -S /data/3306/mysql.sock flush-logs
[root@promote 3306]# ll
总用量 40
drwxr-xr-x. 4 mysql mysql 4096 7月 27 00:08 data
-rw-r--r--. 1 root root 1897 7月 18 20:11 my.cnf
-rwx------. 1 root root 1299 7月 18 20:29 mysql
-rw-rw----. 1 mysql mysql 1047 7月 27 00:02 mysql-bin.000002
-rw-rw----. 1 mysql mysql 635 7月 27 00:18 mysql-bin.000003
---------------------------------------------------------------------------需要恢复03的内容,然后04就是新内容
-rw-rw----. 1 mysql mysql 107 7月 27 00:18 mysql-bin.000004
-rw-rw----. 1 mysql mysql 84 7月 27 00:18 mysql-bin.index
-rw-rw----. 1 mysql mysql 6 7月 20 15:15 mysqld.pid
-rw-r-----. 1 mysql root 4184 7月 20 15:15 mysql_oldboy3306.err
srwxrwxrwx. 1 mysql mysql 0 7月 20 15:15 mysql.sock

8、开始恢复手续

  

[root@promote 3306]# cp mysql-bin.000003 /tmp
[root@promote 3306]# cd /tmp
[root@promote tmp]# ll
总用量 4
-rw-r-----. 1 root root 635 7月 27 00:20 mysql-bin.000003
drwx------. 2 root root 24 6月 22 13:45 ssh-sq615X9ctBqx
drwx------. 3 root root 16 6月 22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-colord.service-FFHLPi
drwx------. 3 root root 16 6月 22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-cups.service-jm0Csy
drwx------. 3 root root 16 6月 22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-rtkit-daemon.service-90fMAb
drwx------. 3 root root 16 6月 22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-vmtoolsd.service-HfIX2Y
[root@promote tmp]# mysqlbinlog -d test mysql-bin.000003 >bin.sql
[root@promote tmp]# vim bin.sql //删除有问题的语句 [root@promote tmp]# mysql -uroot -S /data/3306/mysql.sock < /opt/test.sql //恢复全备
[root@promote tmp]# mysql -uroot -S /data/3306/mysql.sock test <bin.sql //恢复增量 mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec) mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
mysql> select * from nima;
+------+--------+
| id | name |
+------+--------+
| 1 | 尼玛 |
| NULL | hahh |
| 3 | hahh |
| 4 | hahh |
| 100 | hahh |
| 101 | hahh |
+------+--------+
6 rows in set (0.00 sec) mysql>
恢复结束

  

 

mysql增量恢复的一个实例操作的更多相关文章

  1. 10、mysql增量恢复实战

    10.1.实验数据: mysql> select * from test; +----+------+------+ | id | name | age | +----+------+----- ...

  2. Mysql增量恢复

    mysqldump增量恢复何时需要使用备份的数据? 备份最牛逼的层次,就是永远都用不上备份.--老男孩 不管是逻辑备份还是物理备份,备份的数据什么时候需要用?===================== ...

  3. mysql触发器语法的一个实例

    我要实现的功能是:在更新一个表时.从三个表中查询记录并插入到另外一个表中.以下是我写触发器的过程: 第一次写的触发器例如以下: CREATE TRIGGER istmingxi  AFTER UPDA ...

  4. Mysql备份恢复方案解析

    1.全量备份和增量备份 1.1全量备份 就是对现有的数据进行全部备份,之前做的备份均可舍弃,以最新的全备为基点. a.全备所有数据库 Innodb引擎: [root@leader mysql]#mys ...

  5. MySQL中的连接、实例、会话、数据库、线程之间的关系

    MySQL中的实例.数据库关系简介 1.MySQL是单进程多线程(而Oracle等是多进程),也就是说MySQL实例在系 统上表现就是一个服务进程,即进程(通过多种方法可以创建多实例,再安装一个端口号 ...

  6. MYSQL增量备份与恢复

    vim /etc/my.cnf在[mysqld]下添加max_binlog_size = 1024000 //二进制日志最大1M 要进行mysql的增量备份,首先要开启二进制日志功能方法一:在/etc ...

  7. PHP 2:从一个实例介绍学习方法

    原文:PHP 2:从一个实例介绍学习方法 在前面我已经描述了PHP,Apache以及MySQL的安装与配置.下面将介绍一下我如何学习PHP.首先我自己已经有了一些编程经验,就拿我自己而言,已经熟悉C/ ...

  8. MySQL增量备份与恢复实例【转】

    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...

  9. (转)通过MySQL复制线程SQL_Thread加快增量恢复binlog

    数据回档常常是使用全量备份+binlog增量实现的.而数据量很大的情况下,增量恢复binlog一直是一个苦恼的问题,因为恢复binlog速度十分慢,并且容易出错. 恢复binlog文件一般有两种方法: ...

随机推荐

  1. ubuntu下SVN使用

    一. ubuntu下SVN(命令行客户端)安装:sudo apt-get install subversion 二. 常用命令2. 文件检出:svn checkout 服务器目录 [本地目录] [-- ...

  2. libcgi库安装

    官网:https://boutell.com/cgic/#build 1. 可直接tar包安装 tar xvf libcgi-1.0.tar.gzcd libcgi-1.0./configuremak ...

  3. ES6快速入门使用

    https://www.jianshu.com/p/061304806bda Babel-webpack的配置 Bebal官方文档 前段项目我想使用ES6的语法我应该怎么做呢?我们可以查看Babel的 ...

  4. ORACLE完整安装过程

    安装 oracle, 主要是, 先确认系统资源, 再安装 oracle 软件, 最后按照 oracle 数据库 如果是使用 dbca 来安装数据库, 那么不需要自己创建文件夹.( 用来安装oracle ...

  5. Centos7安装Apache Http服务器无法访问如何解决

    1. 安装Apache组件 [root@mycentos shell]# yum install httpd 2. 安装成功后,检测有无httpd进程 [root@mycentos shell]# p ...

  6. java需要掌握内容、核心不断更新中

    1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该十分了解UML,尤其是class,object,interaction以及statediagra ...

  7. 在mybatis 中批量加载mapper.xml

    可以直接加载一个包文件名,将这个包里的所有*mapper.xml文件加载进来. 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载: 必须按一定的标准:即xml文件和 ...

  8. 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 (转)

    x-ua-compatible 用来指定IE浏览器解析编译页面的model x-ua-compatible 头标签大小写不敏感,必须用在 head 中,必须在除 title 外的其他 meta 之前使 ...

  9. TArray数组

    TArray<int32> arr; arr.Init(,); ; index < arr.Num(); index++) { FString str = FString(" ...

  10. Android之怎样强制横竖屏显示

    2  强制横屏竖屏显示(不依据手机传感器调整) 在清单文件AndroidManifest.xml中 在<activity 里面增加: android:screenOrientation=&quo ...