MYSQL 表空间迁移

匿名 (未验证) 提交于 2019-12-02 22:06:11

表空间迁移。

有如下原因你可能需要将InnoDB表复制到不同的数据库服务器上。

  • 不增加生产负载的情况下生成 一个报表
  • 在一个新的服务器上建立一个和生产上数据相同的表
  • 做一个备份在发生问题或错误操作时用于恢复
  • 快速将数据从一个服务器迁移到另一个服务器

命令ʹ.ibd文件保持一致的状态。只有文件处于一致的状态我们才可以复制它。这个命令也会同时创建一个扩展名.cfg的二进制的文件。命令会使用这个二进制文件对导入过程进行校验。

对于版本命令不再一定需要一个扩展名为.cfg二进制文件了。但如果真的没有这个文件我们会收到下面这样一个警告。

Message:InnoDB: IO Read error: (2, No such file or directory) Error opening '.\

test\t.cfg',will attempt to import without schema verification

1row in set (0.00 sec)

这个特性有时候还是很有用的。比如,在模式不匹配的导入过程中,或者在一些需要恢复的情景下,元数据又不能从.ibd文件获得,则这个命令不需要一个扩展名为.cfg的二进制文件就可以导入的特性就很有用。

可迁移表空间的限制:

  • innodb_file_per_tableON. 在共享表空间上的表不能使用这个特性。
  • 当表处理静默状态时,只有只读语句可以使用这张表。
  • 当导入表空间时,目的库的页尺寸要和源库的页尺寸相匹配。
  • DISCARD TABLESPACE表引擎没有这个选项。
  • DISCARD TABLESPACEforeign_key_checks1foreign_key_checks=0.
  • innodb_file_per_tableON

下面是一个实例的操作过程:

运行下面命令,生成一个cnf 文件

flush table t1 for export;

[root@centos test]# cp t1* bak/

对表解锁:

mysql> unlock tables;

删除 t1 表相关文件,frm 文件不会删掉

mysql> alter table t1 discard tablespace; Query OK, 0 rows affected (0.01 sec)

将刚才备份的文件进行还原:

[root@centos test]# cp ./bak/* ./ cp: overwrite `./t1.frm'? yes

执行import 操作:

mysql> alter table t1 import tablespace; Query OK, 0 rows affected (0.01 sec)


文章来源: MYSQL 表空间迁移
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!