做网络游戏服务器升级的最佳做法?

时间:2013-01-21 02:36:02

标签: php mysql upgrade

假设我有一个正在运行的在线游戏,其版本为1.0。

我一直在开发登台服务器并为游戏带来新功能。登台服务器是与实时服务器不同的服务器。 (我相信大多数人都是这样做的)

行。我完成了新版本1.1。现在进行在线游戏服务器升级的最佳做法是什么?

让我们假设它是一个简单的游戏服务器PHP + MYSQL。所以有新的PHP脚本或更改的脚本,以及新的mysql表,列或修改的列。我希望不要手动执行 - 在实时服务器上逐个手动执行相同的更改。这很丑陋,容易犯错误,必须记住你所做的每一项改变。

我能想到的另一种方法是使登台服务器生效,并导入所有现有的数据库数据。我不喜欢它,似乎任何时候都可能发生错误。

您可以推荐的最佳方式是什么?

3 个答案:

答案 0 :(得分:8)

  • 版本控制 - 使用它!
  • 迁移 - 使用它!

版本控制(Git)

你应该在实时服务器上有一个git服务器,就像你的测试/舞台服务器一样。您将对您所做的更改进行提交,然后您将“推送”这些提交/更改到服务器。一旦您的测试服务器工作,您就可以将其推送到您的实时服务器。

<强>迁移

大多数现代PHP框架都提供此功能。基本上,您将在代码中描述您的数据库模式。使用Laravel,您可以运行:artisan migrate或将模式推送到数据库的东西。

只有一个数据库和一个Web服务器,您可能希望阻止公众访问它们直到更新,这主要是针对数据库,并且只会持续几秒钟,但会在迁移时防止任何错误。一个简单的git post hook就可以了。网上有大量关于此的信息。

答案 1 :(得分:2)

创建数据库升级脚本。最好使用工具生成一个。

如果您还没有为版本1.0构建发行包。 为1.1版构建升级包和部署脚本,将生产版本从1.0修补到1.1

有关如何更新现有部署的灵感,您可以查看How Wordpress upgrades

  1. 下载升级包并将其解压缩到临时目录
  2. 确保文件解压缩!
  3. 提出“向下维护”消息
  4. 复制新文件。这是一个直接复制/替换。不删除。
  5. 升级数据库(如果尚未更新)
  6. 从临时目录中删除解压缩的文件
  7. 删除“向下维护”消息
  8. 删除旧文件。浏览已弃用和未使用的文件列表并删除它们。
  9. 使用1.0版本软件包在临时环境中重新创建生产计算机,并测试升级包的部署,直到您满意为止,然后才能上线。

    备份生产,升级生产。

答案 2 :(得分:0)

我听说SharePoint使前端支持旧数据库和新数据库。然后,您首先更新所有前端代码并使用旧数据库。所有用户使用新的前端代码后,请更新数据库。升级完成后,您可以删除对旧数据库的支持,并为下一个版本再次执行相同的操作。

这样,您可以通过负载均衡的前端实现最短的停机时间。

也许他们让它听起来比现在容易,但我喜欢这个原则。