Gerçek veriyle denemek, deneme verisinin asla bulamayacağı sorunları bulur. Ama aynı zamanda her müşteri adını, adresini ve siparişini, daha az özenle korunan bir sunucuya koyar - o yüzden kopya, düz bir yedekle değil, bilerek ve isteyerek çıkarılır.

Neyi çıkarmalı

  • Ödeme bilgileri ve belirteçler - son dört hane bile.
  • Parola özetleri; bilinen tek bir değerle değiştirilir ki herhangi bir kullanıcı olarak girebilesiniz.
  • Ayar tablolarında duran API anahtarları ve web kancası sırları.
  • Sızması hâlinde bildirmek zorunda kalacağınız her şey.

Neyi yeniden yazmalı

Her şeyden önce e-posta adresleri. Gerçek müşterilere yüz sipariş onayı gönderen bir deneme, deneme ortamının tek en yaygın kazasıdır ve geri alınamaz.
UPDATE users SET
  email = CONCAT('user', id, '@example.invalid'),
  phone = NULL,
  password_hash = '$2y$10$known.test.hash';

example.invalid adresine hiçbir zaman teslimat yapılamaz - tam da bunun için ayrılmıştır.

Bunu tek geçişte yapın

mysqldump --single-transaction live_db | \
  gzip > /tmp/live.sql.gz
zcat /tmp/live.sql.gz | mysql staging_db
mysql staging_db < scrub.sql   # the UPDATEs above
rm /tmp/live.sql.gz

Temizliği depoda bir dosya olarak saklayın; böylece sizden sonraki kişi de aynısını yapar ve kimsenin listeyi ezberlemesi gerekmez.

Sonra adresler

wp search-replace 'https://yourdomain.com' 'https://staging.yourdomain.com' --all-tables --precise

İhtiyacınız olmayanı atlayın

mysqldump --single-transaction --ignore-table=live_db.sessions --ignore-table=live_db.audit_log live_db

Kayıt ve oturum tabloları çoğu kez boyutun büyük kısmını, değerin ise hiçbir kısmını oluşturur.

Veri, temizlemek sizi tedirgin edecek kadar hassassa onu hiç kopyalamayın. Onun yerine küçük ve gerçekçi bir küme üretin ve depoda saklayın.