我正在使用 Magento 开发一个在线商店。该网站的流量很高,需要设置两台服务器,即测试服务器和生产服务器。

我的问题是在线商店,特别是 Magento 如何处理这个问题?

我的想法是:

  • 使生产站点离线
  • 清空测试数据库
  • 从生产数据库复制数据。(或许 )
  • 测试
  • 将文件和数据库复制到生产站点

我知道 Magento 提供了 Enterprise 选项,但这是我想自己编写的脚本。

有帮助吗?

解决方案

您不需要使生产站点脱机。

我建议(并且您应该能够编写脚本)在生产站点上运行 mysqldump -u root -ppassword db_name > db_name.sql 生成数据库的副本。然后在文件目录上运行 rsync (您可以在 Linux 和 Windows 上获得它)以将您想要复制的任何文件(图像?) rsync 到测试机器

在对您希望投入生产的测试进行任何测试后,您可以通过以下两种方式之一进行。要么(我更喜欢这种方法)将您对数据库所做的任何更改保存在 sql 文件中,然后在生产站点上运行该文件,同时同步回任何更改的文件。或者您可以使用 mysql 将所有查询记录到文件中,然后在生产站点上重新播放这些查询。

如果不需要,最好不要关闭生产站点。

其他提示

您希望主/从 mySQL 与从从数据库读取但实时写入。这可以在 local.xml 文件中设置。您应该能够对文件运行 rsync,对 var/session 和 var/cache 文件使用 --exclude。另外,如果它是开发服务器,您可能希望 --exclude 徽标。然后可以将徽标更改为“测试”,这样您就不会将其与 Live 混淆。

实际上,如果您对数据库进行更改,则需要在从旧代码切换到新代码时使站点脱机(即使只有几秒钟),并运行数据库迁移脚本。

您可能有兴趣知道

  • postgres 有事务性 DDL :如果您将迁移脚本包装在事务中并且中间发生了某些事情,则整个事情都会回滚(包括 DROP TABLE)

  • postgres 不需要重写表来添加列(MySQL 需要,而且速度相当慢)

  • 如果您使用 MyISAM,您注定会因多种原因而失败,其中之一是进行备份将使您的站点离线几分钟。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top