2015-11-13 61 views
0

现状:更新现场项目

  1. 我刚刚部署了我的网站的第一个版本(PHP中 MySQL数据库)。我现在需要转到我的网站的第2版。
  2. 我通常建立我的网站在本地主机,然后将其移动到生产服务器
  3. 我现在想重组我的数据库。但我不清楚如何做到这一点,而不会丢失/破坏现有的用户数据。
  4. 我很担心,在进行上述更改时,用户可能会尝试使用 对数据库进行编辑。

问题为您

  1. 比方说,我调整自己的数据库在本地主机。我如何在现场服务器上复制 这个重组?我是否需要在本地主机和生产服务器上运行每个查询 ? (看起来效率很低 - 有没有更好的方法来做到这一点?)
  2. 我该如何确保在重构​​数据库的同时,不会损害数据的神圣性(即,如何确保数据库的“版本”不会改变,直到我完成我的工作?)

回答

2

您在sql中创建一个“迁移脚本”,收集在两种状态之间迁移数据库所需的所有查询。您可以尝试在开发环境和生产环境中经常需要这些功能。

在生产环境迁移过程中,您启用了一种“维护模式”,可防止对所做数据进行任何更改,并向用户明确说明。在这里透明。两种变型在使用中:

  1. 您阻止所有请求,并通过了“维修标志”,这是典型的,如果做的迁移只需要很短的时间暂时代替现场。如果这还不够,那么

  2. 你必须实现一个只读或维护模式到你的逻辑渲染所有数据为只读。再一次:对你的用户透明。

如果这将是太多的黑客攻击,那么你可能需要从“大玩家”谁从未在所有操纵运行的系统学习,但只有实例之间切换,往往一个实例池。所以你准备了第二个新的系统,并且只能在给定的时间点切换到那个系统。尽管如此,您仍然需要注意一个只读周期以允许数据同步,但交换机本身是快速且可逆的。