广告
返回顶部
首页 > 资讯 > 数据库 >MySQL备份恢复设计思路
  • 848
分享到

MySQL备份恢复设计思路

MySQL备份MySQL备份恢复 2022-05-27 08:05:39 848人浏览 薄情痞子
摘要

背景 首先交代一下背景,由于某些因素的限制,我们公司目前的备份策略采用的是隔天全备的方案,增量备份则使用的是binlog server的方式,那么如何快速恢复就成为了我们需要思考的问题 恢复需求 根据我以往的一些经

背景

首先交代一下背景,由于某些因素的限制,我们公司目前的备份策略采用的是隔天全备的方案,增量备份则使用的是binlog server的方式,那么如何快速恢复就成为了我们需要思考的问题

恢复需求

根据我以往的一些经验来说,通常需要从备份恢复数据的场景有如下几种:

被误删库了

被误删表了,类型为TRUNCATE或者DROP

被误删列了,类型为ALTER ... DROP COLUMN

被误删数据了,类型为DELETE或者UPDATE或者REPLACE

表空间损坏或出现坏块了

根据场景来说,我们可以大致分为两类:

  • 第一类为不可逆恢复,也就是通常的DDL,比如上述的1、2、3、5等场景
  • 第二类为可逆的恢复,通常可以利用binlog进行回滚(要求binlog格式为ROW,binlog_image为FULL),也就是对应上述的场景4

对于第二类的恢复需求一般来说都比较容易处理,可以利用binlog回滚工具,例如业界比较著名的有binlog2sql以及MyFlash等,这里暂不赘述,我们重点来讨论第一类需求。

为了达到快速恢复的目的,业界DBA经常会采用的方式就是部署一个延迟从库来解决,我们公司目前 所有的核心DB都部署了延迟从库。但是即便有了延迟从库,假设我们错过了延迟的时间,或者在后续利用延迟从库恢复的时候指定错了位点,导致了误删DDL同样应用到了从库,这个时候我们就没有办法利用延迟从库这根救命稻草了。

全备恢复(异机恢复)

此时,我们只能通过备份来进行数据恢复了。首先我们需要恢复全备,通常来说就是xtrabackup备份的物理备份了。假设你的备份在远程的机器上,那么你可能需要做如下几步动作来进行全备恢复:

  1. 将备份scp或者rsync到目标实例机器上
  2. 假设备份文件是压缩的情况下,需要解压
  3. 解压完成后,需要apply redo log
  4. 更改文件权限
  5. 假设你直接将文件拷贝到的目标实例的datadir目录下,那么这一步你就可以直接启动Mysqld,假设不是,那么你还需要将数据文件move-back或者copy-back到目标实例的datadir
  6. 实例启动

增备恢复

到这里,全备已经恢复完成了,接下来需要做的就是增量恢复了。按照我们之前的备份方案,我们需要通过binlog来完成增量数据的恢复。对于binlog恢复,我们通常需要以下几个步骤

  1. 确定全备对应的binlog位点,也就是需要恢复的起始点
  2. 解析主库的binlog,确定误删数据的位点,作为我们恢复的终点
  3. 利用mysqlbinlog —start-position —stop-position+管道的方式,将binlog恢复到目标实例上

binlog恢复的方式有很多种,你可以用的是原先master上的binlog,也可以用binlogserver上的binlog,需要做的就是找到binlog恢复的终点即可。

增备恢复优化

到这里,你可能会觉得,利用binlog恢复有点麻烦。确实是这样的,利用mysqlbinlog命令并没有办法指定恢复到哪个GTID,只能通过解析binlog,找到需要恢复到的GTID对应的pos位点才行,这对于自动化来说实现起来会比较麻烦。另外,如果利用mysqlbinlog命令恢复,属于单线程恢复,假设需要恢复的binlog量比较多的话,那么这个增量恢复的时间可想而知。

那么有什么办法能加速binlog应用呢?这里我们就想到了MySQL5.7的并行复制,如果我们能用到sql thread的并行复制,是不是这个问题就解决了呢?

