技术数据库MYSQL5.7 通过frm、ibd还原数据库
FangsikaiMysql 数据库安装
数据库:MYSQL 版本 5.7
操作系统:Windows 11 专业版 22H2
情况:由于使用微信迁移C盘,导致数据库服务中断,使用原msi文件进行安装部署,无法安装成功。
思路:使用绿色版数据库进行安装,下载好MYSQL5.7.17,由于关键文件ibdata1缺失,只有frm、ibd文件,
故可以用MySQL Utilities工具进行还原数据库。
下载地址:
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.17-winx64.zip
下载地址:
https://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5-winx64.msi
操作步骤:
1、安装对应版本的MYSQL
my.ini 文件配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   | [mysql] default-character-set=utf8
  [mysqld] port=3306
  basedir="D:\Programs\mysql-5.7.17-winx64"
  datadir="D:\Programs\mysql-5.7.17-winx64\data"
  max_connections=200
  character-set-server=utf8
  default-storage-engine=INNODB
  # 开启binlog log_bin=mysql-bin binlog-format=ROW server-id=1001
 
   | 
 
环境变量配置:添加PATH=D:\Programs\mysql-5.7.17-winx64\bin
初始化MYSQL
1 2 3 4 5 6 7 8 9
   | mysqld --initialize
  mysqld --install 【服务名】
  net start 【服务名】
  net stop  【服务名】
  sc delete 【服务名】
   | 
 
修改密码
1 2 3 4 5 6 7
   | mysql -uroot   mysql -uroot -p 密码
 
  use mysql;
  UPDATE user SET authentication_string=PASSWORD("xxxxxx") WHERE User="root";
   | 
 
MySQL Utilities 数据库安装
使用链接工具可以进入mysql后,安装MySQL Utilities,配置环境变量:
PATH=D:\Program Files\MySQL\MySQL Utilities 1.6\
1、拷贝.frm 文件到data/数据库名称,目录下
原理:.frm文件存储的是表的结构信息;.ibd 文件存储的是表对应的数据信息
还原步骤:
1、先使用.frm恢复表结构;2、再使用.ibd恢复数据;
操作过程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | 1、恢复表结构 执行示例:mysqlfrm --server=root:rootpassword@localhost mydb:mytable.frm --port=3307,获取到创建表的sql;
  代码示范:mysqlfrm --server=root:fangsikai1987@localhost taobao:tb_device.frm --port=3307
  数据库名:taobao
  数据表名:tb_device
  文件:tb_device.frm,  tb_device.ibd
  端口:3307 注意端口与数据库不能公用,是自定义的端口
  此时,data目录中的.frm文件需要被删除,重新执行创建sql;
   | 
 
2、恢复数据
a、创建表时,创建默认的.ibd文件,需要移除表空间操作,删除数据文件;
b、拷贝备份的.ibd数据文件到对应的目录,挂接表空间;
从CMD窗口拷贝的创建表–示例:
1 2 3 4 5 6 7 8 9 10 11 12 13
   | CREATE TABLE `taobao`.`tb_device` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `pn_number` varchar(100) DEFAULT NULL COMMENT '',   `name` varchar(100) DEFAULT NULL COMMENT '',   `desc` varchar(1000) DEFAULT NULL COMMENT '',   `device_type` varchar(100) DEFAULT NULL COMMENT '',   `brand` varchar(100) DEFAULT NULL COMMENT '',   `release_date` date DEFAULT NULL COMMENT '',   `folder_path` varchar(200) DEFAULT NULL ,   `done` int(11) DEFAULT '0' ,   `param_done` int(11) DEFAULT '0' ,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
   | 
 
表空间操作–代码示范:
1 2 3 4 5 6 7 8 9 10
   | 
  执行删除表空间
  ALTER TABLE `taobao`.`tb_device` DISCARD TABLESPACE;
  拷贝备份的.ibd 文件到data/数据库名称,执行表空间变更
  ALTER TABLE `taobao`.`tb_device` IMPORT TABLESPACE;
 
 
  |