我有一个带有 VARCHAR(20) 列的大表,我需要将其修改为 VARCHAR(50) 列。通常,在此特定表上执行 ALTER TABLE(添加 TINYINT)大约需要 90-120 分钟才能完成,因此我实际上只能在周六或周日晚上执行此操作以避免影响数据库的用户。如果可能,我想在此之前进行此修改。
该列也被索引,我认为这会使 ALTER TABLE 变慢,因为它必须在修改列长度后重建索引。
Web 应用程序设置在 MySQL 复制环境中(26 个从站和一个主站)。我记得曾经在某处读到过一种方法是首先在每个从站上执行 ALTER TABLE(最大限度地减少对用户的影响),然后在主站上执行此操作,但那不会尝试将 ALTER TABLE 命令复制到从站吗?
所以我的问题是:对我来说,在对用户的干扰最小的情况下修改此表的最佳方法是什么?
编辑:该表是 InnoDB。