我需要更改MySQL innodb表中有164 m行的列的长度。下面是我想运行的脚本: ALTER SESSION_DECISION更改列名VARCHAR(255);
当我尝试运行alter查询时,数据库运行了一个小时,没有完成任务。访问系统的用户(需要写入表)被锁定在外。这是一个实时系统,所以我以ctrl来请求允许用户访问站点。
(这是在半夜
我上的是MySQL 5.0.77。
对于如何在最短的停机时间内更改专栏,有什么建议吗?
发布于 2009-05-10 10:12:04
最好的选择是使用mysql复制设置一个从数据库。假设您的架构更改是可加性的,那么您可以在该副本上发出更新,该副本将在更新期间被阻止。一旦完成,并检查您的从已经赶上所有的更新,然后声明一个小的停机时间,以促进您的从数据库的主。
您可以找到关于设置这里的mysql复制.的说明
发布于 2009-05-10 14:21:56
如果您的数据是严格插入的(而不是更新的),您可能会执行以下操作:
发布于 2009-05-10 10:09:47
当然,这需要很长时间。您应该理解,更改列数据类型,更改底层数据结构,以便数据必须在物理上移动,而且可能需要相当长的时间。我不知道你的硬件的容量,但不管怎么说,都需要一个多小时(想想看,一夜之间)。
至于减少停机时间的方法,你不能直接做。我想您没有数据库的备份实例,是吗?
https://serverfault.com/questions/6771
复制相似问题