返回顶部
首页 > 资讯 > 数据库 >Mysql数据库中怎么按时间点恢复
  • 436
分享到

Mysql数据库中怎么按时间点恢复

2023-06-20 12:06:17 436人浏览 八月长安
摘要

Mysql数据库中怎么按时间点恢复,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 按时间点恢复的技术实现如果客户在某时间节点由于误操作,导致数据丢失,RDS管控服务是如何进

Mysql数据库中怎么按时间点恢复,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

按时间点恢复的技术实现

如果客户在某时间节点由于误操作,导致数据丢失,RDS管控服务是如何进行恢复的呢?

按时间点恢复的整体思路如下:一次完整的数据恢复是由物理备份+binlog恢复+binlog裁剪构成的。

Mysql数据库中怎么按时间点恢复

图1

首先获取到可用的备份集,将备份集应用到目标实例上,然后再目标实例重放需要恢复的binlog文件,最后通过binlog裁剪的形式应用sql文件,实现整体的恢复。

2. 按时间点恢复的管控流程

创建用于恢复的目的实例

当我们需要整体恢复源数据库数据时,我们首先需要创建一个与源实例同规格、同网络环境的目标实例。

为什么要这样做?

因为备份恢复属于高危操作,如果直接还原到源实例,一旦出现备份集不可用、binlog缺失等等问题,那么不仅丢失数据无法找回,甚至原数据都无法完好保住,所以强烈建议使用新实例来进行恢复!

明确备份恢复时间点

当客户在执行了一系列数据库操作之后,如误删除、误修改等,操作之后无感知,等到业务受损、故障发生时,如何定位到当时操作的准确时间点用于数据恢复呢?

方式1:可以通过日志审计功能找到对应的误操作时间点。

方式2:可以将binlog解析成文本,查询对应的误操作时间点。

3. 通过备份历史获取可用的备份集

一般情况下,基于业务的重要程度,客户在云上会规划好自己的数据库备份周期,RDS管控会基于用户选择的恢复时间点自动寻找可用的物理备份集。

可见备份对于数据库的高可用和灾难恢复是重中之重的!

4. 获取备份集对应的binlog点位

专有云的备份一般都基于xtrabackup工具进行备份。xtrabackup具有热备份、恢复快等特点,同时会将备份结束时应用binlog的文件和点位写入相应文件中。RDS管控会将该binlogfilebinlogpos等信息写入数据库,当需要备份恢复时,会直接获取该点位进行恢复。

如下图所示:

Mysql数据库中怎么按时间点恢复

图2

5. 将备份集还原至目的实例

1-4步骤为准备工作,下面开始正式的恢复数据。恢复数据的第一步是将获取的可用的全量物理备份集下载至目的实例上,并使用xtrabackup工具进行还原。

//首先要停止目的实例上的Mysql进程systemctl stop mysql//然后合并数据,假设备份解压在/root/backup/目录下,可以指定需要恢复的实例端口,需加--defaults-file参数指定,默认3306。innobackupex --apply-log /root/backup///删除原目录文件rm -rf /data/mysql//还原数据集,还原数据到哪个目录是基于配置文件my.cnf的datadir决定的。该字段一定要检查是否准确innobackupex --copy-back /root/backup///目录赋权chown -R mysql:mysql /data/mysql

6. 验证还原是否成功

管控服务需要验证还原是否成功,再决定是否需要向下操作,验证步骤也很简单粗暴,直接检查备份恢复日志中是否有ERROR,并且最后一行是否为completed OK!

如下图,为一次成功的备份恢复。

Mysql数据库中怎么按时间点恢复图3

7. 获取用于恢复的binlog日志

此步骤至关重要,关乎恢复是否成功,数据是否完整。

那么RDS管控服务如何获取正确的binlog来进行恢复呢?我们来看下图。

Mysql数据库中怎么按时间点恢复

图4

例如当前我们的备份中总共有8个binlog备份(000-008),首先通过物理备份记录的binlog的filename和pos来获取第一个binlog,如上图中的binlog004;然后通过客户设置的需要恢复的时间点的timestamp,来找到对应的最后一个binlog,如上图中的binlog007;最后将binlog004,binlog005,binlog006,binlog007这四个binlog备份下载到目的实例上进行恢复。

