企业案例(二):增量恢复案例
1、环境准备
条件:
1.具备全量备份(mysqldump)。
2.除全量备份以外,还有全量备份之后产生的的所有binlog增量日志。
1.1、建立数据库和表
CREATE DATABASE dadong; USE `dadong`; CREATE TABLE `test` (`id` int(4) NOT NULL AUTO_INCREMENT,`name` char(20) NOT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; INSERT INTO `test` VALUES (1,'dadong'),(2,'he'),(3,'inca'),(4,'zuma'),(5,'kaka');
1.2、建立备份目录
准备环境: mkdir /data/backup -p date -s "2017/06/22"
1.3、备份数据库
mysqldump -B --master-data=2 --single-transaction dadong|gzip>/data/backup/dadong_$(date +%F).sql.gz 备份数据库后插入几行数据。模拟没有备份全备,但是binlog存在记录时,恢复数据。 mysql -e "use dadong;insert into test values(6,'bingbing');" mysql -e "use dadong;insert into test values(7,'xiaoting');" mysql -e "select * from dadong.test;"
1.4、 模拟误删数据
date -s "2017/06/22 11:40" mysql -e "drop database dadong;show databases;"出现问题10分钟后,发现问题,删除了数据库了.
2、开始恢复准备
2.1、采用iptables防火墙屏蔽所有应用程序的写入
[root@dadong ~]# iptables -I INPUT -p tcp --dport 3306 ! -s 172.16.1.51 -j DROP #<==非172.16.1.51禁止访问数据库3306端口。
注:此步操作目的是停止客户数据的写入,而并不是停止数据库
2.2、 操作前备份
cp -a /application/mysql/logs/dadong-bin.* /data/backup/
2.3、准备全量和增量备份文件
1.dadong_2017-06-22.sql(全量) 2.bin.sql(增量)
3、恢复过程
3.1、 恢复全备
[root@db02 backup]#zcat dadong_2017-06-22.sql.gz >dadong_2017-06-22.sql ###解压全备文件 [root@db02 backup]# mysql <dadong_2017-06-22.sql [root@db02 backup]# mysql -e "show databases;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | dadong | | he | | performance_schema | +--------------------+[root@db02 backup]# mysql -e "use dadong;select * from test;" +----+---------+ | id | name | +----+---------+ | 1 | dadong | | 2 | he | | 3 | inca | | 4 | zuma | | 5 | kaka | +----+---------+
3.2、恢复增量
———————————以下正式恢复操作—————————————— [root@db02 backup]#sed -n '22p' dadong_2017-06-22.sql ###获取binlog日志的起始地址339 [root@db02 backup]#mysqlbinlog -d dadong --start-position=339 dadong-bin.0000012 -r bin.sql ##”-d” 指定查看哪个库;”-r” 指定binlog日志存放在哪个文件中。 [root@db02 backup]#grep -i drop bin.sql [root@db02 backup]#sed -i '/^drop.*/d' bin.sql ###删除删库语句,防止恢复后又执行drop语句。 [root@db02 backup]# mysql dadong <bin.sql [root@db02 backup]# mysql -e "use dadong;select * from test;" +----+----------+ | id | name | +----+----------+ | 1 | dadong | | 2 | he | | 3 | inca | | 4 | zuma | | 5 | kaka | | 6 | bingbing | | 7 | xiaoting | +----+----------+####注释:mysqlbinlog -d dadong dadong-bin.0000012 -r bin.sql ###其中“dadong-bin.0000012”要根据最后相关操作时间(删库时间)来确定drop语句放在哪个binlog文件中,并且binlog文件是二进制文件,必须使用mysqlbinlog进行操作后才能使用cat查看。
注:此时如果没有执行sed -i '/^drop.*/d' bin.sql;就会出现下面错误
3.3、 恢复完毕
最后一步特别重要,恢复完毕后,一定要调整iptables允许用户访问.
转载于:https://www.cnblogs.com/dadonggg/p/8618467.html
企业案例(二):增量恢复案例相关推荐
- C++多态案例二-制作饮品
多态案例二-制作饮品 多态案例二-制作饮品 示例 多态案例二-制作饮品 案例描述: 制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供 ...
- MySQL 备份与恢复(完全备份恢复--增量备份恢复+案例演示)
文章目录 一.MySQL 完全备份 1.1.数据库备份方式精讲 1.1.1.数据库备份的重要性 1.1.2.数据库备份的分类 1.1.3.MySQL 完全备份概念解读 1.2.物理冷备份与恢复 1.3 ...
- 2021年大数据Spark(三十七):SparkStreaming实战案例二 UpdateStateByKey
目录 SparkStreaming实战案例二 UpdateStateByKey 需求 1.updateStateByKey 2.mapWithState 代码实现 SparkStreaming实战案例 ...
- 数套 ASM RAC 的恢复案例
李真旭(Roger) ACOUG 核心专家,Oracle ACE,云和恩墨西北区技术总监 本文整理来自上周四晚云和恩墨大讲堂嘉宾李真旭分享的一个数据恢复案例,希望对大家的学习有帮助. "10 ...
- 【恢复案例】国内某公司服务器感染.[ideapad@privatemail.com].mkp新型勒索病毒
目录 前言:案例简介 一.什么是.[ideapad@privatemail.com].mkp勒索病毒? 二.中了.[ideapad@privatemail.com 后缀勒索病毒文件怎么恢复? 三.恢复 ...
- 数据库备份与恢复案例:如何恢复丢失的数据
作者:禅与计算机程序设计艺术 数据库备份与恢复案例:如何恢复丢失的数据 引言 随着数字化时代的到来,数据库已经成为企业重要的数据资产,数据备份与恢复问题也逐渐引起了人们的广泛关注.在实际应用中,由于各 ...
- 刘子佼 mysql 下载_MySQL数据管理之备份恢复案例解析 23讲 Mysql备份恢复实战 视频教程...
课程名称:MySQL数据管理之备份恢复案例解析 23讲 Mysql备份恢复实战课程简介: 课程独家解析MySQL 5.6最新特性,课程讲师刘子佼讲课风格幽默,善于与人沟通,善于组建和协调团队攻克技术难 ...
- 经典故障:四个雷,3*2*2*3种随机方法的特殊恢复案例
墨墨导读:恢复专家前辈给我们精心准备了个故障,埋了四个雷,整个恢复过程感觉像是过山车,整理分享至此,希望对大家有帮助. 恢复文件 就给一个压缩的system,起库. 恢复过程 首先,获取system文 ...
- 修改jar 注入_ORA00600[16703]安装介质注入型勒索病毒恢复案例
早期客户数据库软件被注入恶意代码,导致数据库无法启动,报错ORA-00600: internal error code, arguments:[16703], [1403], [20],由于恶意攻击, ...
最新文章
- python java web_Python 与 Java 使用 websocket 通信
- 从电影《蝴蝶效应》中学习回溯算法的核心思想
- 用FIO测试存储性能
- Coding and Paper Letter(六)
- 怎么写ERP实施方案?
- 不装oracle进行远程连接解决办法 .
- 集成框架比较– Spring集成,Mule ESB或Apache Camel
- vimnbsp;自动识别UTF8和GB2312
- centos开机卡进度解决方案
- 『PyTorch x TensorFlow』第六弹_从最小二乘法看自动求导
- 【转】UCenter的MVC架构
- 【学习笔记】JAVA快捷键
- 继承 actionSupport
- PHP实现留言板功能
- 华为云学院给大学生的献礼:轻松玩转微认证
- amcharts使用总结
- 强烈推荐的程序员键盘--红轴手感好按键压力小写代码更轻松
- 如何用c语言教小学生学英语,家长怎么教小学生学英语
- 基于Vue+ElementUI的省市区地址选择通用组件
- android 横幅弹出权限,有关 android studio notification 横幅弹出的功能没有反应
热门文章
- python多进程内存共享_Python—并发编程04多进程内存共享,python,间,的
- 计算机的外部设备 硬盘,外部设备采用SMB协议想共享电脑硬盘下的文件
- linux窗帘文件夹命令,窗帘面板和电机 · 控客智能家居 Linux SDK 使用手册 · 看云...
- 设备管理器android感叹号,设备管理器其他设备感叹号
- 怎样配置mysql数据源_mysql怎样配置ODBC数据源
- 声音均衡器怎么调好听_汽车10段音效最佳设置,手把手教你调节车载音响均衡器...
- nodejs+html转换pdf,Nodejs 中将html转换成pdf文件
- python新奇检测_3种Python检测URL状态
- remote: Incorrect username or password ( access token )
- Java 获取集合元素的值