master上binlog恢复

我们回到全备恢复的位点,我们将新实例作为原先的master的slave,然后恢复到指定的GTID位置就可以了呢?没错,这是一种非常简便又轻松还不容易出错的方式,并且还可以利用并行复制的原理来加速binlog应用的目的。但是这种方式的一个要求就是原先的master最老的binlog包含了我们需要的起始恢复位点,这个很容易想到,所以,这将成为我们首选的恢复方式。

binlogserver上binlog恢复

假设原先master上的binlog已经被purge了,那么我们那需要从binlog上去恢复。有人可能会想到将binlogserver上的binlog拷贝到原先的master上,然后通过修改binlog index来达到注册的目的,实际上这并不可取,具体原因可以见《手动注册binlog文件造成主从异常》。

我们可以采取的方式是什么呢?就是利用binlogserver做成伪装master,然后将从库change上去,其思想就是欺骗slave,让slave的io_thread将缺失的binlog拉取过来,sql_thread并行应用binlog event(我们将在下一节具体演示这种方式)。

优化后的恢复流程

经过优化以后,我们的增备恢复流程就变成了,首先通过master上的binlog进行恢复,如果发现master上的binlog已经被purge了,那么通过binlogserver上的binlog进行恢复,这样一来我认为是比较科学合理的恢复流程。

各种恢复方式时效性对比

业务恢复

到这里,我们已经完成了全量+增量的备份数据恢复,这个时候需要同研发确认数据,确认完成以后将对应的表恢复到原先的master,通常采用的方式有:

  1. mysqldump导出+导入目标实例
  2. 表空间传输

总结

本节主要介绍了备份恢复的设计流程,在我们没有办法优化全备恢复的情况下,我们通过优化增量备份方式和流程达到缩短恢复时间的目的。并且需要说明的一点是,本节介绍的目前我还没有完全测试,不保证每个点都是正确的,还需要进一步验证,验证通过以后我也会通知大家,并且结合到现有的数据库运维平台,做到自动化恢复

最后还是提醒几点:

  1. 数据是无形的财产,请广大DBA朋友务必做好备份并做好备份验证
  2. 如果有条件的情况下,尽量部署延迟从库
  3. 做好恢复预案,免得恢复的时候手忙脚乱,菊花打紧
  4. 根据场景选择合适的恢复手段,尽量缩短恢复时间

以上就是MySQL备份恢复设计思路的详细内容,更多关于MySQL备份恢复的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL备份恢复设计思路