如果获取了错误的binlog日志用于恢复,比如误将binlog003/binlog005设置成了第一个binlog,那么binlog003/binlog005上执行的dml语句会在新实例上重新执行一次,恢复的数据就会增多或缺失;比如误将binlog0006或者binlog0008设置成了最后一个binlog,那么恢复的数据会缺失,且无法达到预期效果。

8. 重放relaylog

将下载的binlog复制到新实例的logdir中,并将除最后一个binlog(覆盖恢复时间点的binlog)之外的binlog重命名为relaylog,然后使用新实例重放这些relaylog。

//将binlog重命名,relaylog文件名可在mysql实例中执行show variables like '%relay%'查看.rename mysql-bin MySQL2-relay-bin mysql-bin*//将relay信息初始化到index文件中ls ./MySQL2-relay-bin.0000*>MySQL2-relay-bin.index//将这些文件复制到data文件中cp MySQL2-relay-bin.*/data/mysql///文件赋权chown -R mysql:mysql /data/mysql//启动mysql实例systemctl start mysql//change master to一个不存在的实例,模拟此实例为一个备库,指定一个空的主库,创建SQL线程,然后根据备份记录的binlogfile和binlogpos来设置。并启动slave的sql_threadCHANGE MASTER TO MASTER_HOST='1.1.1.1',RELAY_LOG_FILE='MySQL2-relay-bin.000011',RELAY_LOG_POS=160338;START SLAVE SQL_THREAD;show slave status\G

9. 验证relaylog重放成功

通过show slave status\G,来进行验证,此步骤一般恢复较慢,取决于数据库binlog个数及binlog大小。

验证1:查看relay_log_file字段的值是否为我们在MySQL2-relay-bin.index文件中维护的最大的值,如果是的话,则证明所有的bilog已重放成功;

验证2:查看Slave_SQL_Running字段是否为YES。

如下图所示:

Mysql数据库中怎么按时间点恢复

图5

10. 通过mysqlbinlog功能裁剪恢复时间点上的binlog,并生成sql文件

至此,1-9步骤已经恢复了绝大部分数据了,剩余了一个覆盖我们恢复时间点的binlog未进行恢复。

那么我们如何来进行操作呢?

如下图所示:

Mysql数据库中怎么按时间点恢复

图6

根据客户的时间点(如需要恢复至15:00的数据),RDS管控需要将覆盖我们恢复时间点的binlog根据恢复时间进行裁剪,也就是只应用12:00-15:00的数据,15:00至18:00的数据属于误操作时间,不应该拿来应用。

//使用mysqlbinlog工具的裁剪功能对该binlog进行裁剪mysqlbinlog --start-position=4--stop-datetime='2021-04-23 15:00:00'-R -h227.0.0.1-uroot -pxxxx -P3306 mysql-bin.007>/tmp/mysql-bin.007.sql

11. 目的实例通过sql文件,执行需要恢复的数据

在目的实例上执行该sql文件。

//赋权chown mysql:mysql /tmp/mysql-bin.007.sql//恢复数据mysql -uroot -pxxxx -h227.0.0.1-P3306 -f --max_allowed_packet=1073741824</root/mysql-bin.007.sql

关于Mysql数据库中怎么按时间点恢复问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql数据库中怎么按时间点恢复

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

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

