通过防火墙禁止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. Mysql root密码忘记的解决办法

    Windows 版本: 1.打开安装目录下的my.ini 找到 [mysqld] 在下面加入 skip-grant-tables 2. 重启mysql服务 3.打开命令行 依次输入 USE mysql ...

  2. Ubuntu Apache配置及开启mod_rewrite模块

    刚刚将服务器系统从CentOS换成Ubuntu,将MySQL,Apache,PHP和Wordpress安装好后,发现打开主页是正常的,但是打开文章页面时出现错误.因为使用了自定义的固定链接设置,那自然 ...

  3. journal size

    resize2fs命令出现这个错误“resize2fs: Operation not permitted While trying to add group #6656”,并且在/var/log/me ...

  4. 【转】【Mysql学习】之Mac上用终端使用mySQL

    收藏了几篇文章,以供查阅: 在此感谢: m0_38017925:<Mac上用终端使用mySQL> xiamu03:<在MacOS上使用终端操作数据库>

  5. DESEncrypt.cs

    POJ上做做ACM的题 语言的学习基础,100个经典的算法C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后 ...

  6. 第一百三十七节,JavaScript,封装库---修缮拖拽

    JavaScript,封装库---修缮拖拽 修缮拖拽 /** tuo_zhuai()方法,将一个弹窗元素实现拖拽功能 * 注意:有参设置拖拽点区块,只有弹窗的这个拖拽点区块才能拖拽,无参整个弹窗可以拖 ...

  7. kafka2:常用topic命令

    常用操作 创建一个topic bin/kafka-topics.sh --create --zookeeper 192.168.3.230:2181 --replication-factor 3 -- ...

  8. 微信 openId

    摘要 关于微信开发的话题,例子确实已经有不少,但大部分都是人云亦云,很多小细节或者需要注意的地方却大多没有讲清楚,这令很多刚开始开发的人感觉大很迷茫.而我今天要说的话题,主要着眼于两个方面. 一:如何 ...

  9. Laravel5.1 登录和注册

    关于登录和注册 Laravel自带了一套组件实现了这一功能,我们只需要实现简单的视图即可. AuthController是专门管理用户注册和登录的. PassWordController是重置密码用的 ...

  10. MVC [Control与View交互]

    <1> Home控制器 using System; using System.Collections.Generic; using System.Data; using System.Da ...