mysql由.frm和.ibd恢复数据 centos8 mysql5.7.28

因为一些错综复杂的原因,实习生把生产库(阿里云的MySQL)数据覆盖了,目前的备份只有阿里云的.frm和.ibd文件。
以下记录还原数据的过程。

数据小常识:
.frm存放数据库的表结构
.ibd存放数据内容

创建数据库环境

首先需要一个和要恢复的MySQL一个版本的环境。
在这里插入图片描述
通过Navicat看到公司购买的阿里云MySQL是5.7.28的版本
弄一台centos服务器安装这个版本的数据库

如果安装过程中出现 Error:GPG check FAILED。这由于源key错误导致的dnf或者yum(软件包管理器)安装软件失败。
在末尾添加 --nogpgcheck即可,示例:

yum/dnf install packagemame --nogpgcheck

开始安装:

1.下载
	wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
 
2.	解压
	tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
 
3.	准备就绪 查看旧版本
1rpm -qa | grep mysql
	如果没有继续
 
2)	清除yum mysql所有依赖包
	yum remove mysql-libs
 
3rpm -qa | grep mariadb;
	卸载掉自带的mariadb
	rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps;
 
4rpm -qa|grep libaio
	如果没有就安装
	yum -y install libaio
 
4.	安装perl包
	RHEL,CentOS等发行版:sudo yum -y install perl-CPAN
	Ubuntu,Debian等发行版:sudo apt-get install perl-modules
 
5.	安装mysql
	rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
	rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
	rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
	rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
 
6.	启动服务
	systemctl start mysqld.service    启动mysql
	systemctl status mysqld.service  查看mysql状态
	systemctl stop mysqld.service   关闭mysql
 
	查看mysql进程 ps -ef|grep mysql
	查看3306端口 netstat -anop|grep 3306
 
7.	登录mysql 获取临时密码
	grep 'temporary password' /var/log/mysqld.log
	2020-01-07T03:53:22.484179Z 1 [Note] A temporary password is generated for 		root@localhost: -Cro.Xv;E4_,
 
	mysql -uroot -p
	输入临时密码
 
	输入quit 或 exit 都能退出mysql
 
8.	更改密码安全策略
	set global validate_password_policy=0;
	set global validate_password_length=1;
 
9.	重设密码
	set password for root@localhost=password('123456');
 
10.	授权远程登录
    第一种(创建新用户)
	use mysql;//选择数据库
 
	select user,host from user;//查看所有用户
 
	create user 'sunup'@'%' identified by 'shewWE6723&^23.';//创建用户
 
	grant all privileges on *.* to sunup@'%' identified by 'shewWE6723&^23.';//授予远程登录权限
 
	flush privileges;//刷新配置
第二种 在root用户上操作
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;
 
	接下来就可以用新用户登录了 

恢复表结构

如要通过.frm文件恢复表结构,可百度其他博客,我这边是直接手动创建
字段要与被恢复的表一致

