Setiap kali saya melakukannya, kami melakukan dua lintasan ...
- mengambil snapshot, dan bekerja di server yang berbeda, gunakan itu untuk menentukan apa yang harus dilakukan untuk migrasi, dan skrip itu.
- begitu mereka memiliki skrip di tangan, snapshop dikembalikan pada sistem uji, dan waktunya untuk melihat apakah itu akan berjalan dalam waktu yang diperlukan, atau itu disetel dan dimodifikasi hingga bisa.
- minta para pemangku kepentingan menandatangani bahwa tidak ada yang tampak salah dengan data pada sistem pengujian.
Kemudian, selama akhir pekan, Anda memiliki pemadaman terjadwal:
- Jumat malam, sistem yang menggunakan basis data diturunkan, cadangan dingin penuh dibuat, dan skrip dijalankan untuk bermigrasi / memodifikasi / apa pun ke data
- Sistem dibawa kembali di bawah beberapa alamat pribadi atau entah bagaimana diatur sehingga tidak terbuka untuk siapa pun kecuali para pemangku kepentingan untuk pengujian penerimaan
- Jika para pemangku kepentingan menyetujui, sistem akan daring dan dipublikasikan; jika tidak, basis data akan dipulihkan dari cadangan yang dibuat pada Jumat malam, dan Anda memulai proses dari awal lagi.
Dengan jadwal kami, orang-orang basis data umumnya memiliki dari jam 6 sore pada hari Jumat hingga jam 10 pagi pada hari Sabtu untuk menjalankan skrip cadangan & migrasi, jadi tujuan kami adalah bahwa mereka akan berjalan di bawah 8 jam (~ 6 dari itu adalah cadangan), jadi kami d punya waktu untuk pengujian dan koreksi kami sebelum dirilis ke para pemangku kepentingan.
Para pemangku kepentingan diberikan waktu mereka sebelumnya, jadi mereka tahu untuk membiarkan akhir pekan mereka terbuka untuk pengujian di awal jendela. Mereka juga akan diberi tahu akhir jendelanya, biasanya hari Minggu sore, di mana jika semua orang belum menandatangani, kita harus mulai memutar kembali.
Oh, dan tentu saja ... jika seseorang mengalami perubahan selama salah satu tes penerimaan, dan kami membuat perubahan, itu berarti bahwa semua sign-off pemangku kepentingan dibatalkan, dan mereka harus menguji ulang ... jadi kami akan mencoba memberi mereka semua waktu untuk mencari masalah dan menjalankan koreksi sebagai batch, daripada menerapkannya satu per satu.
Untungnya, satu-satunya saat saya mengalami salah satu situasi di mana kami tidak dapat memiliki waktu henti yang signifikan, sistem yang saya migrasikan diumpankan dari skrip, bukan input pengguna, jadi saya bisa menjalankan dua sistem paralel, dan menukarnya ketika semuanya ditandatangani. (hanya sekali ada masalah, ketika bos saya bersikeras bahwa kami mengambil cadangan penuh, tidak memahami bahwa semuanya akan tetap online pada IP yang berbeda ... jadi apa yang seharusnya menjadi pemadaman 5 menit pada sebuah hari yang buruk menjadi pemadaman 5 jam.)