MySQL 8.0 恢复孤立文件每表ibd文件

此过程描述如何将每个文件的 orphan 文件还原 .ibd到另一个MySQL实例。如果系统表空间丢失或不可恢复,并且您希望.idb 在新的MySQL实例上恢复文件备份,则可以使用此过程。

一般表空间 .ibd文件 不支持该过程 。

该过程假定您只有 .ibd文件备份,您正在恢复到最初创建孤立.idb文件的相同版本的MySQL ,并且该 .idb文件备份是干净的。有关创建干净备份的信息,请参见 第15.8.1.3节“移动或复制InnoDB表”。

第15.7.6节“将每个表的表空间复制到另一个实例”中 概述的表空间复制限制 适用于此过程。

在新的MySQL实例上,在同名的数据库中重新创建表。

mysql> CREATE DATABASE sakila;

mysql> USE sakila;

mysql> CREATE TABLE actor (
         actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
         first_name VARCHAR(45) NOT NULL,
         last_name VARCHAR(45) NOT NULL,
         last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
         PRIMARY KEY  (actor_id),
         KEY idx_actor_last_name (last_name)
       )ENGINE=InnoDB DEFAULT CHARSET=utf8;

丢弃新创建的表的表空间。

mysql> ALTER TABLE sakila.actor DISCARD TABLESPACE;

将.idb备份目录中的孤立文件复制到新数据库目录。

shell> cp /backup_directory/actor.ibd path/to/mysql-5.7/data/sakila/

确保该.ibd文件具有必要的文件权限。

导入孤立.ibd文件。将发出警告,指示InnoDB将尝试导入文件而不进行架构验证。

mysql> ALTER TABLE sakila.actor IMPORT TABLESPACE; SHOW WARNINGS;
Query OK, 0 rows affected, 1 warning (0.15 sec)

Warning | 1810 | InnoDB: IO Read error: (2, No such file or directory)
Error opening ‘./sakila/actor.cfg‘, will attempt to import
without schema verification

查询表以验证.ibd 文件是否已成功还原。

mysql> SELECT COUNT(*) FROM sakila.actor;
+----------+
| count(*) |
+----------+
|      200 |
+----------+

参考文档:InnoDB数据字典操作故障排除

原文地址:http://blog.51cto.com/linux10000/2177277

时间: 2024-10-10 21:10:09

MySQL 8.0 恢复孤立文件每表ibd文件的相关文章

【MySQL】InnoDB引擎ibdata文件损坏使用ibd文件恢复数据

参考:http://my.oschina.net/sansom/blog/179116 参考:http://www.jb51.net/article/43282.htm 注意!此方法只适用于innodb_file_per_table独立表空间的InnoDB实例. 此种方法可以恢复ibdata文件被误删.被恶意修改,没有从库和备份数据的情况下的数据恢复,通过测试在ibdata被修改,实例异常shutdown情况下,不能保证数据库所有表数据的100%恢复,目的是尽可能多的恢复. [InnoDB引擎i

【1.1】mysql frm文件丢失(ibd文件丢失)

[1]故障模拟准备环境 这里以innodb为例 [1.1]配置参数 开启独立表空间 innodb_file_per_table; [1.2]构建测试数据 create database test; create table a(id int,num int); insert into  a values(1,11),(2,12); [2]故障模拟 [2.1]在业务正在运行的情况下,手动删除 test库 下的 a.frm [2.2]删除完之后,会发生什么? 如上图所示可知(在业务还在跑的情况下):

MySQL DDL操作--------指定表数据文件存放目录最佳实战

1. 背景 * 在MYSQL中建立一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储引擎无关,也就是任何存储引擎的数据表都必须有.frm文件,命名方式为数据表名.frm,如user.frm. .frm文件可以用来在数据库崩溃时恢复表结构. * MySQL文件包括MySQL所建数据库文件和MySQL所用引擎创建的数据库文件. * .frm 文件与操作系统和数据库引擎无关,都有这么

Mysql ibd文件恢复指南

背景 mysql在使用的过程中,难免遇到数据库表误操作,基于此,作者亲力亲为,对mysql数据表ibd文件的恢复做以下详细的说明,对开发或者初级dba提供一定的指导作用,博客中如若存在相关问题,请指明,相互学习,共同进步. 恢复说明 创建数据库(随意创建),create database yygk 创建数据表           备注:row_format要和ibd文件的row_format一致,否则,会提示两者不一致. 当前row_format=dynamic 表的属性查看      我们使用

硬盘空间满导致mysql ibd文件被删后提示Tablespace is missing for table 'db_rsk/XXX"

昨天一早,开发人员反馈说一个测试环境报Tablespace is missing for table 'db_rsk/XXX",周末刚升级过,特地让开发回去查了下,说脚本中肯定没有drop table的操作.datadir下检查了下,发现frm文件在的ibd文件没有了,bing了下,没发现类似异常.于是先回到mysql.err往回搜索,半天后发现上周五下午mysql出现了一次异常宕机,说是磁盘空间不足了,看日志该文件被损坏了,如下: 2016-11-12 11:31:00 28443 [ERRO

What's New In MySQL 8.0

    由于8.0内有很多C++11特性.需要gcc4.8版本以上.Rhel6系列默认gcc是4.7.在安装gcc6.1之后仍然检查不过. 原因可能是6.1版本不一定高于4.7,暂不讨论.鉴于升级gcc耗时较长,与测试目的不符.暂用官方rpm包安装.以便达到快速测试目的. 以下新功能介绍中,跟日常工作强相关大都经过测试.时间有限,未能面面俱到,有兴趣自行测试. 以下大部分来源自 https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

简述MySQL数据删除恢复操作内容

MySQL数据库简述: 在述写本文之前,首先我们要简单了解下MySQL数据库: MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理.MySQL因为其速度.可靠性和适应性而备受关注.大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择. MySQL数据库的故障原因: 再收到用户的联系后,经工程师和用户沟通,我们了解到大体故障信息,用户本地服务器操作系统为windows2008

Mysql 8.0.* zip版本 windows安装

一,MySQL8.0.*zip版本安装步骤. 1,下载 https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.15-winx64.zip 注现在最新的版本是8.0.15 2,解压 将mysql-8.0.15-winx64.zip解压到 D:/mysql 目录下 3,打开cmd命令控制台,输入以下命令. d: cd\ cd mysql cd bin d:\mysql\bin>mysqld --initialize-insecure     

MySQL表结构为InnoDB类型从ibd文件恢复数据

客户的机器系统异常关机,重启后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,只能想办法从数据库文件当中恢复,查找资料,试验各种方法,确认下面步骤可行: 一.找回表结构,如果表结构没有丢失直接到下一步 a.先创建一个数据库,这个数据库必须是没有表和任何操作的. b.创建一个表结构,和要恢复的表名是一样的.表里的字段无所谓.一定要是innodb引擎的.CREATE TABLE `test`(  `testID` bigint(20)) ENGINE=