mysql Innodb表空间卸载、迁移、装载的使用方法

  今天在安装mysql时遇到了mysql服务打不开的的情况,通过在cmd中输入MySQL --console,显示错误信息,得到如下情况。

条件:
2台服务器:A和B,需要A服务器上的表迁移到B服务器。
Innodb表:sysUser,记录数:351781。
以下测试在MySQL 5.5.34中进行。
开始处理:
1:在B服务器上建立sysUser表,并且执行:

                                        金沙官网线上 1

复制代码 代码如下:

  原因是InnoDB初始化异常,也就是是说,卸载mysql的时候,忘记卸载了InnoDB服务器,也就造成了,我再次重新安装服务后,再次启动mysql服务器的时候,会出现异常。

zjy@B : db_test 09:50:30>alter table sysUser discard tablespace;

  解决方法:删掉E:MySqlmysql-5.7.22-winx64data中ib_logfile*和ibdata*的文件,然后重启mysql服务器,即可。

2:把A服务器表的表空间(ibd)复制到B服务器的相应数据目录。
3:修改复制过来的ibd文件权限:

 

复制代码 代码如下:

chown mysql:mysql sysUser.ibd

4:最后就开始加载:

复制代码 代码如下:

zjy@B : db_test 10:00:03>alter table sysUser import tablespace;
ERROR 1030 (HY000): Got error -1 from storage engine

报错了,查看错误日志:

复制代码 代码如下:

10:05:44  InnoDB: Error: tablespace id and flags in file './db_test/sysUser.ibd' are 2428 and 0, but in the InnoDB
InnoDB: data dictionary they are 2430 and 0.
InnoDB: Have you moved InnoDB .ibd files around without using the
InnoDB: commands DISCARD TABLESPACE and IMPORT TABLESPACE?
InnoDB: Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html
InnoDB: for how to resolve the issue.
10:05:44  InnoDB: cannot find or open in the database directory the .ibd file of
InnoDB: table `db_test`.`sysUser`
InnoDB: in ALTER TABLE ... IMPORT TABLESPACE

当遇到这个的情况:A服务器上的表空间ID 为2428,而B服务器上的表空间ID为2430。所以导致这个错误发生,解决办法是:让他们的表空间ID一致,即:B找出表空间ID为2428的表(CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;),修改成和sysUser表结构一样的的表,再import。要不就把A服务器的表空间ID增加到大于等于B的表空间ID。(需要新建删除表来增加ID)

要是A的表空间ID大于B的表空间ID,则会有:

复制代码 代码如下:

11:01:45  InnoDB: Error: tablespace id and flags in file './db_金沙官网线上,test/sysUser.ibd' are 44132 and 0, but in the InnoDB
InnoDB: data dictionary they are 2436 and 0.
InnoDB: Have you moved InnoDB .ibd files around without using the
InnoDB: commands DISCARD TABLESPACE and IMPORT TABLESPACE?
InnoDB: Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html
InnoDB: for how to resolve the issue.
11:01:45  InnoDB: cannot find or open in the database directory the .ibd file of
InnoDB: table `db_test`.`sysUser`
InnoDB: in ALTER TABLE ... IMPORT TABLESPACE

本文由金沙官网线上发布于数据库,转载请注明出处:mysql Innodb表空间卸载、迁移、装载的使用方法

您可能还会对下面的文章感兴趣: