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
mysql根据idb还原数据_mysql通过idb文件,恢复数据库相关推荐
- mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库
二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所 ...
- mysql .ibd恢复数据_mysql 根据ibd文件恢复数据
恢复 recover_user.ibd 文件 1.创建数据库recover_ibd 2.创建相同结构表(若有其他库中相同结构表,可根据show create table recover_user;获取 ...
- MySQL基于日志还原数据
简介 Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基 ...
- linux ora 01157,案例:Oracle报错ORA-01157 ORA-01110 数据启动报错RMAN恢复数据库思路
天萃荷净 rman从多份备份中还原操作,运维DBA工程师反映数据库在进行恢复时报错ORA-01157 ORA-01110,分析原因为11号数据文件需要recover 1.数据恢复ORA错误 RMAN& ...
- MySQL利用.ibd文件恢复数据库
MySQL利用.ibd文件恢复数据库 1.需要在新的数据库中新建一个与原来表格表结构相同的表,字段名称相同: 2.清空新建表的表空间 alter table <表名> discard ta ...
- oracle怎么恢复删除数据库数据库文件,Oracle只有数据文件恢复数据库
Oracle只有数据文件恢复数据库 恢复前准备工作 1备份数据文件,文件路径为%ORACLE_NOME%/oradata/xxxx(xxxx为数据库实例) 2备份ORACLE安装路径下的D:\app\ ...
- mysql ibd文件还原_Mysql 通过ibd文件恢复数据
由于未关闭mysql服务就将服务器重启,导致服务器无法重启,使用fsck修复磁盘后启动服务器后,发现mysql数据文件损坏和丢失,但还存在idb文件. 数据库版本:5.7.20 什么是idb文件 如何 ...
- MySQL命令导入表数据_Mysql命令行导入sql数据
mysqldump 是在 操作系统命令行下运行的,不是在 MySQL 命令行下运行的. 登陆数据库: 登陆本地mysql : mysql -h localhost -u root -p123456 ...
- mysql 备份表和数据_Mysql数据库备份(一)------数据库备份和表备份
一.Mysql中的数据备份: Mysql中数据备份使用的命令是:mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中.mysqldump命令的 工作原 ...
最新文章
- Just enough(刚刚好)的软件开发文档什么样?
- python爬虫面试遇到的问题
- X权限 gpasswd getent 命令详解
- 深入理解Transformer及其源码
- 什么是面向对象,为什么要面向对象
- 程序猿的爱情--2011-01-05
- 【计算机网络】关于IP数据报 首部检验和的反码问题(二进制反码)
- 服务器数据库密码修改了,服务器密码修改后数据库
- 【转】pom.xml详解
- 深度报告 | 4G应用启示录与5G应用展望
- 腾讯业务架构:六大事业群
- java 二进制转换为十进制_二进制转换十进制 算法解析
- 留在一线,逃离一线?我从上海举家回老家的生活经历告诉你!
- TFP与TFTP的联系与区别
- 网络信息检索(一)检索模型:布尔,向量,概率检索
- Win实用好用软件清单推荐
- 去除硬盘安全删除硬件图标
- 拼多多的商业模式和营销套路
- java上传图片怎么查看,Java上传图片并查看
- 好用的拍照识别翻译的软件有哪些?这3个工具你知道吗?
热门文章
- hashCode()方法的作用使用分析
- 获取 Web 设计的免费资源
- 753 Cracking the Safe
- [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]
- ZOJ -3203 三分+数学
- 1195C. Basketball Exercise
- android tv字体,best登陆「永久地址0365.tv」android默认字体android使用代码使用新的字体的常用代码...
- bower overrides 配置
- cisco服务器维修,面向终端的AMP控制台的思科维护的排除列表更改
- python 读取excel太慢_Python 读取excel并转换为字典