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数据字典操作故障排除

转载于:https://blog.51cto.com/linux10000/2177277

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
恢复 MySQL 8.0 的表空间,你可以按照以下步骤进行操作: 1. 停止 MySQL 服务器:使用适当的方式停止 MySQL 服务器,确保在进行任何操作之前数据库处于离线状态。 2. 备份原始表空间:在进行任何更改之前,强烈建议备份原始表空间文件。这样,即使操作出现问题,你也可以还原到先前的状态。 3. 删除或移动损坏的表空间:如果你已经确定哪个表空间损坏或丢失,可以删除或移动它。你可以使用以下两种方法之一来完成此操作: - 使用 DROP TABLESPACE 命令删除表空间。例如:`DROP TABLESPACE your_tablespace;` - 使用 ALTER TABLE ... REMOVE PARTITIONING 命令移除分区,并将数据从损坏的表空间转移到其他有效的表空间。例如:`ALTER TABLE your_table REMOVE PARTITIONING;` 4. 创建新的表空间:使用 CREATE TABLESPACE 命令创建一个新的表空间。指定正确的数据文件路径和名称。例如:`CREATE TABLESPACE your_tablespace ADD DATAFILE 'path/to/your_tablespace.ibd';` 5. 将表移回新的表空间:使用 ALTER TABLE ... TABLESPACE 命令将表移回新的表空间。例如:`ALTER TABLE your_table TABLESPACE your_tablespace;` 6. 启动 MySQL 服务器:启动 MySQL 服务器,并确保能够正常访问恢复的表空间和数据。 请注意,这些步骤仅适用于恢复表空间而不是整个数据库。如果你需要恢复整个数据库,请参考 MySQL 官方文档或与专业数据库管理员联系以获取更多帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值