Chaque fois que je l'ai fait, nous avons fait deux passes ...
- prenez un instantané et, en travaillant sur un autre serveur, utilisez-le pour déterminer ce qui doit être fait pour la migration et créez un script.
- une fois qu'ils ont le script en main, le snapshop est restauré sur le système de test, et il est chronométré pour voir s'il fonctionnera dans le temps requis, ou il est réglé et modifié jusqu'à ce qu'il le puisse.
- faire signer aux parties prenantes que rien ne semble mal avec les données du système de test.
Ensuite, sur un week-end, vous avez une panne programmée:
- Vendredi soir, les systèmes qui utilisent la base de données sont arrêtés, une sauvegarde complète à froid est effectuée et les scripts sont exécutés pour migrer / modifier / quoi que ce soit vers les données
- Les systèmes sont ramenés sous une adresse privée ou configurés de manière à ce qu'ils ne soient ouverts à personne d'autre qu'aux parties prenantes pour les tests d'acceptation
- Si les parties prenantes l'approuvent, le système est mis en ligne et rendu public; sinon, la base de données est restaurée à partir de la sauvegarde effectuée le vendredi soir et vous recommencez le processus.
Avec notre calendrier, les gens de la base de données disposaient généralement de 18 h le vendredi à 10 h le samedi pour exécuter les scripts de sauvegarde et de migration, notre objectif était donc qu'ils s'exécutent en moins de 8 heures (dont 6 étaient des sauvegardes), donc nous '' J'ai un peu de temps pour nos tests et corrections avant qu'ils ne soient communiqués aux parties prenantes.
Les intervenants ont reçu leurs fenêtres horaires à l'avance, ils ont donc su laisser leur week-end ouvert pour les tests au début de la fenêtre. On leur dirait également la fin de leur fenêtre, généralement le dimanche après-midi, où si tout le monde ne s'était pas déconnecté, nous devions commencer à reculer.
Oh, et bien sûr ... si quelqu'un a changé pendant l'un ou l'autre des tests d'acceptation, et que nous avons fait un changement, cela signifiait que toutes les approbations des parties prenantes étaient annulées, et ils devaient refaire le test ... alors nous essayons de leur donner un certain temps pour rechercher les problèmes et exécuter les corrections en tant que lot, plutôt que de les appliquer un par un.
Heureusement, les seules fois où j'ai eu une de ces situations où nous ne pouvions pas avoir de temps d'arrêt significatif, les systèmes que je migrais étaient alimentés à partir de scripts, pas de saisie utilisateur, donc je pouvais simplement avoir deux systèmes parallèles et les échanger quand les choses ont été approuvées. (Une seule fois, il y a eu un problème, lorsque mon patron a insisté pour que nous prenions une sauvegarde complète, ne comprenant pas que le tout allait toujours être en ligne sur une IP différente ... alors qu'est-ce qui aurait dû être une interruption de 5 minutes sur un mauvaise journée est devenue une panne de 5 heures.)