mysql根据idb还原数据_mysql通过idb文件,恢复数据库

原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动。由于发现数据idb文件还在,最后就采取了险招,重新安装mysql,通过mysql的idb文件来恢复数据。

解决:

第一步: 完全卸载mysql数据库

ubantu 彻底卸载mysql

sudo apt-get autoremove --purge mysql-server

sudo apt-get remove mysql-common

sudo rm -rf /etc/mysql/ /var/lib/mysql

#清理残留数据

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

sudo apt autoremove

sudo apt autoclean

第二步: 重新安装mysql数据库

Ubantu下安装mysql8可自行百度;参考链接:https://www.linuxidc.com/Linux/2018-11/155408.htm

安装后可能出现:

mysql 数据库不允许远程连接: ‘Host’ is not allowed to connect to this mysql server

方法一:修改 host 表

进入mysql数据库,选择mysql

mysql> use mysql;

选择 host 表

mysql> select host from user;

更新 host, 然后退出。

mysql> update user set host = '%' where user='root';

重启数据库, 完成。

service mysqld restart

如果报错:Access denied for user ‘XXX’@’XXX’ (using password: YES) 请参考我的另一篇博文:

https://blog.csdn.net/qq_23035335/article/details/100522054

第三步:恢复数据

通过idb文件 恢复mysql数据

首先需要一个跟要恢复的表结构完全一致的表。

(在建表语句末尾加上 ROW_FORMAT=compact 或 ROW_FORMAT=DYNAMIC(mysql8默认);(InnoDB的行记录格式有 Compact, Redundant, Compressed, Dynamic,具体要看自己的mysql用的是哪种)备份的表结构可以从备份库,测试库搞定表结构,可以删掉外键约束,后面执行会方便很多。)

然后执行ALTER TABLE 表名 DISCARD TABLESPACE。(ALTER TABLE table_name DISCARD TABLESPACE)

(这里一定不能手动删除ibd文件,如果删除了会导致mysql停止后无法重启)

把要恢复的ibd文件复制到mysql的data文件夹下。

(默认路径是/var/lib/mysql/数据库名,在执行恢复之前,就应该已经知道了数据存储目录,同时也把所有的idb文件已备份,用于恢复。copy到目标位置后得检查下权限,是不是mysql:mysql,不然执行下面的导入语句时会报错:找不到对应的idb,实际可能是对应的idb文件权限不足)

然后执行ALTER TABLE 表名 IMPORT TABLESPACE。(ALTER TABLE table_name IMPORT TABLESPACE)

完成,数据恢复成功,表很多的话可以采取一些批量处理措施,不然工作量会有点大。

附:导出数据库到文件

/usr/bin/mysqldump -u root -密码 --default-character-set=utf8 数据库名> ./database_db.sql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何轻松记忆Linux文件系统层次结构

Linux对于新手来说非常难学。打好基础对于后面深层次的学习非常重要。 对文件系统层次结构要基本的概念。怎么才能理解并且记忆层级结构呢? 方法/步骤 为了帮助记忆,我做了一个比较清晰的图表来协助层次的记忆。 很多目录文件夹的名字长得非常抽象&…

node输出mysql的数据_node.js+async+mysql 查询数据输出问题,如何分别统计、提取每个sql语句的结果!!...

展开全部首先这是一个很简单的问e5a48de588b63231313335323631343130323136353331333335343366题,cnodejs这个论坛node大神算是最多的了,为什么会卡那么久你想过么。看看你提问的诚意吧——代码不格式化,不写注释,各种魔术数字令人…

fmc是fpga直接引出来的吗_家长速看!你还在用“不要和陌生人说话”糊弄孩子的安全教育吗?...

在许多幼儿安全教育案例中,我们都会看到这样一个试验:记者假扮人贩子,利用棒棒糖、零食去诱惑幼儿园的孩子。在其中一次试验中,21个孩子有20个中招,直接跟着陌生人走了。这个试验最终引出来的结论就是要教育孩子不要和…

CentOS 7文件系统与日志分析详解

Linux 文件系统 在处理 Linux 系统出现的各种故障时,故障的症状是最易发现的,而导致这一故障的原因才是最终排除故障的关键。熟悉 Linux 系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点、“对…

oracle同一个示例两个用户的数据同步_分享两个shell脚本--一键统计Oracle数据库用户信息...

概述今天主要分享一下两个shell脚本,主要是为了查看所有数据库用户及其表空间,统计某个指定用户的明细,下面一起来看看吧~数据库连接脚本use script settdb.sh for DB login details registry#!/bin/bashtmp_username$SH_USERNAMEtmp_passwor…

plsql视图添加表字段_教你不到两分钟,快速创建数据透视图

