2012-01-07 90 views
11

我需要添加一列到我当前的表中。alter table mysql offline or not?

这张桌子在白天和黑夜使用很多。我发现我需要改变使用在这里找到的alter命令

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

我在开发服务器上测试它。

我花了约2小时完成。现在我想在生产服务器上执行此操作?

这会阻止我的网站?

回答

14

为什么不显示说你会从午夜UTC时间进行维护1月7日2012年

这样一来,你就不会打破任何数据在网站上留言,你不会得到任何MySQL的错误。你执行你的ALTER,并在完成后再次启动站点(不要忘记你的代码,以确保你有正确的领域等)。易于解决。

Stackoverflow做到了,为什么不是你的?

+0

我喜欢这个想法,但什么时候? – 2012-01-07 01:04:11

+0

每个人都说我没有“完美的时间”,查看你的统计数据,看看你什么时候没有或者低流量,然后做改变。 – 2012-01-07 01:06:13

+0

不错的主意,谢谢你的帮助 – 2012-01-07 01:07:02

0

它不会停止您的网站,但它可能会使它引发错误。

当然,如果不查看应用程序的所有代码,就无法回答这个问题。

底线是,如果有疑问安排维护窗口。

1

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

尝试pt-online-schema-change。它允许读取和写入继续,同时捕获要在重新构建完成后针对更改的表进行重播的更改。

在您的开发服务器上仔细测试,以便了解它是如何工作的以及期望的。

+2

似乎很复杂 – 2012-01-07 00:56:51

-3
  1. 使生产服务器在一段时间内指向dev db(或)prodcution db的镜像。
  2. 改变表生产
  3. 部署进行对话的生产DB(新属性)的代码

P.S:我觉得这是更安全,傻瓜证明的方式(根据我的经验)。