MySQL闪回(flashback)原理与实战

MySQL闪回(flashback)原理与实战

MySQL闪回(Flashback)是指在不使用外部备份文件的情况下,将MySQL数据库恢复到之前某个时间点的状态。闪回可以用于撤销对数据库误操作或临时重建数据库,避免数据库因为外部因素的破坏而无法使用。下面将详细讲解MySQL闪回的原理和实战步骤。

原理解析

MySQL闪回的实现原理是将当前的数据表重命名,然后从binlog文件中恢复指定时间点的数据。闪回操作的过程如下:

  1. 将当前的数据表重命名为一个备份表
  2. 从备份表开始使用binlog文件中指定时间点的日志进行恢复
  3. 在备份表的基础上应用binlog日志,将其恢复到指定的时间点
  4. 将备份表删除,使得数据表恢复到指定的时间点

实战步骤

下面将介绍MySQL闪回的实战步骤并给出两个示例。

示例1:误删表的恢复

假设我们误删了一个重要的表,但是我们在删除之前没有备份该表。我们可以使用MySQL闪回来恢复该表。

下面是具体的步骤:

  1. 首先确认MySQL开启了binlog,并且已经配置了log_bin参数,可以使用以下命令进行确认:

show variables like '%log_bin%';

  1. 如果binlog已经开启,那么可以使用以下命令来查看当前binlog文件的名称和位置:

show binary logs;

  1. 确认binlog文件的位置和名称后,使用以下语句将当前的表重命名:

rename table your_table to your_table_bak;

  1. 将当前的binlog日志中指定时间点之后的日志删除:

PURGE BINARY LOGS TO 'binlog_file_name';

  1. 执行以下语句,查找想要恢复的时间点对应的binlog事件的位置和名称:

mysqlbinlog --no-defaults --start-datetime="YYYY-MM-DD HH:MM:SS" --stop-datetime="YYYY-MM-DD HH:MM:SS" --base64-output=DECODE-ROWS mysql-bin.000110

这里的--no-defaults表示不使用默认的MySQL配置参数,--start-datetime和--stop-datetime表示要进行恢复的时间点范围,mysql-bin.000110是binlog文件的名称。

  1. 通过步骤5找到具体的位置后,使用以下命令进行恢复:

mysqlbinlog --no-defaults --start-position=297 --stop-position=553 mysql-bin.000110 | mysql -u root -p your_db_name

这里的--start-position和--stop-position是在第5步中找到的恢复位置。

  1. 恢复完成后,删除备份表:

drop table your_table_bak;

这样,我们就成功地通过MySQL闪回来恢复了误删的重要表。

示例2:临时重建数据库

假设我们需要对一个数据库进行重新架构,但是不想删除原有的数据库。我们可以使用MySQL闪回来将数据库恢复到某个时间点,并在恢复后创建新结构的数据库。

下面是具体的步骤:

  1. 移除当前建库用户的权限,以防止在恢复过程中他们在数据库中操作:

revoke all privileges on your_db_name.* from 'your_db_user'@'%';

  1. 重命名当前数据库,并创建空数据库:

rename database your_db_name to your_db_name_bak;
create database your_db_name;

  1. 使用binlog日志从历史中恢复数据:

mysqlbinlog --no-defaults --start-datetime="YYYY-MM-DD HH:MM:SS" --stop-datetime="YYYY-MM-DD HH:MM:SS" --base64-output=DECODE-ROWS mysql-bin.000110 | mysql -u root -p your_db_name

这里的--start-datetime和--stop-datetime表示要进行恢复的时间点范围,mysql-bin.000110是binlog文件的名称。

  1. 恢复完成后,revok撤销权限,删除备份数据库:

revoke all privileges on your_db_name.* from 'your_db_user'@'%';
drop database your_db_name_bak;

这样,我们就成功地使用MySQL闪回来临时重建了数据库。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL闪回(flashback)原理与实战 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • mysql导入失败

    mysqldump导出数据库表的数据会加上一些SQL的注释,这些注释会在批量执行SQL语句中造成错误,需要提前删除。 sql开始部分: SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_…

    MySQL 2023年4月13日
    00
  • MySQL explain 和 profiling 详解

    MySQL explain 和 profiling 详解 mysql explain MySQL 的 EXPLAIN 是一个用于查询优化的工具,它可以显示 MySQL 数据库如何执行查询。它返回一组关于查询执行计划的信息,包括用到的索引,表的连接顺序以及 MySQL 使用的查询类型。下面是 EXPLAIN 返回的列及其含义: id id:查询中每个 SELE…

    MySQL 2023年4月17日
    00
  • 重装MySQL最后一步失败的完美解决方案(经验总结)

    下面是“重装MySQL最后一步失败的完美解决方案(经验总结)”的详细攻略: 重装MySQL最后一步失败的完美解决方案(经验总结) 背景 当MySQL服务出现问题时,我们往往需要卸载掉原先的MySQL,并重装新的版本。但是,有时候在重装MySQL的过程中,可能会出现最后一步失败的情况,导致无法完成安装。这时候,我们需要采取一些措施来解决这个问题。 解决方案 步…

    MySQL 2023年5月18日
    00
  • mysql大数据查询优化经验分享(推荐)

    MySQL大数据查询优化经验分享 MySQL作为一款常见的关系型数据库,在处理大数据的情况下常常会出现性能问题。本文将为您介绍一些针对MySQL大数据查询的优化经验,以提高查询效率和性能。 1. 数据库设计 在大数据场景下,数据库设计是非常重要的一个步骤。合理的数据库设计可以减少冗余数据,提高数据存储和查询效率。以下是一些数据库设计的建议: 1.1. 建立索…

    MySQL 2023年5月19日
    00
  • 阿里巴巴 MySQL 数据库之 SQL 语句规约 (三)

    SQL 语句规约 强制部分 【强制】 不要使用 count(列名) 或 count(常量) 来替代 count(*),count(*) 是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和 非 NULL 无关。说明:count(*) 会统计值为 NULL 的行,而 count(列名) 不会统计此列为 NULL 值的行。 【强制】 coun…

    MySQL 2023年4月13日
    00
  • Mysql IP类型转换

    Mysql IP类型转换 inet_aton:将ip地址转换成数字型 (ip_net_address_to_number)inet_ntoa:将数字型转换成ip地址 (ip_net_number_to_address) 使用示例: SELECT INET_ATON(‘254.161.167.28’); -> 4272006940 SELECT INET…

    MySQL 2023年4月13日
    00
  • Mysql优化神器(推荐)

    Mysql优化神器(推荐)攻略 简介 Mysql优化神器是一款Mysql数据库性能优化软件,可用于分析Mysql数据库的性能问题,提供优化建议和性能统计数据。该软件可以帮助我们发现和解决性能问题,提高Mysql数据库的性能和稳定性。 安装 首先需在官网下载Mysql优化神器的安装包,并安装到本地计算机中。在安装过程中可能需要指定Mysql服务器的地址和端口号…

    MySQL 2023年5月19日
    00
  • Godaddy虚拟主机新建mysql数据库 2019最新

    第一次用狗爹,完全摸不着路子。 网站本地已搭建,不知道数据库是在哪里上传。 百度搜索结果都是四五年前的旧内容,耽误时间。 还是问客服,Godaddy的客服确实不赖   godaddy虚拟主机如何新建数据库: 1. 进入会员管理中心 https://account.godaddy.com/products 2. 进入虚拟主机管理 3. 进入cPanel管理员 …

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部