更新实时项目

时间:2015-11-13 10:07:50

标签: mysql

情况:

  1. 我刚刚部署了我的网站的第一个版本(在PHP中使用 MySQL数据库)。我现在需要转到我网站的第2版。
  2. 我通常在localhost上构建我的网站,然后再将其移至生产服务器
  3. 我现在想要重构我的数据库。但我不清楚如何在不丢失/破坏现有用户数据的情况下这样做。
  4. 我很担心,虽然我正在进行上述更改,但用户可能会尝试 编辑数据库。
  5. 为您提出的问题

    1. 假设我在localhost中重构了我的数据库。我该如何复制 在实时服务器上重组?我是否需要运行每个查询 在localhost和生产服务器上? (似乎非常低效 - 有更好的方法吗?)
    2. 我如何确保在重组数据库时, 数据的神圣性没有受到损害(即我如何确保数据 在我完成工作之前,数据库的“版本”不会改变吗?)

1 个答案:

答案 0 :(得分:2)

您创建了一个"迁移脚本"在sql中收集在两个状态之间迁移数据库所需的所有查询。您可以尝试在开发环境中以及生产环境中需要的频率。

在生产环境的迁移过程中,您可以启用"维护模式"这可以防止对正在进行的数据进行任何更改,并清楚地向用户说明。这里要透明。正在使用两种变体:

  1. 您阻止所有请求并通过"维护标志"临时替换该网站,如果迁移只需要很短的时间,通常就会执行此操作。如果这还不够,那么

  2. 您必须在逻辑中实现只读或维护模式,将所有数据呈现为只读。再说一遍:在此对用户透明。

  3. 如果这是太多的黑客行为,那么你可能想要向大型玩家学习#34;谁永远根本不操作系统,而只是在实例之间切换,通常是实例池。因此,您准备了第二个新系统,并且只在给定时间点切换到该系统。仍然需要处理只读周期以允许数据同步,但交换机本身是快速且可逆的。