以最短的停机时间更改大型 Innodb 表上的列长度

Wil*_*ass 2 mysql innodb

我需要更改具有 164M 行的 MySQL innodb 表中的列长度。这是我要运行的脚本: ALTER TABLE SESSION_DECISION CHANGE COLUMN NAME NAME VARCHAR(255);

当我尝试运行更改查询时,数据库搅动了一个小时并且没有完成任务。访问系统的用户(需要写入表的用户)被锁定。这是一个实时系统,因此我最终控制了请求以允许用户访问该站点。

(这是在半夜——使用量很少,但我感到紧张)。

我使用的是 MySQL 5.0.77。

关于如何以最短的停机时间更换色谱柱,您有什么建议吗?

Dav*_*ney 5

最好的选择是使用 mysql 复制设置从属数据库。假设您的架构更改是累加性的,那么您可以在该副本上发出更新,该副本将在更新期间被阻止。完成后,检查您的从属数据库是否已赶上所有更新,然后声明一个小停机时间以将您的从属数据库升级到主数据库。

您可以在此处找到有关设置mysql 复制的说明。