【问题标题】:Move very large MYSQL table移动非常大的 MYSQL 表
【发布时间】:2013-11-21 06:41:56
【问题描述】:

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

我尝试过的事情:

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

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

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

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

任何建议将不胜感激。

【问题讨论】:

  • 创建当前卷的快照并从当前快照创建一个新卷并从当前实例附加新卷...

标签: mysql amazon-ebs


【解决方案1】:

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

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

附带说明,如果您的数据库那么大,EBS 可能会成为主要瓶颈。您最好获得本地附加存储,但不幸的是,过程有点不同。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2012-06-14
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多