我在Amazon Std EBS 1TB卷上有一些非常大的MySql表(每个表的文件标志为ON,每个ibd文件大约为150 GB)。我需要将所有这些表从数据库db1移动到数据库db2。除此之外,我还想将表格移到另一个亚马逊卷(我认为它被认为是一个不同的分区/文件系统,即使FileSystem类型相同)。我移动到另一个卷的原因是我可以获得另一个1TB空间。
我尝试过的事情:
RENAME TABLE db1.tbl1
对db2.tbl1
没有帮助,因为我无法将其移至其他卷。我无法在db2上安装卷,因为它被认为是一个不同的文件系统,MYSQL失败并出现错误:
“无效的跨设备链接”错误18
创建存根db2.tbl1, stopped mysql, deleted db2's tbl1 and copied over db1's tbl.ibd.
不起作用(数据库信息隐藏在ibd中?)
我不想尝试显而易见的mysqldump-import或selectinto-loadfile,因为即使进行了大多数优化(外键检查等),每个表也需要一天半的时间。如果我在导入之前取出索引,重新索引需要很长时间,并且所花费的总时间仍然太长。
我们非常感谢任何建议。
答案 0 :(得分:0)
通常我在这种情况下建议的是创建卷的ec2快照并将该快照写入更大的卷。
之后您需要调整分区大小。
作为旁注,如果您的数据库很大,则EBS 可能成为主要瓶颈。你最好获得本地附加存储,但不幸的是这个过程有点不同。
您可能希望使用Percona xtrabackup:
https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html