正常情况下,数据库的数据量比较小的情况下或者数据库正常情况下可以利用sql方式进行备份。但是如果一旦数据量大且无法利用sql的方式进行备份时,需要利用到数据存储的ibd和frm进行备份。ibd文件是mysql存储的数据内容,frm 是指表结构。
查询需要备份的数据库的存储数据的位置
~ find / -name mysql
查询到的mysql存储位置之后,找到需要备份的数据库文件夹
new_deal 数据库的表结构需要提前准备好。
新建一个数据库,将刚准备好的表结构导入后,开始进行数据恢复步骤了
- 先查看当前数据库的所有表
~ show tables;
- 执行以下命令,将原始的ibd文件进行discard掉,执行解除表空间绑定命令,对应的idb文件自动删除(在mysql工具中执行以下命令)
~ alter table tabel_name discard tablespace; ~ alter table tabel_name discard tablespace;
.......................................
有多少张表就写多少个
- 找到刚刚新建数据库的数据存储位置(在mysql工具中执行以下命令)
~ show global variables like "%datadir%";
将原来需要备份的数据库中的文件夹里面所有 .ibd 文件拷贝到刚刚新建数据库的数据存储位置里面
- 执行命令将刚复制的文件import进数据库中
~ alter table tabel_name import tablespace; ~ alter table tabel_name import tablespace;
.......................................
有多少张表就写多少个
- 有时候会出现权限问题,导致import失败,执行命令赋予权限
~ chown mysql:mysql *.ibd
- 重新执行import命令进行数据的恢复,刷新数据库,发现数据已经恢复成功了