因为一些错综复杂的原因,实习生把生产库(阿里云的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. 准备就绪 查看旧版本
1) rpm -qa | grep mysql
如果没有继续
2) 清除yum mysql所有依赖包
yum remove mysql-libs
3) rpm -qa | grep mariadb;
卸载掉自带的mariadb
rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps;
4) rpm -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版)