测试离生产越近,可以更好地模拟生产行为。我想将数据库备份从生产环境复制到我们的测试环境中,但是我需要更改什么才能使测试有效,并避免干扰生产或意外向真实客户发送电子邮件(除了设置web/%secure/base_url
测试URL)?
思考此问题的另一种方法是考虑如何从我自己的生产数据中生成诸如Magento样本数据之类的数据。
测试离生产越近,可以更好地模拟生产行为。我想将数据库备份从生产环境复制到我们的测试环境中,但是我需要更改什么才能使测试有效,并避免干扰生产或意外向真实客户发送电子邮件(除了设置web/%secure/base_url
测试URL)?
思考此问题的另一种方法是考虑如何从我自己的生产数据中生成诸如Magento样本数据之类的数据。
Answers:
1)DB转储
导出时,只能导出下表的结构:
core_cache
core_cache_option
core_cache_tag
log_customer
log_quote
log_summary
log_summary_type
log_url
log_url_info
log_visitor
log_visitor_info
log_visitor_online
enterprise_logging_event
enterprise_logging_event_changes
index_event
index_process_event
report_event
report_viewed_product_index
dataflow_batch_export
dataflow_batch_import
也core_url_rewrite
可以仅使用结构导入,并在导入后运行目录URL重写重新索引,除非您需要所有这些记录(用于各种测试)。
您还可以清理废弃的购物车(提示:)sales_flat_quote
,也可以删除不需要的订单,而只保留数量有限的订单
2)配置设置
system/smtp/disable
),这样您就不会误发电子邮件3)取消客户信息
4)模块设置
我们编写了一个脚本来处理数据库转储以进行分支。阅读本文。
基本原理是,它读取local.xml
来获取DB凭据,然后在此基础上转储数据。它将转储分为两部分,仅是结构,然后是数据。但是关键是它通过跳过不必要的数据来加快传统的转储过程,并且最关键的是防止在转储期间任何表锁定会阻塞/挂起您的活动站点。
获得MySQL转储后,只需使用以下命令即可非常轻松地更改URL sed
sed -i 's/www.mydomain.com/staging.mydomain.com/g' ./var/db.sql
然后将mysql导入到新数据库中。
因此,没有脚本,一个非常基本的版本将如下所示。
mysqldump -hHostname -uUsername LiveDbname -p > db.sql
sed -i 's/www.mydomain.com/staging.mydomain.com/g' db.sql
mysql -hHostname -uUsername DevDbname -p < db.sql
如果您以这种方式在数据库中更改URL,则根本没有理由删除local.xml文件或重新运行安装程序。
我们的《Magento GIT指南》详细介绍了整个分支过程。这是创建开发分支的好过程,但确实会大大减少活动数据库。因此测试不会与实际站点完全相同。
因此,执行临时数据库转储,sed替换,数据库导入对于暂存站点就足够了。并将尽可能地镜像/匹配实时站点。
在防止与客户的沟通方面-我们从未发现它是必需的,因为我们总是故意创建用于测试的帐户,从不使用真实的客户订单进行测试。
没有。更改安全和不安全的URL就足够了。
您可能还想省略log_*
表数据,只是为了减轻转储负担。