如果说数据透视表给我们提供了灵活、快捷的数据计算工具, 那么数据透视图就是更直观、动态地展现大批量数据的变化规律和趋势。数据透视图作为数据透视表中的重点内容,高阶的内容包括数据透视图的编辑、美化成高大上的数据分析图表。与万能切片器结合使用实现多表甚…

c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

向数据库的一张表中添加数据,可以采用单个添加,即一条数据、一条数据的添加;也可以采用批量导入,依次将好些条数据写入数据库的一张表中。文本借助实例《添加系列信息》讲解一种向数据库批量导入数据的方法。1.界面设计观看一下添…

项目架构开发:数据访问层之Cache

数据访问层简单介绍 数据访问层,提供整个项目的数据访问与持久化功能。在分层系统中所有有关数据访问、检索、持久化的任务,最终都将在这一层完成。 来看一个比较经典的数据访问层结构图 大概可以看出如下信息 1、有缓存、日志、异常处理、数据CRUD、…

jquery mysql实现加入购物车_jQuery实现加入购物车飞入动画效果

HTML首先载入jQuery库文件和jquery.fly.min.js插件。接着,将商品信息html结构布置好,本例中,我们用四个商品并排布置,每个商品box中包括有商品图片、价格、名称以及加入购物车按钮等信息。¥3499.00LG 49LF5400-CA 49寸…

angular是MVC模式还是MVVM架构模式

下面仅是个人对angular是MVC或者MVVM的理解。 首先在讨论angular是哪种模式之前,我们得先了解什么是MVVM和MVC。 MVVM vs MVC 总体介绍 首先,两者都是一种架构思想。都是从后端演变而来。 具体的演变流程:传统MVC ——> MVP ——>…

mysql current_MySQL中CURRENT_TIMESTAMP数据类型详解

例1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()代码如下mysql> select current_timestamp, current_timestamp();------------------------------------------| current_timestamp | current_timestamp() |----------------------------…

结合vue、react、angular谈谈MVC、MVP、MVVM框架

首先,在谈这个话题之前, 我们有必要了解一下库和框架的区别。 我们先来看react官网以及vue官网对他们的定位: react: vue: react我们不说了,官网上明明白白说了,人家是一个library,用于构建用户界面。 v…

mysql emma_ubuntu mysql emma中文乱码问题解决

ubuntu mysql emma中文乱码问题解决emma默认用apt-get 安装的话,emma是不支持中文的,配置文件或直接修改emma程序源文件(python)。apt-get安装emmasudo apt-get install emmaubuntu的apt-get 安装emma是在/usr/share/emma目录下面。cd /usr/share/emma/e…

Vue(MVVM)、React(MVVM)、Angular(MVC)对比

前言 昨天阿里内推电面一面,面试官了解到项目中用过Vue,就问为什么前端框架使用Vue而不适用其他的框架,当时就懵了。因为只用过Vue,不了解其他两个框架,今天就赶紧去了解一下他们之间的区别。大家发现如果本文中哪个地…

.NET的MVVM框架

Model-View-ViewModel 是一种架构模式,主要在 WPF、Silverlight 和 WP7 开发里使用,它的目标是从视图层移除几乎所有代码隐藏(code-behind)。交互设计师可以专注于使用 XAML 表达用户体验需求,然后创建和视图模型的绑定…

mysql 索引 lt =_MySQL索引相关

MySQL索引采用的是BTREE,多列联合索引是一个有序元组,其中各个元素均为数据表的一列。设一个表有M列,建一个度为n的多列联合索引,深度h lognM,设一组索引列的大小为s,索引文件的大小可以计算为s*M*(1M/nM/…

.NET平台下开源框架

一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率。 NKalore是一款编程语言,它扩展…

mysql存储过程查询所有表_mysql存储过程利用游标查询每个数据库的所有表

DELIMITER $DROP PROCEDURE listAllDB;CREATE PROCEDURE listAllDB()BEGINDECLARE no_more_record INT DEFAULT 0;/*定义2个变量:temp用于记录游标每次next的值,schemaName表示将所有temp拼接后的值*/DECLARE schemaName varchar(500) DEFAULT ;DECLARE …

先进的ASP.NET开源工作流快速开发框架 - RoadFlow

.net可视化工作流引擎RoadFlow - 设计概述 RoadFlow是天知软件旗下基于.NET的工作流快速开发平台,由从事六年以上OA及工作流开发与实施的团队设计开发,该工作流平台已应用于众多大型企事业单位。拥有全浏览器兼容的可视化流程设计器、表单设计器、基于角…

view [bootstrap-4] not found如何解决_Dubbo如何处理业务异常,这个一定要知道哦

前言我们在开发应用系统时,不可避免的要使用到我们自己定义的异常,所以我们一般通常会用到自定义的业务异常类BusinessException,这个异常会继承extends RuntimeException,当发生业务限制的时候,会throw出来。问题在Sp…