Windows 7 64位MySQL 5.7
全,
我有一个服务器,它有两个驱动器: C:& E:。我想拥有我所有的数据库对象(表、索引等)创建/存储在E驱动器上,因为它是一个较大的磁盘。我有一个来自以前的MySQL实例的转储文件,我想将它导入位于E上的表空间(ts1)中(实际上,我有两个版本的转储文件--一个只有创建表/过程,另一个有包含的数据)。是否有方法用数据导入转储文件,以便所有对象和数据在E:上的ts1中结束?
我试图更改my.ini(cfg)文件中的datadir,但是当我试图重新启动实例/服务时,它失败了(告诉我服务试图启动,然后停止)。
有人能告诉我将转储文件导入特定表空间的推荐方法吗?这是我自己的个人开发服务器,所以可以负担得起停机时间,可以吹走实例或任何其他可能提出的激进解决方案。
我是一名前高级Oracle (所以我可能不正确地考虑表空间),但当涉及到MySQL时,我已经“一个月大了”(所以请不要排除基本/简单的建议)。
请帮帮忙。
提前谢谢。
史蒂夫
发布于 2017-10-22 19:49:33
不幸的是,MySQL还不支持为模式中的所有表定义默认的表空间。您只能显式地声明每个表的表空间。
因此,我建议您需要两个转储文件:一个只有数据定义语言(DDL,即CREATE语句),另一个只有数据( INSERT语句)。您可以使用mysqldump程序来完成这一任务,它有--no-data和--no-create-info的选项。这些选项生成只包含DDL或只包含INSERT语句的转储文件。有关完整的文档,请参见https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html。
然后,您可以遵循以下策略:
也许您不再能够从以前的MySQL安装中生成转储文件。您只有当前转储文件。然后,您可能需要弄清楚如何使用文本编辑器将CREATE语句从数据文件中分离出来,如果给它一个大文件就不会死,或者使用像sed这样的过滤文本工具。
https://stackoverflow.com/questions/46875638
复制相似问题