MySQL更改表时应该离线还是在线状态?

11

我需要向当前表格添加一列。

这张表格在白天和黑夜都被频繁使用。我发现我需要使用此处找到的 alter 命令进行修改。

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

我在开发服务器上进行了测试。

用了大约2小时才完成。现在我想在生产服务器上执行这个操作?

这会停止我的网站吗?

4个回答

14

为什么不在网站上显示一条消息,告知你将于2012年1月7日UTC时间午夜进行维护。

这样一来,你就不会丢失任何数据,也不会收到mysql错误。你可以执行ALTER操作,并在完成后重新启动网站(别忘了代码以确保你拥有正确的字段等)。简单明了的解决方案。

stackoverflow做到了,为什么你不能呢?


没有所谓的“完美时间”,查看您的统计数据,看看何时没有或低流量,然后进行更改。 - Gilbert Kakaz

1

是的,在ALTER TABLE期间,所有的读写操作都会被阻塞。如果您的网站需要使用该表,请求将会挂起。

尝试使用pt-online-schema-change。它允许读写操作继续进行,同时捕获对修改后的表进行重放的更改。

请在开发服务器上仔细测试,以便了解其工作原理和预期结果。


0

它不会停止您的网站,但很可能会导致它抛出错误。

当然,没有办法在不查看应用程序所有代码的情况下回答这个问题。

总之,如果有疑问,请安排一个维护窗口。


-3
  1. 让生产服务器指向开发数据库(或者生产数据库的镜像)一段时间。
  2. 修改生产环境中的数据表。
  3. 部署代码,使其连接到带有新属性的生产数据库。

P.S:根据我的经验,我认为这是更安全、更可靠的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接