Menguji dengan data sungguhan menemukan masalah yang tak akan pernah ditemukan data buatan. Ia juga menaruh setiap nama pelanggan, alamat, dan pesanan di server yang dijaga dengan lebih kendur - jadi salinannya dibuat dengan sengaja, bukan dengan cadangan mentah begitu saja.
Apa yang dibuang
- Rincian pembayaran dan token - bahkan empat angka terakhirnya.
- Hash kata sandi, diganti satu nilai yang Anda tahu supaya bisa masuk sebagai siapa pun.
- Kunci API dan rahasia webhook yang tersimpan di tabel pengaturan.
- Apa pun yang harus Anda laporkan seandainya ia bocor.
Apa yang ditulis ulang
Alamat surel, di atas segalanya. Uji coba yang mengirim seratus konfirmasi pesanan ke pelanggan sungguhan adalah kecelakaan lingkungan uji yang paling umum, dan itu tak bisa ditarik kembali.
UPDATE users SET
email = CONCAT('user', id, '@example.invalid'),
phone = NULL,
password_hash = '$2y$10.test.hash';
example.invalid tak pernah bisa menerima kiriman - ia memang dicadangkan persis untuk ini.
Kerjakan dalam satu jalan
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
Simpan pembersihannya sebagai sebuah berkas di repositori, supaya orang berikutnya mengerjakan hal yang sama dan tak ada yang perlu menghafal daftarnya.
Lalu alamat-alamatnya
wp search-replace 'https://yourdomain.com' 'https://staging.yourdomain.com' --all-tables --precise
Lewati yang tak Anda perlukan
mysqldump --single-transaction --ignore-table=live_db.sessions --ignore-table=live_db.audit_log live_db
Tabel catatan dan sesi sering kali menyumbang sebagian besar ukurannya dan tak sedikit pun nilainya.
Kalau datanya cukup peka sehingga membersihkannya membuat Anda waswas, jangan disalin sama sekali. Buat saja himpunan kecil yang masuk akal dan simpan di repositori.