概述

需求:模拟生产数据库故障,恢复到故障前一秒

场景:有一份初始备份和后面的binlog,早上9点故障,然后直接拿所有的备份和binlog到另外一台服务器做恢复,按备份文件和备份文件记录的位置+最后8.59分的时间之间的binlog恢复。

下面使用mysqldump+binlog来测试备份与恢复。


一、环境准备

1、备份数据库(数据库实例为test)

mysqldump -u root -p test --single_transaction --flush-logs --master-data=2 > /backup/test-`date +"%Y%m%d-%H%M%S"`.sql;

说明:

当master_data和 single_transaction 同时使用时,先加全局读锁,然后设置事务一致性和使用一致性快照开始事务,然后马上就取消锁,然后执行导出。过程如下

FLUSH TABLES WITH READ LOCKSET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READSTART TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */SHOW MASTER STATUS -- 这一步就是取出 binlog index and positionUNLOCK TABLES...dump...

如果需要binlog信息则使用 master_data;

如果不想阻塞同时表是innodb引擎可使用 single_transaction 取得一致性快照(取出的数据是导出开始时刻事务点的状态)

如果表不支持多版本特性,则只能使用 lock-all-tables 阻塞方式来保证一致性的导出数据。

2、向表中插入数据

show master statusG;use test;create table tb1(id int);insert into tb1 values (10),(20),(30);select * from tb1;

二、模拟故障

1、继续插入数据,在有备份的情况下删除数据库,模拟误操作

use test;insert into tb1 values (40),(50);drop database test;show databases;

此时查看数据库发现test库就没有了。


三、恢复前准备

1、查看binlog

获取备份文件和故障前最新的binlog

mysqlbinlog --base64-output=decode-rows -v --start-datetime="2019-09-11 15:00:00" --stop-datetime="2019-09-11 16:00:00" mysql-bin.000005

说明:配置文件使用了binlog_format= row,查看数据库binlog内容时候就看不到增删改查的具体语句,都是经过64位编码转换后的内容,所以需要加参数--base64-output=decode-rows转换。

2、导出故障前的binlog日志并输出为sql文件

mysqlbinlog --start-position=154 --stop-position=10189 -d test mysql-bin.000005 > /backup/binlog-`date +"%Y%m%d-%H%M%S"`.sql

也可以用初始位置+最后时间来恢复:

mysqlbinlog --start-position=154 --stop-datetime="xxx" -d test mysql-bin.000005 > /backup/binlog-`date +"%Y%m%d-%H%M%S"`.sql


四、开始恢复

导入之前的所有备份文件及binlog文件

mysql -uroot -p test < /backup/test-20190911-153754.sql mysql -uroot -p test < /backup/binlog-20190911-171045.sql

五、验证

到此数据成功全部恢复!


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