CREATE TABLE `buried_record` (
  `id` varchar(20) NOT NULL COMMENT '主键id',
  `count` int(11) NOT NULL COMMENT '埋点数',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

CREATE TABLE `cmn_account` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(255) NOT NULL COMMENT '密码',
  `manage_type` int(11) NOT NULL COMMENT '管理员类型,0:超级管理员;1:研究中心管理员;默认0',
  `centre_id` varchar(20) DEFAULT NULL COMMENT '分管的研究中心ID',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


CREATE TABLE `flat_pattern` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `module_code` int(11) NOT NULL COMMENT '模块编码,详情见ModuleEnums',
  `banner` varchar(500) NOT NULL COMMENT 'banner,图片地址',
  `vertical_picture_1` varchar(500) NOT NULL COMMENT '竖排图片一,图片地址',
  `vertical_picture_2` varchar(500) NOT NULL COMMENT '竖排图片二,图片地址',
  `vertical_picture_3` varchar(500) NOT NULL COMMENT '竖排图片三,图片地址',
  `vertical_picture_4` varchar(500) NOT NULL COMMENT '竖排图片四,图片地址',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


CREATE TABLE `jobadlist` (
  `insurance` varchar(100) DEFAULT NULL,
  `modifiedTime` varchar(100) DEFAULT NULL,
  `jobCategory` varchar(100) DEFAULT NULL,
  `maxSalary` varchar(100) DEFAULT NULL,
  `yearsOfWorking` varchar(100) DEFAULT NULL,
  `channel4HasReward` varchar(100) DEFAULT NULL,
  `jobAdName` varchar(100) DEFAULT NULL,
  `channel4IsLong` varchar(100) DEFAULT NULL,
  `innerChannelIsTop` varchar(100) DEFAULT NULL,
  `termValidity` varchar(100) DEFAULT NULL,
  `welfare` varchar(100) DEFAULT NULL,
  `orgId` varchar(100) DEFAULT NULL,
  `jobAdIntId` varchar(100) DEFAULT NULL,
  `channel4IsHot` varchar(100) DEFAULT NULL,
  `innerChannelClassificationOne` varchar(100) DEFAULT NULL,
  `isDeleted` varchar(100) DEFAULT NULL,
  `createdTime` varchar(100) DEFAULT NULL,
  `channel16RewardText` varchar(100) DEFAULT NULL,
  `channel4HideRewardForExStaff` varchar(100) DEFAULT NULL,
  `channel4Category` varchar(100) DEFAULT NULL,
  `channelId` varchar(100) DEFAULT NULL,
  `locId` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `channel4SequenceNumber` varchar(100) DEFAULT NULL,
  `innerChannelClassificationThree` varchar(100) DEFAULT NULL,
  `salaryType` varchar(100) DEFAULT NULL,
  `channel16RewardValue` varchar(100) DEFAULT NULL,
  `kind` varchar(100) DEFAULT NULL,
  `headCount` varchar(100) DEFAULT NULL,
  `degree` varchar(100) DEFAULT NULL,
  `requireYear` varchar(100) DEFAULT NULL,
  `minSalary` varchar(100) DEFAULT NULL,
  `workTime` varchar(100) DEFAULT NULL,
  `jobIntId` varchar(100) DEFAULT NULL,
  `jobId` varchar(100) DEFAULT NULL,
  `customProperties` varchar(100) DEFAULT NULL,
  `channel4InMicroRecommendReward` varchar(100) DEFAULT NULL,
  `channel4HideRewardForInStaff` varchar(100) DEFAULT NULL,
  `jobAdId` varchar(100) DEFAULT NULL,
  `postDate` varchar(100) DEFAULT NULL,
  `detailAddress` varchar(100) DEFAULT NULL,
  `duty` varchar(100) DEFAULT NULL,
  `innerChannelClassificationTwo` varchar(100) DEFAULT NULL,
  `endTime` varchar(100) DEFAULT NULL,
  `channel4ExMicroRecommendReward` varchar(100) DEFAULT NULL,
  `category` varchar(100) DEFAULT NULL,
  `channel4RewardDescription` varchar(100) DEFAULT NULL,
  `status` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


CREATE TABLE `news_info` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `news_title` varchar(255) NOT NULL COMMENT '新闻标题',
  `news_type_id` varchar(20) NOT NULL COMMENT '新闻类型ID',
  `section` int(11) NOT NULL DEFAULT '0' COMMENT '首页显示版块,详见SectionEnums枚举',
  `major_flag` int(11) NOT NULL DEFAULT '0' COMMENT '是否重大新闻,0:否;1:是;默认0',
  `news_cover` varchar(500) DEFAULT NULL COMMENT '新闻封面,图片地址',
  `logo_image` varchar(500) DEFAULT NULL COMMENT '媒体新闻logo,图片地址',
  `news_banner` varchar(500) DEFAULT NULL COMMENT '新闻详情banner',
  `news_content` text COMMENT '新闻内容',
  `news_source` varchar(50) NOT NULL COMMENT '新闻来源,默认aiit',
  `publish_date` datetime NOT NULL COMMENT '新闻发布时间',
  `publisher_id` varchar(20) NOT NULL COMMENT '新闻发布人员ID',
  `publisher_name` varchar(20) DEFAULT NULL COMMENT '新闻发布人员姓名',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  `news_type_name` varchar(20) DEFAULT NULL COMMENT '新闻类型名称,冗余',
  `banner_text` varchar(20) DEFAULT NULL COMMENT '封面文案',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

CREATE TABLE `news_type` (
  `id` varchar(20) NOT NULL DEFAULT '' COMMENT '主键ID',
  `type_name` varchar(20) NOT NULL COMMENT '类型名称',
  `type_order` int(11) NOT NULL DEFAULT '0' COMMENT '排序序号',
  `type_description` varchar(255) DEFAULT NULL COMMENT '类型描述',
  `deletable` int(11) NOT NULL DEFAULT '0' COMMENT '可删除标识,0:否;1:是;默认0',
  `first_class_id` varchar(30) DEFAULT NULL COMMENT '所属一级类目id,为空字符代表没有所属一级类目',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


CREATE TABLE `partner_company` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `name` varchar(50) NOT NULL COMMENT '公司名称',
  `image_url` varchar(500) DEFAULT NULL COMMENT '企业图标地址',
  `url` varchar(500) DEFAULT NULL COMMENT '企业网站地址',
  `sort` int(11) DEFAULT NULL COMMENT '企业排序',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


CREATE TABLE `partner_company_form` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `name` varchar(50) NOT NULL COMMENT '公司名称',
  `url` varchar(500) DEFAULT NULL COMMENT '企业网站地址',
  `sort` int(11) DEFAULT NULL COMMENT '企业排序',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


CREATE TABLE `request_logs` (
  `id` varchar(20) NOT NULL COMMENT '主键id',
  `user_id` varchar(100) NOT NULL COMMENT '请求发起人id',
  `url` varchar(100) NOT NULL COMMENT '请求路由',
  `parameter` varchar(255) DEFAULT NULL COMMENT '请求参数',
  `response_code` int(11) NOT NULL COMMENT '请求结果标识码',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;


CREATE TABLE `research_centre` (
  `id` varchar(20) NOT NULL COMMENT '主键 ID',
  `centre_name` varchar(100) NOT NULL COMMENT '中心名称',
  `centre_description` varchar(255) DEFAULT NULL COMMENT '中心描述',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;


CREATE TABLE `research_centre_lab` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `lab_name` varchar(100) NOT NULL COMMENT '实验室名称',
  `research_centre_id` varchar(20) NOT NULL COMMENT '研究中心ID',
  `lab_description` varchar(500) NOT NULL COMMENT '实验室简介',
  `lab_order` int(11) NOT NULL DEFAULT '0' COMMENT '排序,默认0',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;




CREATE TABLE `research_centre_talents` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `real_name` varchar(20) NOT NULL COMMENT '姓名',
  `photo` varchar(500) DEFAULT NULL COMMENT '照片,图片地址',
  `post` varchar(50) NOT NULL COMMENT '职位',
  `description` varchar(500) DEFAULT NULL COMMENT '简介',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  `research_centre_id` varchar(20) NOT NULL COMMENT '所属研究中心id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;





CREATE TABLE `settled_enterprise` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `enterprise_name` varchar(100) NOT NULL COMMENT '企业名称',
  `enterprise_order` int(11) NOT NULL,
  `enterprise_logo` varchar(500) DEFAULT NULL COMMENT '企业LOGO,图片地址',
  `enterprise_website` varchar(255) DEFAULT NULL COMMENT '企业官网',
  `enterprise_description` varchar(500) NOT NULL COMMENT '企业简介',
  `enterprise_pictures` varchar(1000) DEFAULT NULL COMMENT '企业相关图片',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;




CREATE TABLE `united_laboratory` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `lab_name` varchar(100) NOT NULL COMMENT '实验室名称',
  `lab_description` varchar(500) NOT NULL COMMENT '实验室简介',
  `lab_order` int(11) NOT NULL COMMENT '实验室排序等级',
  `lab_cover` varchar(500) DEFAULT NULL COMMENT '实验室图片',
  `lab_source` varchar(50) NOT NULL COMMENT '实验室来源',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;




CREATE TABLE `website_banner` (
  `id` varchar(20) NOT NULL COMMENT '主键ID',
  `banner_image` varchar(500) NOT NULL COMMENT 'Banner图片地址',
  `banner_link` varchar(255) DEFAULT NULL COMMENT 'Banner跳转链接',
  `banner_order` int(11) NOT NULL DEFAULT '0' COMMENT '显示顺序,默认0',
  `is_inside` int(11) DEFAULT NULL COMMENT '0:外部链接,返回的是网址,1:内部链接,返回的是id,默认0',
  `banner_text` varchar(20) DEFAULT NULL COMMENT '封面文案',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;




这样就会在对应的数据库下产生.frm和.ibd文件 ,
执行解除关联命令,使结构和数据分离

ALTER TABLE 表名字 DISCARD TABLESPACE;
 
比如:
 
ALTER TABLE user DISCARD TABLESPACE;
 
当表名字和mysql中的关键词一样是的时候需要加上 ``ALTER TABLE `user` DISCARD TABLESPACE;   
 
ALTER TABLE `comment` DISCARD TABLESPACE;  

这时候数据库文件下面的 user.ibd 文件就会消失

将备份的ibd放到消失的user.ibd文件下

修改权限,所有者mysql,权限660
可cd进入MySQL文件默认存放路径/var/lib/mysql/库名,执行:

[root@bdy huifu]# chown -R mysql:mysql ./*

再执行结构数据关联命令:

ALTER TABLE 表名字 IMPORT TABLESPACE;

至此完成恢复。

ALTER TABLE buried_record DISCARD TABLESPACE;
ALTER TABLE cmn_account DISCARD TABLESPACE;
ALTER TABLE flat_pattern DISCARD TABLESPACE;
ALTER TABLE jobadlist DISCARD TABLESPACE;
ALTER TABLE news_info DISCARD TABLESPACE;
ALTER TABLE news_type DISCARD TABLESPACE;
ALTER TABLE partner_company DISCARD TABLESPACE;
ALTER TABLE partner_company_form DISCARD TABLESPACE;
ALTER TABLE request_logs DISCARD TABLESPACE;
ALTER TABLE research_centre DISCARD TABLESPACE;
ALTER TABLE research_centre_lab DISCARD TABLESPACE;
ALTER TABLE research_centre_talents DISCARD TABLESPACE;
ALTER TABLE settled_enterprise DISCARD TABLESPACE;
ALTER TABLE united_laboratory DISCARD TABLESPACE;
ALTER TABLE website_banner DISCARD TABLESPACE;





ALTER TABLE buried_record IMPORT TABLESPACE;
ALTER TABLE cmn_account IMPORT TABLESPACE;
ALTER TABLE flat_pattern IMPORT TABLESPACE;
ALTER TABLE jobadlist IMPORT TABLESPACE;
ALTER TABLE news_info IMPORT TABLESPACE;
ALTER TABLE news_type IMPORT TABLESPACE;
ALTER TABLE partner_company IMPORT TABLESPACE;
ALTER TABLE partner_company_form IMPORT TABLESPACE;
ALTER TABLE request_logs IMPORT TABLESPACE;
ALTER TABLE research_centre IMPORT TABLESPACE;
ALTER TABLE research_centre_lab IMPORT TABLESPACE;
ALTER TABLE research_centre_talents IMPORT TABLESPACE;
ALTER TABLE settled_enterprise IMPORT TABLESPACE;
ALTER TABLE united_laboratory IMPORT TABLESPACE;
ALTER TABLE website_banner IMPORT TABLESPACE;

不知道表结构可以使用mysqlfrm软件将.frm的表结构导入成表结构SQL语句(有linux版和windows版)
参考链接:
https://blog.csdn.net/qq_41116956/article/details/82996319
centos8安装mysql8教程:
https://blog.csdn.net/qq_39150374/article/details/112471108

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值