【问题标题】:Re-architecting MySQL Indexes重新构建 MySQL 索引
【发布时间】:2011-09-26 04:43:55
【问题描述】:

由于以前的索引设计不佳,我必须重新构建索引结构。 我有大约 200 个表,每个表有几千到 2000 万行。 手动删除索引并在生命系统上创建新索引需要几天时间。

这是我的想法:

  1. 我删除了架构(备份后;)

  2. 创建新架构

  3. 运行一个完整系列的 CREATE TABLE 语句,声明所需的主键和索引(大约需要一分钟)

  4. 在新架构中运行数据库的 RESTORE(这可能需要 2 小时 - 但不是几天)

这有意义吗?

【问题讨论】:

  • 无论如何,你仍然需要重建索引。

标签: mysql architecture indexing schema


【解决方案1】:

我认为您提出的解决方案是相似的,但您可以启动一个新的复制从属服务器,然后先对该机器上的架构进行更改。只要您只对索引进行更改,那么事件将继续被重新应用而不会出现错误。

更改完成后,您可以 1) 将 slave 提升为 master,在 slave 上应用相同的更改,然后切换回来,或者 2) 停止两个 MySQL 实例并将原始数据文件从 slave 复制到 master。

使用此方法,索引仍会重建,但在从站上进行更改需要多长时间确实很重要。唯一的停机时间是复制文件所需的时间。

还有其他解决方案可以在不使用从属设备的情况下对表执行非阻塞更改,例如 Oak-online-alter-table http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/oak-online-alter-table.html 和 Facebook http://www.facebook.com/notes/mysql-at-facebook/online-schema-change-for-mysql/430801045932 开发的类似工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多