mysql innodb 文件备份_MySQL InnoDB引擎数据库备份注意事项(由拷贝数据库文件备份引起的Table doesn’t exist)...

问题描述及原因

以前使用的MySQL数据库表引擎都是MyISAM类型的,备份数据库时就复制MySQL data文件夹下的数据库文件夹。这次采用同样的方法还原wordpress项目数据库时,却出错了,用MySQL命令查询数据表提示#1146 – Table ‘XXX’ doesn’t exist,用phpMyAdmin查看数据表提示#1932 – Table ‘XXX’ doesn’t exist in engine。

d5e5c91016844f0520ddc1b00e7c8d34.pngphpMyAdmin查看数据表提示错误#1932 – Table ‘XXX’ doesn’t exist in engine

为何会出现这种情况,是因为该wordpress项目数据库采用的是InnoDB引擎,该类型的数据文件有部分内容存在data文件夹下的ibdata1文件中,备份时只复制数据库文件夹是不行的,同时需要复制ibdata1文件。

引擎主要类型及数据文件存储结构

MySQL引擎有DBD,HEAP,ISAM,MERFE,MyISAM,InnoDB和Gemeni7种,其中比较重要的是MyISAM和InnoDB两种。MyISAM适合场景:做很多count的计算;插入不频繁,查询非常频繁;没有事务。InnoDB适合场景:可靠性要求比较高,或者要求事物;表更新和查询都相当频繁,并且行锁定的机会比较大的情况。

MyISAM的数据文件以Table.frm、Table.MYD、Table.MYI三个文件存储于/data/$databasename/目录中。InnoDB的数据文件存储在$innodb_data_home_dir/中的ibdata1文件中(一般情况,默认采用的是共享表空间),结构文件存在于table_name.frm中。

5907b97d61064c63905e16312cfa6b2f.pngMyISAM和InnoDB的数据文件存储目录对比

InnoDB中有共享表空间和独立表空间的概念。共享表空间就是ibdata1,独立表空间放在每个表的.ibd(数据和索引)和.frm(表结构)为后缀的文件中。单独的表空间只存储该表的数据,索引和插入缓冲的BITMAP等信息,其余还放在共享表空间中。更改my.ini文件中innodb_file_per_table = 1,可开启独立表空间。

数据库备份注意事项

MySQL的数据库文件直接复制便可使用,但那是指“MyISAM”类型的表。MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。InnoDB类型的数据库想通过复制文件使用,就需要同时复制innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置,但这就存在一个问题,那就是“ibdata1”文件包含所有的InnoDB引擎数据库内容,无法单个数据库复制备份,而且还容易出现异常,就算是开启独立表空间,还是有部分数据(比如字典信息和Undo)会存在ibdata1文件中。采用InnoDB引擎的数据库无法直接通过复制进行单个数据库的备份和还原,最好通过mysqldump进行备份与还原或者采用专业工具备份还原。

mysqldump备份还原操作方法

方法如下:

1.备份数据库

mysqldump -u [USERNAME] -p [DATABASE_NAME] > [BACKUP_FILE_NAME]

2.还原数据库(DATABASE_NAME数据库已存在)

mysql -u [USERNAME] -p [DATABASE_NAME] < [BACKUP_FILE_NAME]

3.若该设备没有此数据库,则需执行sql语句,创建新的数据库,然后再还原数据库

mysql> create database [DATABASE_NAME];

总结

1.如果是MyISAM引擎,直接复制数据库文件Table.frm、Table.MYD、Table.MYI即可,如果数据库引擎是InnoDB,切记还需拷贝ibdata1文件,但由于InnoDB存储情况复杂,不建议采用这种方法备份;

2.备份数据库的时候,最好是用专业的工具进行备份或通过mysqldump导出sql文件,以免出现意外,浪费时间在数据库恢复上。

赞 (20)ff354313748565e2d62d91e70a4b2e12.png支付宝扫码打赏710ed89972575467ec9ef7ca9e1395d4.png微信扫码打赏赏分享 (0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值