首页 > 数据库 >mysql 基于idb文件恢复数据

mysql 基于idb文件恢复数据

时间:2023-04-23 13:12:23浏览次数:32  
标签:文件 基于 DEFAULT mysql NULL idb id

目录

mysql 基于idb文件恢复数据

适用于mysql8.0+,mysql5版本没测试过
数据库因为磁盘损坏起不来了,好在data目录下的idb文件还在,可以基于idb文件恢复数据

步骤:

  • 创建schem和表
  • 将新建表关联
  • 复制idb文件
  • import表

注意执行顺序

创建shcema

需要找一个同版本的mysql数据库,创建一个空的schema

create database test;

然后创建一个相同结构的表结构

//测试环境数据库损坏,我登录开发环境切换到对应db下,查看对应的表结构
//如果有备份的库也可以,导入一个schmea查看表结构。或者从开发人员那里索要表结构
show create table dev;

//这里是我在开发环境上看到的表结构
CREATE TABLE `match_rules` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `app_id` varchar(32) DEFAULT NULL,
  `rule_id` varchar(32) DEFAULT NULL,
  `rule_type` int DEFAULT NULL,
  `conditions` json DEFAULT NULL,
  `results` json DEFAULT NULL,
  `show_data` json DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `valid` int DEFAULT NULL,
  `version_number` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=149 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

//粘贴上面的表结构,到新建的库下执行,注意切换到对应的schema上

将新建表关联

上面我们把表结构创建好了,接下来需要将表关联

ALTER TABLE your_table DISCARD TABLESPACE;

复制idb文件

首先,将 .ibd 文件复制到 MySQL 数据目录中,例如 /var/lib/mysql/your_database/ 目录。请确保文件具有正确的权限,并且 MySQL 用户可以访问该文件

import表

//执行完后我们可以切换到对应的表下面,可以看到数据了
ALTER TABLE your_table IMPORT TABLESPACE;
//如果是给开发人员使用,记得授权

标签:文件,基于,DEFAULT,mysql,NULL,idb,id
From: https://www.cnblogs.com/liwenchao1995/p/17346254.html

相关文章

  • 基于SqlSugar的开发框架循序渐进介绍(28)-- 快速构建系统参数管理界面
    在参照一些行业系统软件的时候,发现一个做的挺不错的系统功能-系统参数管理,相当于把任何一个基础的系统参数碎片化进行管理,每次可以读取一个值进行管理,这样有利于我们快速的处理业务需求,是一个挺好的功能。本篇随笔模拟这个功能,基于SqlSugar开发框架的基础上,利用代码生成工具快速生......
  • SpringBoot 集成 Quartz + MySQL
    Quartz简单使用JavaSpringBoot中,动态执行bean对象中的方法源代码地址=>https://gitee.com/VipSoft/VipBoot/tree/develop/vipsoft-quartz工作原理解读只要配置好DataSourceQuartz会自动进行表的数据操作,添加QuartzJob任务保存QRTZ_JOB_DETAILS、QRTZ_TRIGGERS=>QR......
  • 基于docker 安装的gitlab 升级
    gitlab升级背景现在的gitlab版本是13.0.1,目标是14.9.5因为,这个版本及以后支持禅道集成。升级过程先备份数据gitlab-rakegitlab:backup:create#有两个文件需要手工备份#gitlab.rb路径:/etc/gitlab/gitlab.rb#gitlab-secrets.json路径:/etc/gitlab/gitlab-secrets.js......
  • 基于django+ansible+webssh运维自动化管理系统
    基于django+ansible+webssh运维自动化管理系统 前言最初开发这个基于Djangoansible运维自动化管理系统的想法其实从大学时候就已经有了,但是苦于技术原因和没有线上环境原因一直没有开发,现在有了这个技术和环境之后开始着手开发了这个项目,项目难点在于你要理解如何设计数据库,......
  • MySQL安装
    MySQLjavaEE:企业级java开发Web前端后台数据库安装Mysqlmysql5.7.33安装网站:https://dev.mysql.com/downloads/mysql/解压放到环境目录下添加环境变量path--->添加mysql下的bin目录新建mysql配置文件my.ini[mysqld]#目录换成自己的basedir=D:\Environmen......
  • 06期:使用 OPTIMIZER_TRACE 窥探 MySQL 索引选择的秘密
    这里记录的是学习分享内容,文章维护在Github:studeyang/leanrning-share。优化查询语句的性能是MySQL数据库管理中的一个重要方面。在优化查询性能时,选择正确的索引对于减少查询的响应时间和提高系统性能至关重要。但是,如何确定MySQL的索引选择策略?MySQL的优化器是如何选择索......
  • MySQL中的 distinct 和 group by 哪个效率更高?
    在语义相同,有索引的情况下:groupby和distinct都能使用索引,效率相同。因为groupby和distinct近乎等价,distinct可以被看做是特殊的groupby。在语义相同,无索引的情况下:distinct效率高于groupby。原因是distinct和groupby都会进行分组操作,但groupby在Mysql8.0之前会进行隐式......
  • mysql索引学习
    概念:是一种高效获取数据的数据结构(有序)索引结构二叉树红黑树hashbtree,叶子节点存数据,一个页占用数据大,层级结构就多b+tree,非叶子节点存储数据,mysql做了优化,双向链表索引分类:主键索引、唯一索引、常规索引、全文索引聚集索引、非聚集索引通过命令查询增删改查执行次数......
  • Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能
    索引所占空间的增长确实会对MySQL数据库的写入性能和查询性能造成影响,这主要是由于索引数据过多时会导致磁盘I/O操作变得非常频繁,从而使性能下降。为此,可以采取以下几种方式来减缓这种影响: 1.限制索引的大小:可以考虑为索引指定大小限制,在存储时仅存储指定大小内的数据。例如,在......
  • mysql replace 正则替换
    先说结论:8.0版本之前不支持,只能采用曲线方法,例如:UPDATEtestsettest.data=REPLACE(test.data,SUBSTR(test.data,LOCATE("{",test.data),LOCATE("}",test.data)),"") 8.0之后使用REGEXP_REPLACE函数UPDATEtableNameset`name`=REGEXP_REPLACE(`name`,'......