J'ai besoin de sauvegarder 10 à 20 bases de données SQL Server 2008 R2 avec des tailles comprises entre 10 et 50 Go, alors qu'elles sont en ligne et utilisées simultanément par une seule application d'entreprise. J'ai également besoin de les restaurer dans un état largement synchronisé sur toutes les bases de données (je peux me permettre jusqu'à quelques secondes de désynchronisation entre les bases de données). Le but est de capturer les données de production pour les environnements QA / DEV.
Je voudrais fortement ne pas exiger de bases de données exécutées en récupération complète et proposer une méthode de sauvegarde dédiée à la capture de données pour les environnements QA et qui reste indépendante d'un processus de sauvegarde principal qui n'est pas sous mon contrôle.
Pour mes clients, il faudra 1 à 2 heures pour capturer 20 sauvegardes complètes à ~ 30 Go chacune. Cela rend la prise de sauvegardes complètes séquentiellement inacceptable car les bases de données seraient trop désynchronisées lors de l'exécution dans une récupération simple.
Je cherche une idée meilleure que celles-ci:
IDÉE 1: Instantané au niveau SAN des disques VM. xcopy MDF / LDF à partir d'un instantané.
Une fois les fichiers copiés attachés à une autre instance de serveur, son processus de récupération devrait produire des bases de données cohérentes qui sont à peu près instantanées.
La recherche sur Google m'a convaincu que c'est une mauvaise idée, au moins parce que je peux obtenir une désynchronisation par rapport à master / msdb / etc.
IDEA 2: orchestrez une sauvegarde et une synchronisation-restauration complexes sur toutes les bases de données
Cela me demande des bases de données exigeantes exécutées en récupération complète, ce que je ne veux pas. Lancez des sauvegardes parallèles pour toutes les bases de données bien avant la date limite (T0). Une fois T0 atteint, sauvegardez tous les journaux (cela devrait prendre au plus quelques minutes). Prenez la myriade de sauvegardes qui en résulte et essayez de les restaurer et de faire défiler les journaux vers l'avant / l'arrière pour obtenir un état quelque peu cohérent entre les bases de données, par rapport à T0.
Cela nécessite beaucoup de planification et de script pour l'utiliser de manière fiable, donc je ferais tout mon possible pour l'éviter.
Suis-je en train de manquer une autre solution?
PS1: J'aurais adoré pouvoir utiliser des instantanés db . L'idée était de lancer un instantané sur chaque base de données (qui devrait se terminer en quelques secondes), puis de sauvegarder intégralement chacune de manière séquentielle au cours des minutes / heures suivantes. Ensuite, restaurez-les tous sur un serveur différent et restaurez chacun sur l'instantané. AFAIK ce scénario n'est pas possible car les instantanés ne peuvent pas être sauvegardés avec la base de données. Ils ne peuvent être restaurés que sur le serveur où ils ont été créés. De plus, ils nécessitent Enterprise Edition que je n'ai pas pour tous les clients.
PS2: Si vous connaissez une solution tierce capable de produire des sauvegardes synchronisées cross-db, veuillez la mentionner.