centos7恢复mysql数据库_一文看懂mysql数据库备份恢复演练相关推荐

  1. mysql删除分表键_一文看懂 MySQL 分区和分表,提高表增删改查效率

    原标题:一文看懂 MySQL 分区和分表,提高表增删改查效率 作者:冯帅,精通Oracle. MySQL. 擅长异构数据库数据同步及迁移.数据库的设计和调优,对高可用方案有深入研究. MySQL分区和 ...

  2. mysql xa 和普通事务_一文看懂MySQL中基于XA实现的分布式事务

    概述 前面已经介绍了2PC和3PC方面的内容,那么MySQL数据库在分布式事务这块又是怎么规划呢? XA事务简介 XA 事务的基础是两阶段提交协议.需要有一个事务协调者来保证所有的事务参与者都完成了准 ...

  3. mysql 缓冲池监控_一文看懂mysql数据库监控指标--缓冲池使用情况

    如果你的数据库运行缓慢,或者出于某种原因无法响应查询,技术栈中每个依赖数据库的组件都会遭受性能问题.为了保证数据库的平稳运行,你可以主动监控以下这个与性能及资源利用率相关的指标:缓冲池使用情况. 缓冲 ...

  4. mysql存储过程输入参数拆分_一文看懂mysql数据库存储过程、函数、视图、触发器、表...

    概述 抽空总结一下mysql的一些概念性内容,涉及存储过程.函数.视图.触发器等. 一.查看存储过程.函数.视图.触发器.表 1.存储过程 select * from mysql.proc where ...

  5. lepus监控oracle数据库_一文看懂lepus天兔数据库监控系统如何搭建

    概述 前面框架搭好后,这里就可以开始部署lepus了,下面一起来看看吧~ 1.安装Lepus采集器 1.下载软件安装包 # cd /usr/local # git clone https://gith ...

  6. centos7执行sh文件_一文看懂centos7如何管理自定义脚本服务

    概述 centos6如果要添加自定义脚本服务只需要把脚本放到/etc/init.d然后授权后用chkconfig添加后就可以管理了,那么centos7又是怎么添加自定义脚本服务呢? CentOS7添加 ...

  7. oracle组合索引失效_一文看懂Oracle数据库的三大索引类型

    概述 今天主要介绍Oracle数据库的三大索引类型,仅供参考. 一.B-Tree索引 三大特点:高度较低.存储列值.结构有序 1.1利用索引特性进行优化 外键上建立索引:不但可以提升查询效率,而且可以 ...

  8. mysql 同步复制 半同步复制_一文看懂MySQL的异步复制、全同步复制与半同步复制...

    今天主要聊一下MySQL的异步复制.全同步复制与半同步复制,目前我们生产库实际上用的就是异步复制了,后面再转成半同步复制. 一.MYSQL复制架构衍生史 在2000年,MySQL 3.23.15版本引 ...

  9. java读取mysql配置文件_一文读懂 MySQL 主从复制读写分离

    文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言 在很多项目,特别是互联网项目,在使用MySQL时都会采用主从复 ...

  10. 一文看懂Mysql锁

    一文看懂Mysql锁 Mysql锁 Mysql锁的分类 从性能上 从操作类型上 从锁的粒度上 死锁 死锁的四个条件 死锁的验证 死锁的避免 总结 Mysql锁 既然说到了Mysql锁,那么什么是Mys ...

最新文章

  1. 要成为一个成熟的软件工程师不容易啊
  2. 面试经典书籍--程序员面试宝典
  3. c# 运算符 ? ??
  4. 熊仔科技Steamduino PIC18F46J50主控板 部分原理图
  5. HDU 5536 字典树
  6. js使用的一些实用技巧
  7. 三菱gx works2安装教程(详细超安装方法步骤)
  8. Unity3D开发之制作序列帧动画
  9. 花了一年时间开发的YBC管型三维预览控件
  10. 语言-汉语-官话-中原官话-兖菏片:兖菏片
  11. MLY -- 6.Your dev and test sets should come from the same distribution
  12. C程序设计-清览题库
  13. 【C语言】寻找隐藏字母游戏
  14. Column 'parent_id' specified twice问题解决--insertable = false, updatable = false的使用
  15. 【数字系统】简单逻辑电路设计:与非门/逻辑门 Quartus II 环境/Verilog 语言/编程+仿真+开发板/FPGA/CPLD/EDA
  16. [数据结构]线性表——顺序存储
  17. 机器学习数据挖掘-软件、网站、课程资源知识点汇总
  18. SC系列(SC-12S)低频率小型SMD石英晶振SC-12S32.768KHZ12.5PF/20PPM
  19. 河北单招计算机的考试试题,河北单招试题
  20. 关于IT公司招聘的一个思考

热门文章

  1. Cannot use a leading .. to exit above the top directory
  2. 第12章 决策树 学习笔记上
  3. Atitit 存储引擎核心技术 总结目录1. 表的存储有三个文件:结构+数据+索引 12. 页式管理
  4. Atitit 自然语言处理(NLP)的应用 与 搜索引擎 目录 1.1. 搜索引擎并不是自然语言处理(NLP)的唯一应用。 2 1.2. NLP的应用 2 1.3. 社交网站信息流, 2 1.4.
  5. atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较
  6. ubuntu:磁盘清理
  7. 拒绝外部投资、融资及收购,Epic是如何成为美国电子病历“一姐”的?
  8. 你得真心喜欢些什么,才能过好漫长的冬天
  9. 不懂投资的基金会计不是好的产品经理
  10. 阿里云正式发布云原生人才培养合作计划