问题 alter table mysql离线与否?


我需要在当前表中添加一列。

这张桌子在白天和晚上都经常使用。我发现我需要使用此处找到的alter命令进行更改

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

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

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

这会阻止我的网站吗?


10104
2018-01-07 00:36


起源



答案:


为什么不在网站上显示一条消息,说明您将从2012年1月7日午夜起执行维护。

这样,你不会破坏任何数据,你不会得到任何mysql错误。您执行ALTER并在完成后再次启动该站点(不要忘记您的代码以确保您拥有正确的字段等)。轻松解决方案

Stackoverflow会这样做,为什么不是你的?


14
2018-01-07 01:02



我喜欢这个想法,但什么时候? - Lauren Smith
我说没有“完美的时间”,检查你的统计数据,看看你什么时候没有或没有流量,然后做出改变。 - Gilbert Kakaz
好主意,谢谢你的帮助 - Lauren Smith


答案:


为什么不在网站上显示一条消息,说明您将从2012年1月7日午夜起执行维护。

这样,你不会破坏任何数据,你不会得到任何mysql错误。您执行ALTER并在完成后再次启动该站点(不要忘记您的代码以确保您拥有正确的字段等)。轻松解决方案

Stackoverflow会这样做,为什么不是你的?


14
2018-01-07 01:02



我喜欢这个想法,但什么时候? - Lauren Smith
我说没有“完美的时间”,检查你的统计数据,看看你什么时候没有或没有流量,然后做出改变。 - Gilbert Kakaz
好主意,谢谢你的帮助 - Lauren Smith


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

尝试 PT-在线模式变化。它允许读取和写入继续,同时它捕获一旦重组完成后要对更改的表重放的更改。

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


1
2018-01-07 00:42



看起来很复杂 - Lauren Smith


它不会阻止您的网站,但它可能会导致错误。

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

当有疑问安排维护窗口时,底线是。


0
2018-01-07 00:41





  1. 使生产服务器指向生成数据库的dev db(或)镜像一段时间。
  2. 改变生产中的表格
  3. 部署与生产数据库对话的代码(使用新属性)

P.S:我觉得这更安全,也是一种万无一失的方式(根据我的经验)。


-3
2018-01-07 00:42