Chuyển đổi cơ sở dữ liệu sản xuất thành dữ liệu thử nghiệm


15

Thử nghiệm càng gần với sản xuất, nó càng có thể mô phỏng hành vi sản xuất tốt hơn. Tôi muốn sao chép các bản sao lưu cơ sở dữ liệu từ sản xuất vào môi trường thử nghiệm của chúng tôi, nhưng tôi cần thay đổi gì để thử nghiệm hoạt động và để tránh can thiệp vào sản xuất hoặc vô tình gửi email cho khách hàng thực (ngoài cài đặt web/%secure/base_urlurl kiểm tra)?

Một cách khác để suy nghĩ về câu hỏi này là xem xét cách tạo ra thứ gì đó như Dữ liệu mẫu Magento từ dữ liệu sản xuất của riêng tôi.

Câu trả lời:


8

1) Đổ DB

Khi bạn thực hiện xuất, bạn chỉ có thể xuất cấu trúc cho các bảng sau:

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

Cũng core_url_rewritecó thể được nhập chỉ với cấu trúc và chạy URL Danh mục Viết lại reindex sau khi nhập, trừ khi bạn cần tất cả các bản ghi đó (cho các thử nghiệm khác nhau).

Bạn cũng có thể dọn sạch các giỏ hàng bị bỏ rơi (gợi ý sales_flat_quote:), bạn cũng có thể xóa các đơn đặt hàng nếu bạn không cần chúng và chỉ giữ một số lượng hạn chế

2) Cài đặt cấu hình

  • web / (không an toàn | an toàn) / base_url
  • địa chỉ email liên hệ
  • vô hiệu hóa email ( system/smtp/disable) để bạn không gửi nhầm email

3) Anonizing thông tin khách hàng

  • bạn có thể sử dụng mô-đun Anonygento cho Magento
  • viết kịch bản của riêng bạn để làm xáo trộn thông tin khách hàng / đơn đặt hàng / v.v.

4) Cài đặt mô-đun

  • bạn có thể bật chế độ hộp cát cho các mô-đun thanh toán / vận chuyển và thực hiện các cài đặt thích hợp
  • kiểm tra các mô-đun được sử dụng để tích hợp khác nhau (vô hiệu hóa hoặc đặt chúng ở chế độ hộp cát)

Đối với dev, bỏ qua nội dung cho một số bảng là OK. Đối với QA / Dàn dựng, bạn sẽ muốn tất cả các bảng được điền để phản ánh sản xuất càng gần càng tốt.
beeplogic

@FlorinelChris: Tôi nghĩ câu hỏi là về việc đơn giản hóa việc di chuyển db và không làm cho nó phức tạp :) Bu theo bất kỳ cách nào, câu trả lời tốt!
dùng487772

@Tim phần khó là đặt tất cả những điều trên vào một kịch bản ... chạy nó sau đó là giải pháp đơn giản.
FlorinelChis

2

Chúng tôi đã viết một kịch bản để xử lý các bãi chứa DB để phân nhánh. Đọc bài viết này .

Hiệu trưởng cơ bản là nó đọc local.xmlđể lấy thông tin đăng nhập DB, sau đó kết xuất dữ liệu trên cơ sở đó. Nó chia kết xuất thành hai phần, chỉ cấu trúc và sau đó là dữ liệu. Nhưng điều quan trọng là nó tăng tốc quá trình kết xuất thông thường bằng cách bỏ qua dữ liệu không cần thiết và nhất là ngăn chặn bất kỳ khóa bảng nào trong quá trình kết xuất có thể chặn / treo trang web trực tiếp của bạn.

Khi bạn có kết xuất MySQL, bạn có thể thay đổi URL rất dễ dàng chỉ bằng cách sử dụng sed

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

Sau đó chạy một nhập mysql vào DB mới của bạn.

Vì vậy, nếu không có kịch bản, một phiên bản rất cơ bản sẽ trông như thế này.

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

Không có lý do nào để phải xóa tệp local.xml hoặc chạy lại trình cài đặt nếu bạn thay đổi URL trong DB theo cách này.

Toàn bộ quá trình phân nhánh được trình bày rõ trong Hướng dẫn Magento GIT của chúng tôi . Đây là một quy trình tốt để tạo các nhánh phát triển, nhưng thu hẹp DB trực tiếp bằng một lề đáng kể. Vì vậy, các bài kiểm tra sẽ không hoàn toàn giống như trên trang web trực tiếp.

Vì vậy, thực hiện kết xuất DB vanilla, thay thế sed, nhập DB là đủ cho một trang web dàn dựng. Và sẽ phản chiếu / kết hợp các trang web trực tiếp càng chặt chẽ càng tốt.

Về mặt ngăn chặn giao tiếp với khách hàng - chúng tôi chưa bao giờ thấy đó là điều cần thiết, vì chúng tôi luôn tạo tài khoản một cách có chủ ý để thử nghiệm, không bao giờ sử dụng đơn đặt hàng thực sự của khách hàng để thử nghiệm.


1

Một tùy chọn cho vấn đề email là định cấu hình trang web phát triển của bạn để chuyển hướng TẤT CẢ các email cho bạn. Thêm một chút của tâm trí.

Cách bạn làm điều đó phụ thuộc vào môi trường của bạn - để chúng tôi thêm điều này vào vhost thực hiện công việc:

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

0

Không có gì. Thay đổi URL an toàn và không an toàn là khá đủ.

Bạn cũng có thể bỏ qua log_*dữ liệu bảng chỉ để làm cho kết xuất của bạn nhẹ hơn.


1
Nhưng giả sử tôi nói với hệ thống thử nghiệm của mình, tôi đã gửi một đơn đặt hàng - nó sẽ không gửi email cho khách hàng thực sự về nó chứ?
kojiro

Các mục khác cần thay đổi là thông tin đăng ký mô-đun của bên thứ ba nếu bạn đang chạy các khóa trên mỗi tên miền thay vì chỉ là khóa kích hoạt. Tôi cũng bao gồm các địa chỉ email để giao dịch đặt hàng thử nghiệm đi đến một tài khoản thử nghiệm thay vì bàn đặt hàng. Khi bạn lần đầu tiên bắt đầu, các BaseUrl an toàn và không bảo mật là tất cả những gì cần thiết. Nếu bạn có kế hoạch thực hiện việc này thường xuyên, hãy đóng gói tất cả vào một tệp sql và nhập nó sau khi nhập db magento của bạn.
Phòng thí nghiệm Fiasco

@kojiro - Không nếu bạn thiết lập một số tài khoản thử nghiệm. Nói chuyện với quản trị viên email của công ty bạn, để họ thiết lập một vài bí danh email.
Phòng thí nghiệm Fiasco

@FiascoLabs Tôi bối rối. Trong kịch bản này, tôi vừa nhập một cơ sở dữ liệu Magento sản xuất với khách hàng thực sự trong đó. Nếu tôi xử lý một đơn đặt hàng thực sự với một khách hàng thực sự, bí danh email sẽ làm gì?
kojiro

@kojiro bạn đã đúng, sau khi nhập bộ dữ liệu từ sản xuất thì bạn cần xóa / cập nhật thông tin khách hàng / thông tin nhạy cảm. Đây không phải là một câu trả lời tốt vì nó không giải quyết tình huống chính xác.
beeplogic

0

Hãy thử điều này, nó sẽ tranh giành email của người dùng để giúp giải quyết vấn đề của bạn trong việc vô tình gửi email cho khách hàng trực tiếp từ môi trường thử nghiệm

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.