移动非常大的MYSQL表

时间:2013-11-09 05:55:20

标签: mysql amazon-ebs

我在Amazon Std EBS 1TB卷上有一些非常大的MySql表(每个表的文件标志为ON,每个ibd文件大约为150 GB)。我需要将所有这些表从数据库db1移动到数据库db2。除此之外,我还想将表格移到另一个亚马逊卷(我认为它被认为是一个不同的分区/文件系统,即使FileSystem类型相同)。我移动到另一个卷的原因是我可以获得另一个1TB空间。

我尝试过的事情:

  • RENAME TABLE db1.tbl1db2.tbl1没有帮助,因为我无法将其移至其他卷。我无法在db2上安装卷,因为它被认为是一个不同的文件系统,MYSQL失败并出现错误:

      

    “无效的跨设备链接”错误18

  • 创建存根db2.tbl1, stopped mysql, deleted db2's tbl1 and copied over db1's tbl.ibd.不起作用(数据库信息隐藏在ibd中?)

我不想尝试显而易见的mysqldump-import或selectinto-loadfile,因为即使进行了大多数优化(外键检查等),每个表也需要一天半的时间。如果我在导入之前取出索引,重新索引需要很长时间,并且所花费的总时间仍然太长。

我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

通常我在这种情况下建议的是创建卷的ec2快照并将该快照写入更大的卷。

之后您需要调整分区大小。

作为旁注,如果您的数据库很大,则EBS 可能成为主要瓶颈。你最好获得本地附加存储,但不幸的是这个过程有点不同。

您可能希望使用Percona xtrabackup:

https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html