我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

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

sqlserver数据库怎么恢复到指定时间点

要将SQL Server数据库恢复到指定时间点,您可以按照以下步骤操作:首先,您需要确保已启用数据库的完整或者简单恢复模式。如果数据库处于简单恢复模式下,则无法进行时间点恢复。使用以下T-SQL语句备份数据库到指定时间点:BACKUP DA
sqlserver数据库怎么恢复到指定时间点
2024-04-09

mysql数据库怎么恢复数据

要恢复MySQL数据库中的数据,有几种常见的方法:使用备份文件:如果您有数据库的备份文件,可以通过将备份文件恢复到MySQL数据库中来恢复数据。可以使用mysqldump命令来创建数据库备份文件,然后使用mysql命令将备份文件导入到数据库
mysql数据库怎么恢复数据
2024-05-21

MySQL INSERT锁与数据库故障恢复时间

MySQL中的INSERT锁是指在执行INSERT操作时,会对正在插入的行进行锁定,防止其他会话对这些行进行修改。这种锁可以确保数据的一致性和完整性,但也可能会导致性能下降,特别是在大量并发插入操作的情况下。当数据库发生故障时,需要进行数
MySQL INSERT锁与数据库故障恢复时间
2024-08-19

mysql数据库怎么备份 mysql数据库怎么恢复数据库

如何备份和恢复 mysql 数据库?备份:使用 mysqldump 工具转储数据库架构和数据到 sql 文件。使用 phpmyadmin 图形界面导出数据库。恢复:使用 mysql 命令加载 sql 文件中的内容到数据库。使用 phpmya
mysql数据库怎么备份 mysql数据库怎么恢复数据库
2024-08-13

怎么恢复mysql数据库中删除的数据库

要恢复已删除的 mysql 数据库,首先确认其已删除。然后,有两种恢复方法:使用备份文件或从二进制日志文件恢复。从备份文件恢复需要先停止服务器、复制文件并运行查询。从二进制日志文件恢复则需要确保日志记录已启用,提取操作并运行查询创建并恢复数
怎么恢复mysql数据库中删除的数据库
2024-04-14

Oracle数据库ODBC连接与数据库恢复点目标(RPO)和恢复时间目标(RTO)

Oracle数据库ODBC连接是一种通过ODBC(Open Database Connectivity)技术来连接Oracle数据库的方式。ODBC是一种标准的数据库访问接口,可以使应用程序与数据库进行通信,从而实现数据的读取和写入等操作。
Oracle数据库ODBC连接与数据库恢复点目标(RPO)和恢复时间目标(RTO)
2024-07-16

MySQL插入锁与数据库数据恢复时间预估

在MySQL中,插入锁是一种在插入数据时对表进行锁定以防止其他事务同时对同一记录进行操作的锁。当一个事务在插入数据时获取了插入锁,其他事务必须等待该事务完成插入操作后才能继续对该表进行操作。数据恢复时间的预估取决于多个因素,包括数据库的大
MySQL插入锁与数据库数据恢复时间预估
2024-08-14

MySQL中怎么备份和恢复数据库

MySQL中可以通过mysqldump命令来备份数据库,通过source命令来恢复数据库。备份数据库:打开命令行工具,输入以下命令来备份数据库:mysqldump -u username -p database_name > backup
MySQL中怎么备份和恢复数据库
2024-04-09

删除mysql数据库怎么恢复

已删除的 mysql 数据库可通过下列步骤恢复:查找备份文件导入备份文件创建新数据库导入数据提示:定期备份数据库至关重要,以防止数据丢失。如何恢复已删除的 MySQL 数据库恢复步骤:查找备份文件导入备份文件创建新数据库导入数据详细
删除mysql数据库怎么恢复
2024-08-05

mysql删除数据库怎么恢复

已删除的 mysql 数据库的恢复方法有两种:从备份恢复(停止服务、复制备份文件、恢复数据库),或从二进制日志恢复(找到关联的 binlog 文件、提取事件、重建数据库、应用事件)。恢复前务必备份现有数据,关闭使用数据库的应用程序。请尝试使
mysql删除数据库怎么恢复
2024-05-21

mysql数据库删除怎么恢复

mysql 数据库中删除的数据恢复方法:检查回收站(mysql 8.0 及以上版本)使用备份恢复使用二进制日志恢复(需启用 binlog)MySQL 数据库删除恢复问题:MySQL 数据库中删除的数据如何恢复?回答:数据恢复是 MyS
mysql数据库删除怎么恢复
2024-08-05

编程热搜

目录