本文链接: https://www.lsjlt.com/news/9883.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL备份恢复设计思路
    背景 首先交代一下背景,由于某些因素的限制,我们公司目前的备份策略采用的是隔天全备的方案,增量备份则使用的是binlog server的方式,那么如何快速恢复就成为了我们需要思考的问题 恢复需求 根据我以往的一些经...
    99+
    2022-05-27
    MySQL 备份 MySQL 备份恢复
  • ORACLE 备份与恢复之 思路整理
    <div style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;bac...
    99+
    2022-10-18
  • mysql备份恢复
                 MYSQL备份恢复MySQL备份一般采取全库备份加日志备份的方式.1、binlogmysql的二进制日志记录着...
    99+
    2022-10-18
  • mysql的备份恢复
    一、mysql的备份1、mysqldump逻辑备份,支持温备,热备,使用mysqldump完全备份,binlog增量备份mysqldump -utest -ptest -h292.168.0.204 te...
    99+
    2022-10-18
  • mysql备份与恢复
    1、备份命令(用户名:root;密码:123;端口:3306) 格式:mysqldump -h主机名 -p端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql 例如: mysqldump -h 192.1...
    99+
    2015-05-28
    mysql备份与恢复
  • Mysql备份和恢复
    Mysql备份和恢复备份热备,是指对数据库运行中直接进行备份,对正在运行的数据库没有任何影响;冷备,是指在数据库停止(关闭)下进行备份,只需拷贝相关的数据物理文件;温备,是指对数据库运行中直接进行备份,但对...
    99+
    2022-10-18
  • DBA成长之路---mysql数据备份与恢复
    数据备份与恢复备份方式:     物理备份:直接拷贝备份库和表对应的文件       ...
    99+
    2022-10-18
  • mysql备份恢复详解
    前言 为什么需要备份数据? 数据的备份类型 MySQL备份数据的方式 备份需要考虑的问题 设计合适的备份策略 实战演练 使用cp进行备份 使用mysqldump+复制BINARY LOG备份 使用lvm2快...
    99+
    2022-10-18
  • 【MySQL】mysqldump备份与恢复
    简介:mysqldump常用于MySQL数据库逻辑备份。 备份操作: 1.备份所有库: mysqldump -uroot -pyourpass --all-databases > /tmp/all....
    99+
    2022-10-18
  • mysql备份、恢复之mysqldump
      mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等 mysqldump...
    99+
    2022-10-18
  • MySQL的备份和恢复
    这期内容当中小编将会给大家带来有关MySQL的备份和恢复,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、MySQL完全备份与恢复备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据...
    99+
    2022-10-18
  • MySQL 备份和恢复 一
    本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb,文中设计的 MySQL 版本为 5.0.22。目前 MySQL 支持的免费备份工具有:my...
    99+
    2022-10-18
  • mysql-备份与恢复-03
    目录1.mysql二进制包安装1.1 安装创建mysql用户解压安装包添加环境变量建立数据存放目录初始化数据库生成配置文件添加到service服务启动mysql服务登陆mysql并修改root密码2.数据备份与恢复2.1 备份方案2.2 备...
    99+
    2019-02-05
    mysql-备份与恢复-03 数据库入门 数据库基础教程 数据库 mysql
  • MySQL备份恢复基础
    MySQL备份恢复基础一,mysqldump命令mysqldump这个命令一般可以满足备份的大部分需要,因为这个工具支持全库备份,单库备份,单表备份,甚至逻辑备份,只备份表结构等等功能。主要命令格式:she...
    99+
    2022-10-18
  • 《MySQL数据库》MySQL备份恢复
    前言 MySQL数据库最重要的部分就是数据,所以保证数据不被损坏尤为重要,大家都知道911事件,当时非常多的数据丢失,导致经济混乱。接下来我们就来讲讲MySQL是如何保障数据完整,应对特殊情况,如何恢复等。 备份 备份检查:保证备份没有问题...
    99+
    2016-12-27
    《MySQL数据库》MySQL备份恢复 数据库入门 数据库基础教程 数据库 mysql
  • MySQL数据备份与恢复
        一、简介    数据在当今的互联网行业中非常重要,掌握了数据能够从中发现价值,所以数据对于公司来书再重要不过了,当我们...
    99+
    2022-10-18
  • Mysql完全备份和恢复
    Mysql完全备份和恢复 实验介绍 数据库备份从物理与逻辑的角度划分可以分为:物理备份、逻辑备份。从数据库的备份策略角度,可以分为完全备份、差异备份、增量备份。这次实验主要介绍完全备份,完全备份优点是备份与...
    99+
    2022-10-18
  • 浅析MySQL 备份与恢复
    1、简介 数据无价,MySQL作为一个数据库系统,其备份自然也是非常重要且有必要去做。备份的理由千千万,预防故障,安全需求,回滚,审计,删了又改的需求等等,备份的重要性不言而喻。除了备份本身, 如何使用备份来恢复 ...
    99+
    2022-05-20
    MySQL 备份 MySQL 恢复 MySQL备份与恢复
  • MySQL innobackupex全量备份恢复
        先简单介绍一下这个工具:innobackupex innobackupex比xtarbackup有更强的功能,它整合了xtrabackup和其他的一些功能,他不但可...
    99+
    2022-10-18
  • mysql数据备份及恢复
    这篇文章主要介绍“mysql数据备份及恢复”,在日常操作中,相信很多人在mysql数据备份及恢复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql数据备份及恢复”的疑惑...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作