InnoDB 类型MySql恢复表结构与数据
MySQL数据库中,每个表都有一个与之相关的.frm文件,这个文件包含了表的元数据,即表结构的定义信息,并且这些信息是与数据库引擎无关的。而对于使用InnoDB引擎的MySQL数据库,当开启了独立表空间(通过配置myi中的innodb_file_per_table = 1实现),会产生一个与之对应的.ibd文件,这个文件存储了该表的数据和索引。
假设我们已经有了一个需要恢复的数据库的.frm和.ibd文件,并且这个数据库是InnoDB类型的。以下是对恢复步骤的详细阐述:
恢复表结构
创建一个新的数据库并在其中创建一个新表,确保新表的名称和列数与需要恢复的数据库完全一致。
接着,按照以下步骤操作:
1. 停止MySQL服务器。
2. 在MySQL的配置文件/usr/local/mysql/my.f中增加innodb_force_recovery = 6的设置,以强制恢复模式启动。
3. 将需要恢复的.frm文件覆盖/usr/local/mysql/data/数据库目录下的同名文件。
4. 启动MySQL服务器。
5. 停止数据库服务并注释掉my.f中的innodb_force_recovery = 6设置。
6. 再次启动MySQL服务器,此时表结构应该已经恢复。
恢复数据
在恢复数据之前,需要先恢复表结构。然后按照以下步骤操作:
1. 执行`alter table `user`` discard tablespace;`命令,这将删除数据库目录下的user.ibd文件。
2. 将备份的.ibd文件放到相应的目录中。
3. 为这个文件设置权限,使其所有者是mysql。
4. 执行`alter table `user`` import tablespace;`命令,完成数据的恢复。此时需要注意,一些存储在系统表中的信息(如表行记录数)可能会丢失。
备注:如果在恢复过程中遇到外键约束的问题,可以在执行相关语句前加上`SET FOREIGN_KEY_CHECKS = 0;`暂时关闭外键检查,并在完成后重新开启。
以上步骤完成后,应该已经成功恢复了MySQL数据库的表结构和数据。但在实际操作中,请务必小心谨慎,确保在恢复之前已经备份了所有重要数据,以防万一。
编程语言
- InnoDB 类型MySql恢复表结构与数据
- DEDECMS首页调用图片集里的多张图片
- MySQL的指定范围随机数函数rand()的使用技巧
- IE下href 的 BUG问题
- php实现查询百度google收录情况(示例代码)
- mysql 开放外网访问权限的方法
- PHP生成唯一订单号的方法汇总
- SQL Server SQL Agent服务使用教程小结
- php实现QQ空间获取当前用户的用户名并生成图片
- SQLSERVERS 数据整理方法
- 浅谈vue单一组件下动态修改数据时的全部重渲染
- React项目动态设置title标题的方法示例
- jstl 字符串处理函数
- 存储过程的输出参数,返回值与结果集
- flex内嵌html网页示例代码
- 实用的银行转账存储过程和流水号生成存储过程