0

我有一个客户,他目前有一台带有 Magento 的服务器,他admin关闭了整个站点以进行多个小时的更新。我想让它成为即时过程,以便我想就他应该如何设置它提出新的解决方案:

  • Magento 生产服务器 1 (WEB+DB)
  • Magento 生产服务器 2 (WEB+DB)
  • Magento 开发服务器 1

数据库必须以某种方式在这 2 台服务器之间同步(集群?复制?),我认为为了尽可能缩短停机时间,首先应该在开发服务器上测试更新(升级之前从生产服务器同步的数据库/WEB)和之后检查它是否正常工作并知道该过程的外观我将禁用 LoadBalancing 或 RoundRobin DNS 仅对服务器 1 然后在服务器 2 上进行升级/更新,然后切换到服务器 2 作为生产服务器并更新服务器 1。当两者都完成后切换在负载平衡/循环上。

我来自 Windows 环境,所以这就是我在 Windows 上执行此操作的方式(也可能使用单独的数据库和 Web),并且使用 RedGate SqlCompare/Sql Data Compare 等工具应该可以工作。

但我根本不了解 Magento,所以请让我知道有什么可能,如果客户不想让他的商店倒闭,也许应该怎么做……

4

2 回答 2

1

你肯定需要一个生产服务器,以及某种登台/版本管理系统。我建议查看 Subversion 或 Git 以进行版本管理。可以先将更改提交到存储库,然后在不停机的情况下更新到实时站点。这对于开发环境来说已经绰绰有余了。

对于更大的更改,例如 Magento 版本升级,您可能仍希望/需要在半夜将站点关闭几个小时,因为这是一个更大的过程。

至于多台服务器,作为一个例子,我运行一个负载均衡器,它在主服务器和辅助服务器之间进行平衡。有一个独立的数据库服务器。对开发服务器进行更改,使用 Subversion 提交到主服务器,然后每 60 秒将主服务器和辅助服务器之间的任何更改同步到辅助服务器。

对于此解决方案,会话和缓存数据存储在数据库中。

于 2012-06-07T01:17:49.997 回答
1

恕我直言,拥有良好的托管环境,您不需要多台服务器,除非您确实是成千上万的同时访问者。插件是管理相关问题的常见原因。

我们在“云”环境方面取得了巨大成功。实例化一个新的云实例,获取该 IP,然后在您的“主机”文件中,将 dev.yourdomain.com 之类的内容指向它进行测试。唯一真正的停机时间是您应该在数据库转换为新版本时冻结生产站点,这可能需要几个小时。我们的 mySql DB 备份是 3 GB 左右,但幸运的是 tgz 已降至 280 MB。

我们正在使用 nginx 和 php-fpm,它们的速度非常快。

对我来说典型的迁移路径:

  1. 备份生产站点
  2. 启动新的云实例并将生产站点复制到开发站点(恢复生产数据库)
  3. 尝试一次升级开发站点,看看有什么问题
  4. 启动新的云实例并全新安装最新的 magento 版本
  5. 一旦工作,恢复生产数据库并观察它是否正在转换它,看看有什么问题
  6. 在升级与全新安装之间进行选择
  7. 备份生产 mySql,将生产站点置于维护模式,而开发站点转换数据库
  8. 将域指向新的 IP 地址
于 2012-06-07T18:12:26.893 回答