Mysql数据库拷贝时出现doesn’t exist in engine

@MySQL的迁移、备份和还原

MySQL的迁移、备份和还原

MySQL数据库的数据文件往往保存在data目录,如果直接拷贝库名代表的文件夹到另外的MySQL安装盘的data目录下,有时刷新即成功,有时却出现doesn’t exist in engine的错误提示!
在此,对于MySQL如何有效备份和还原数据,以及出现问题的简单修复,做个小结。

一. 迁移

对于将MySQL从一台机器迁移到另一台机器,前提条件是 原系统和数据正常 ,按以下方法完成迁移:

1.存储引擎类型为MyISAM引擎

直接复制数据库的某个表文件:TableName.frm、TableName.MYD、TableName.MYI,或者复制数据库文件夹,例如:test库,就拷贝MySql\data\test文件夹

2.存储引擎类型为InnoDB引擎

大多数会是InnoDB引擎,由于这种引擎,数据会存储在MySql目录的ibdata1中,因此: 需要同时复制数据库表*.frm文件和ibdata1文件到相应位置,但ibdata1文件包含所有数据库内容。如果这时采用上述(1)的方式拷贝,可以看到数据库名,但在打开表时,会出现“ XXX doesn’t exist in engine”类似错误。因此,对于InnoDB引擎用以下命令完成迁移:
首先备份:

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

然后先创建数据库(可依托Navicat工具或用命令:create database [DATABASE_NAME];),再还原:

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

或者采用数据库工具导出含数据记录的SQL文件,然后再通过运行该SQL文件完成数据和库表的建立。

3.如何判断存储引擎类型

  • MyISAM类型
    数据存储于"/data/DatabaseName/"文件夹,包含TableName.frm、TableName.MYD、TableName.MYI三个文件;

  • InnoDB类型
    数据存储在"/data/"文件夹的ibDATA1文件或者后缀idb的同名文件,数据结构文件则存在于TableName.frm中。
    要判断自己的MySQL是哪种引擎类型,可以直接看目录文件名满足上述哪一个,或者用下面命令:

    SHOW TABLE STATUS from 数据库库名 where Name=‘表名’;

或者:

mysqlshow -u 数据库登录帐号 -p ‘数据库登录帐号密码’ --status 数据库库名 表名

执行后,
在这里插入图片描述
即可确定引擎类型。

二. 备份还原

1.用SQL文件

该方法适用数据量不是太大的情况,用Navicat等第三方工具,在要转储的数据库名上右键,”转储SQL文件“,即可生成包含结构和数据的SQL文件。
然后,在Mysql中先新建数据库,在数据库名上右键,选择”执行SQL文件“,即可将该数据库中的表和数据恢复。

2.用工具备份还原

备份:

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

还原:

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

参考文献

  • https://zhidao.baidu.com/question/1579913676423874740.html

  • https://www.bluepost.cn/xitongyunwei/mysql-innodb-beifenzhuyishixiang.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值