数据恢复流程
主要使用mysql中的discard、import的两个命令进行恢复。
最好要与原数据库版本、编码保持一致,否则需要自行调整。
前置,先将数据库配置文件中的innodb_force_recovery=2,或者1-4
- 安装mysqlfrm
#下载
wget [https://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5.tar.gz
# 解压
tar -xvf mysql-utilities-1.6.5.tar.gz
# 进入目录开始安装
cd mysql-utilities-1.6.5
python setup.py build
python setup.py install
mysqldiff --version
- 解析frm,获取建表语句并建表
mysqlfrm --diagnostic {绝对路径}
如 mysqlfrm --diagnostic /home/gzyq/user_list.frm
- 建表成功后,清除表空间
数据库中,执行脚本 ,alter table table_name discard tablespace;
可以统一执行,然后在重启数据库。 - 物理数据文件迁移到指定数据库文件目录下
# 查看具体数据库文件目录
show variables like '%datadir%'
- 复制对应.idb,iMD对应数据库目录下
- 重启数据库
# linux
systemctl restart mysql
# windows
net start mysql
# 基于docker
docker restart container_id
# 基于docker-compose
docker-compose -f /home/mysql/docker-compose.yml restart
- 恢复表空间
加载表空间
alter table table_name import tablespace;