ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

恢复mysql数据

2022-07-22 18:10:08  阅读:89  来源: 互联网

标签:00 dbsake 恢复 sql test mysql var 数据


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

标签:00,dbsake,恢复,sql,test,mysql,var,数据
来源: https://www.cnblogs.com/inkqx/p/16506626.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有