프로덕션 데이터베이스를 테스트 데이터로 변환


15

테스트가 프로덕션에 가까울수록 프로덕션 동작을 더 잘 모방 할 수 있습니다. 프로덕션에서 테스트 환경으로 데이터베이스 백업을 복사하고 싶지만 테스트가 작동하도록 변경하고 실제 고객에게 실수로 이메일을 보내지 않기 위해 web/%secure/base_url테스트 URL을 설정 하는 것 외에 무엇을 변경해야 합니까?

이 질문에 대해 생각하는 또 다른 방법 은 내 프로덕션 데이터에서 Magento 샘플 데이터 와 같은 것을 생성하는 방법을 고려하는 것 입니다.

답변:


8

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) 구성 설정

  • 웹 / (비보안 | 보안) / base_url
  • 연락처 이메일 주소
  • system/smtp/disable실수로 이메일을 보내지 않도록 이메일 비활성화 ( )

3) 고객 정보를 익명화하십시오

  • Magento에 Anonygento 모듈을 사용할 수 있습니다
  • 고객 정보 / 판매 주문 등을 난독 처리하기위한 자체 스크립트 작성

4) 모듈 설정

  • 결제 / 배송 모듈에 샌드 박스 모드를 활성화하고 적절한 설정을 할 수 있습니다
  • 다양한 통합에 사용되는 모듈 확인 (비활성화 또는 샌드 박스 모드로 설정)

dev의 경우 일부 테이블의 내용을 무시해도됩니다. QA / 스테이징의 경우 모든 테이블에 채워진 프로덕션을 최대한 가깝게 반영해야합니다.
beeplogic

@ FlorinelChris : DB 마이그레이션을 단순화하고 복잡하게 만들지 않는 것이 문제라고 생각했습니다.
user487772

@Tim 어려운 부분은 위의 모든 것을 스크립트에 넣는 것입니다 ... 나중에 실행하는 것이 간단한 해결책입니다.
FlorinelChis

2

분기를위한 DB 덤프를 처리하는 스크립트를 작성했습니다. 이 기사를 읽으십시오 .

기본 원칙은 local.xmlDB 자격 증명을 가져 오기 위해를 읽고 그런 다음 데이터를 덤프합니다. 덤프를 두 부분 (구조 만)과 데이터로 나눕니다. 그러나 핵심은 필수적이지 않은 데이터 를 생략하여 기존 덤프 프로세스의 속도를 높이고 덤프 중 라이브 사이트를 차단 / 매단시키는 테이블 잠금을 가장 중요하게 방지하는 것입니다.

MySQL 덤프가 있으면 다음을 사용하여 URL을 매우 쉽게 변경할 수 있습니다. sed

sed -i 's/www.mydomain.com/staging.mydomain.com/g' ./var/db.sql

그런 다음 새 DB로 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

이런 식으로 DB의 URL을 변경 한 경우 local.xml 파일을 삭제하거나 설치 프로그램을 다시 실행해야 할 이유가 없습니다.

분기의 전체 과정은 Magento GIT 안내서 있습니다. 이는 개발 브랜치를 생성하는 좋은 프로세스이지만 라이브 DB를 크게 줄입니다. 따라서 테스트는 실제 사이트와 완전히 동일하지 않습니다.

따라서 스테이징 사이트에 바닐라 DB 덤프, sed replace, DB 가져 오기를 수행하면 충분합니다. 라이브 사이트를 최대한 가깝게 미러링 / 일치시킵니다.

고객과의 의사 소통 방지 측면에서, 테스트를 위해 고의적으로 계정을 생성하고 테스트를 위해 실제 고객 주문을 사용하지 않기 때문에 반드시 필요한 것은 아닙니다.


1

이메일 문제의 한 가지 옵션은 모든 이메일을 사용자에게 리디렉션하도록 개발 사이트를 구성하는 것입니다. 약간의 마음을 추가합니다.

그렇게하는 방법은 환경에 따라 다릅니다.이를 호스트에 추가하면 작업이 수행됩니다.

php_admin_value sendmail_path "/usr/sbin/sendmail -i -- xyphoid@example.com,coworker@example.com"

0

아무것도. 안전하고 안전하지 않은 URL을 변경하면 충분합니다.

log_*덤프를 더 가볍게 만들기 위해 테이블 ​​데이터 를 생략 할 수도 있습니다 .


1
그러나 테스트 시스템에 주문한 제품을 배송했다고 말하면 실제 고객에게 이메일을 보내지 않습니까?
kojiro

변경이 필요한 유일한 다른 항목은 활성화 키가 아닌 도메인 당 키를 실행하는 경우 타사 모듈 등록 정보입니다. 또한 테스트 주문 거래가 주문 데스크 대신 테스트 계정으로 전달되도록 이메일 주소도 포함합니다. 처음 시작할 때 보안 및 안전하지 않은 baseUrl 만 있으면됩니다. 이 작업을 자주 수행 할 계획이라면,이를 모두 sql 파일로 패키지하고 magento db 가져 오기 후에 가져 오십시오.
Fiasco Labs

@kojiro-테스트 계정을 설정하지 않은 경우 회사 이메일 관리자에게 문의하여 몇 개의 이메일 별칭을 설정하도록하십시오.
Fiasco Labs

@FiascoLabs 혼란 스러워요. 이 시나리오에서는 실제 고객이있는 프로덕션 Magento 데이터베이스를 가져 왔습니다. 실제 고객과의 실제 주문을 처리하면 전자 메일 별칭이 어떻게됩니까?
kojiro

@ kojiro 당신이 맞습니다. 프로덕션에서 데이터 세트를 가져온 후 고객 / 민감한 정보를 스크럽 / 업데이트해야합니다. 상황을 올바르게 해결하지 못하기 때문에 좋은 답변이 아닙니다.
beeplogic

0

테스트 환경에서 우발적으로 실시간 고객에게 이메일을 보내는 데 도움이되도록 사용자 이메일을 스크램블합니다.

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.