J'ai actuellement une tâche planifiée qui se déclenche chaque nuit à 2 heures du matin qui appelle SQLCMD.exe et lui transmet un script .sql à exécuter pour la sauvegarde (illustré ci-dessous). Nous sommes une assez petite entreprise avec des besoins croissants en raison d'une croissance importante du côté des affaires. Perdre 1 jour de données à ce stade coûterait des dizaines de milliers de dollars contre quelques centaines l'année dernière. Jusqu'à ce que je puisse migrer cette plate-forme de base de données vers une autre solution où la mise en miroir des données se produit avec une redondance majeure comme SQL Azure, quelle est la meilleure chose que je puisse faire pour obtenir des sauvegardes plus fréquentes? Ce script ci-dessous force-t-il la base de données à être hors ligne? Puis-je exécuter ce script avec des utilisateurs interagissant avec la base de données?
USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
WITH FORMAT,
MEDIANAME = 'CompanyCRM_Backup',
NAME = 'Full Backup of CompanyCRM';
GO
Mettre à jour
Wow, évidemment une communauté DBA beaucoup plus dédiée ici que sur SO. Merci pour le retour jusqu'à présent. La seule chose qui manque est le «comment». J'ai montré la commande SQL ci-dessus que j'utilise pour effectuer des sauvegardes quotidiennes, mais les exemples de sauvegarde de journal incrémentielle sont MIA. Ce n'est pas une grande base de données, il fonctionne actuellement sur SQLExpress. Quand je dis HA ou SQL Azure, je fais spécifiquement référence à l'architecture en place que nous n'avons pas en tant que petite entreprise. Cette instance s'exécute actuellement sur notre SEUL serveur. Si ce serveur tombe en panne, notre temps de récupération devient un point critique. C'est pourquoi SQL Azure devient attrayant.
la source
Réponses:
EDIT, à partir de votre mise à jour
Comme vous avez dit que vous pouvez perdre 1 jour de données, je mettrais simplement les bases de données en mode de récupération SIMPLE. Vous pouvez ensuite faire un COMPLET chaque matin et / ou soir. Si vous vouliez vous couvrir pendant la journée, vous pourriez effectuer une sauvegarde différentielle de la base de données, une de ces situations au cas où. Cela capturera toutes les modifications apportées depuis la sauvegarde complète. Si je connais un laps de temps où de nombreuses entrées se produisent, je pourrais lancer ce type de sauvegarde une fois terminé. Cela peut faire gagner du temps aux gens pour récupérer afin qu'ils n'aient pas à faire de saisie de données supplémentaires.
Puisque c'est votre seul serveur, je m'assurerais que vous exécutez DBCC CHECKDB sur les bases de données. Les sauvegardes ne servent à rien lorsque vous découvrez qu'elles sont corrompues (je pense que quelqu'un l'a également mentionné). Vous pouvez probablement trouver quelques scripts pour configurer une tâche planifiée afin de vérifier le SQL ERRORLOG pour le message DBCC afin de détecter toute erreur. SQL Server ne vous avertira pas nativement des erreurs renvoyées par les messages DBCC, donc à moins que vous ne vérifiiez manuellement chaque fois qu'un script qui le fait peut vous aider.
La commande de sauvegarde différentielle:
la source
la source
La première chose que vous devez faire est de déterminer la quantité de données que vous pouvez vous permettre de perdre. Jusque-là, vous n'aurez aucune idée de la fréquence de sauvegarde de la base de données. Ce n'est pas un nombre que vous devriez trouver. C'est quelque chose que l'entreprise (ou le PDG d'une petite entreprise) devrait décider. Le premier numéro avec lequel ils vont revenir est 0 minute. Ce qui peut être fait, mais cela coûtera très cher. En réalité, la plus petite quantité de données pour laquelle vous pouvez effectuer des sauvegardes est d'environ toutes les 2 minutes. Si la quantité de données changeant dans le système est suffisamment petite, vous pouvez effectuer des sauvegardes toutes les minutes.
Pour effectuer des sauvegardes du journal des transactions, ce que vous devrez faire, vous devrez mettre la base de données en mode de récupération complète.
Si vous pouvez vous permettre de perdre 5 minutes de données, vous voudrez probablement effectuer des sauvegardes complètes quotidiennement et des sauvegardes du journal des transactions toutes les 5 minutes. Si vous pouvez perdre 15 minutes de données, vous voudrez effectuer des sauvegardes complètes et des sauvegardes du journal des transactions toutes les 15 minutes.
Une autre option serait de faire des sauvegardes complètes hebdomadaires, des sauvegardes différentielles quotidiennes et des sauvegardes du journal des transactions toutes les x minutes comme je le dis ci-dessus.
Gardez à l'esprit que plus vous devrez effectuer de sauvegardes fréquemment, plus vous devrez restaurer de fichiers en cas de défaillance de la base de données ou de suppression des données. Il peut être judicieux d'effectuer des sauvegardes différentielles tout au long de la journée pour raccourcir le temps nécessaire à la restauration de la base de données.
Toutes les sauvegardes qui utilisant la base de données BACKUP et l'instruction BACKUP LOG sont effectuées en ligne et n'empêchent pas les utilisateurs d'accéder à la base de données.
la source
Disons que vous avez un scénario commercial commun avec votre période la plus occupée: 9h-17h du lundi au vendredi. Ensuite, je suggérerais: une sauvegarde complète le dimanche soir. Sauvegardes différentielles à 8 h, 18 h et 1 h (pour réduire le temps de récupération). Enregistrez les sauvegardes toutes les heures ou en fonction des besoins de votre entreprise.
Selon votre période de rétention, vous devriez avoir un travail de nettoyage automatique pour effacer les anciens fichiers de sauvegarde. Tous ces éléments peuvent être créés à l'aide de plans de maintenance SQL. Vérifiez ce lien pour SQL 2005 .
Vous devez stocker vos sauvegardes sur une certaine forme de disque redondant (en miroir), ou vous pouvez utiliser des bandes pour le stockage hors site. Les utilisateurs peuvent continuer à travailler sur le système pendant l'exécution des sauvegardes.
la source
Je ne ferais pas de sauvegarde complète tous les soirs. S'il s'agit d'une grande base de données, cela pourrait prendre très longtemps, sans parler de prendre beaucoup de place sur les médias. Effectuez une sauvegarde complète chaque week-end et une sauvegarde différentielle tous les soirs. Effectuez ensuite une sauvegarde du journal des transactions (en supposant que votre base de données est en pleine récupération) toutes les heures ou toutes les demi-heures, mais assurez-vous que ces fichiers .bak et .trn résident sur un disque distinct en cas de défaillance du disque.
la source
Pouvez-vous synchroniser votre dossier de sauvegardes dans le cloud la nuit pour obtenir un stockage hors site? Étant donné que je suis sûr que c'est pour une entreprise de soins de santé, y en a-t-il qui sont suffisamment sécurisés pour la conformité HiPA? Ou peut-être simplement les super-crypter?
Le script place-t-il au moins une copie de la sauvegarde sur un partage réseau? De cette façon, si la boîte physique explose ...
la source