猜你喜欢
  • Mysql数据库中怎么按时间点恢复
    Mysql数据库中怎么按时间点恢复,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 按时间点恢复的技术实现如果客户在某时间节点由于误操作,导致数据丢失,RDS管控服务是如何进...
    99+
    2023-06-20
  • Mysql数据库按时间点恢复实战记录
    简介:Mysql数据库按时间点恢复实战 对于任何一家企业来讲,数据都是最宝贵的财富。 如何保护数据完整性,数据不受损坏,在发生故障时,如何保住数据,在发生误操作,黑客入侵,数据篡改...
    99+
    2024-04-02
  • sqlserver数据库怎么恢复到指定时间点
    要将SQL Server数据库恢复到指定时间点,您可以按照以下步骤操作: 首先,您需要确保已启用数据库的完整或者简单恢复模式。如...
    99+
    2024-04-09
    sqlserver
  • 怎么恢复MySQL数据库
    今天就跟大家聊聊有关怎么恢复MySQL数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。数据库恢复是指以备份为基础,与备份相对应的系统维护和管理操...
    99+
    2024-04-02
  • Oracle数据库ODBC连接与数据库恢复点目标(RPO)和恢复时间目标(RTO)
    Oracle数据库ODBC连接是一种通过ODBC(Open Database Connectivity)技术来连接Oracle数据库的方式。ODBC是一种标准的数据库访问接口,可以使应用程序与数据库进行通信,从而实现数据的读取和写入等操作。...
    99+
    2024-07-16
    oracle
  • mysql数据库怎么恢复数据
    要恢复MySQL数据库中的数据,有几种常见的方法: 使用备份文件:如果您有数据库的备份文件,可以通过将备份文件恢复到MySQL数...
    99+
    2024-05-21
    mysql
  • Club数据库基于时间点单表恢复案例
    Club数据库基于时间点单表恢复案例发现问题:DBA于2016-05-20发现club数据库出现sql注入现象,如下图此时数据库中数据已经被全部替换了,具体数据如下可以看到nickname,realname...
    99+
    2024-04-02
  • 怎么用mysqlbinlog做基于时间点的数据恢复
    这篇文章将为大家详细讲解有关怎么用mysqlbinlog做基于时间点的数据恢复,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 mysql&g...
    99+
    2024-04-02
  • 怎么恢复mysql数据库中删除的数据库
    要恢复已删除的 mysql 数据库,首先确认其已删除。然后,有两种恢复方法:使用备份文件或从二进制日志文件恢复。从备份文件恢复需要先停止服务器、复制文件并运行查询。从二进制日志文件恢复则...
    99+
    2024-04-14
    mysql
  • 如何在AmazonAurora中实现数据库的时间点恢复和数据还原
    要在Amazon Aurora中实现数据库的时间点恢复和数据还原,您可以按照以下步骤进行操作: 打开Amazon RDS控制台,并...
    99+
    2024-04-02
  • mongodb 中怎么利用oplog恢复时间点
    mongodb 中怎么利用oplog恢复时间点,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.首先创建hezi集合,并插入1...
    99+
    2024-04-02
  • MySQL数据库中怎么恢复误删除数据
    本篇文章为大家展示了MySQL数据库中怎么恢复误删除数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 找到binlog恢复数据的前提是必须开启Mysql的bi...
    99+
    2024-04-02
  • MySQL中怎么备份和恢复数据库
    MySQL中可以通过mysqldump命令来备份数据库,通过source命令来恢复数据库。 备份数据库: 打开命令行工具,输入以下...
    99+
    2024-04-09
    MySQL 数据库
  • mysql数据库恢复
    目录1.数据库恢复基本事项2.利用source命令恢复数据库2.1.使用source命令恢复数据库的说明2.2.恢复演示3.利用MySQL命令恢复(标准)3.1.使用MySQL命令恢复基本实践3.2.使用开发人员提交的SQL语句恢...
    99+
    2018-08-16
    mysql数据库恢复
  • MySQL数据库怎么增量恢复数据
    本篇内容介绍了“MySQL数据库怎么增量恢复数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、场景概述...
    99+
    2024-04-02
  • mysql怎么恢复备份数据库
    要恢复MySQL备份数据库,可以按照以下步骤进行操作: 将备份文件复制到MySQL数据库服务器上的合适位置。确保备份文件的权限设...
    99+
    2024-04-02
  • mysql删除数据库怎么恢复
    已删除的 mysql 数据库的恢复方法有两种:从备份恢复(停止服务、复制备份文件、恢复数据库),或从二进制日志恢复(找到关联的 binlog 文件、提取事件、重建数据库、应用事件)。恢复...
    99+
    2024-05-21
    mysql
  • mysql数据库删除怎么恢复
    mysql 数据库中删除的数据恢复方法:检查回收站(mysql 8.0 及以上版本)使用备份恢复使用二进制日志恢复(需启用 binlog) MySQL 数据库删除恢复 问题:MySQL...
    99+
    2024-08-05
    mysql
  • 删除mysql数据库怎么恢复
    已删除的 mysql 数据库可通过下列步骤恢复:查找备份文件导入备份文件创建新数据库导入数据提示:定期备份数据库至关重要,以防止数据丢失。 如何恢复已删除的 MySQL 数据库 恢复步...
    99+
    2024-08-05
    mysql 数据丢失
  • oracle怎么恢复指定时间的数据
    要恢复Oracle数据库中指定时间的数据,可以按照以下步骤进行操作:1. 首先,确定你想要恢复的时间点。可以通过查询数据库的日志文件...
    99+
    2023-08-21
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作