恢复mysql数据
2022/7/23 2:22:48
本文主要是介绍恢复mysql数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 环境与工具
系统环境:linux
当前目录:/var/test/下
待恢复的表结构文件:在 /var/test/mysql/testdb/ 下的所有frm文件
待恢复的表数据文件:在 /var/test/mysql/testdb/ 下的所有ibd文件
还原表结构工具:dbsake
2 恢复表结构
2.1 下载
curl -s http://get.dbsake.net > dbsake
2.2 赋权
chmod u+x dbsake
2.3 批量读取 表结构
生成创建表结构sql语句 至文件 /var/test/mysql/rev/rev.sql
sudo ./dbsake frmdump /var/test/mysql/testdb/*.frm > /var/test/mysql/rev/rev.sql
利用mysql可视化工具导入sql文件,因为表结构和数据库版本问题,导入时可能会遇到问题,需要根据报错信息调整sql文件,以下为常见问题
2.4 常见导入问题
- 字段类型为timestamp、不为空 时,必须有默认值。
默认值需要是大于等于1970-00-00 08:00:02
的标准时间格式(其他文章看到是1970-00-00 00:00:01,但是本地测试结果为需要多加八小时左右,可能会根据区时有所不同) - 两个字段同时设置为timestamp、可为空、无默认值 时,可能会报错。建议至少其中一个设置默认值。
3 恢复表数据
3.1 删除新建表的表空间
ALTER TABLE tablename DISCARD TABLESPACE;
3.2 复制表空间并授权
cp tags.ibd /var/lib/mysql/<database_name> cd /var/lib/mysql/<database_name> chown mysql:mysql tags.ibd
3.3 关联表空间
ALTER TABLE tablename IMPORT TABLESPACE;
3.4 可能问题
如果关联时遇报错:
Schema mismatch (Table has ROW_TYPE_DYNAMIC row format, .ibd file has ROW_TYPE_COMPACT row format.)
说明表行类型不一致,需要修改成后面的类型。
以以上报错为例,需要修改成COMPACT,则对应的修改语句如下(该语句执行后可能会删除复制的idb文件,如果删除了请重新从3.2开始执行步骤)
ALTER TABLE tablename ROW_FORMAT=COMPACT;
4.参考
https://blog.csdn.net/xiaojin21cen/article/details/103971628
https://mp.weixin.qq.com/s/6BM22N6FfmhsWYWEJfJO9w
这篇关于恢复mysql数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程