3

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

我尝试过的事情:

  • RENAME TABLE db1.tbl1TOdb2.tbl1无济于事,因为我无法将其移至其他卷。我无法在 db2 上挂载卷,因为它被认为是不同的文件系统,并且 MYSQL 失败并出现错误:

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

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

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

任何建议将不胜感激。

4

1 回答 1

0

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

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

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

您可能希望为此使用 Percona xtrabackup:

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

于 2018-03-24T09:15:36.483 回答