C'est un domaine énorme - alors attendez-vous à ce que cette question soit fermée dans un délai assez court, mais, du haut de ma tête (en tant qu'ancien DBA sur d'énormes bases de données):
Mart / Dépôt
Vous pouvez atténuer certains risques si vous disposez d'une base de données distincte pour les mises à jour et d'une base de données distincte que tout le monde utilise. Ensuite, il s'agit simplement de copier les données d'un DB à l'autre une fois que diverses vérifications ont été effectuées. Mart / repository est la façon dont il est parfois décrit, mais vous pouvez avoir primaire / secondaire, maître / esclave, etc.
Code source
Pour tout ce qui peut changer, ayez un code source qui explique comment les données ont été mises à jour. Le nombre de ceux-ci varie d'une base de données à l'autre, mais vous pouvez en avoir un pour chaque utilisateur, rôle, flux de données, module de code, etc.
Date de création / mise à jour
La création et la mise à jour des données pour chaque ligne peuvent être très utiles lors du suivi des problèmes. Ensuite, vous pouvez voir d'un coup d'œil quelles lignes ont été mises à jour.
ETL
Si la mise à jour de la base de données fait partie d'une fabrique de données, vous pourrez peut-être restaurer un millésime précédent à partir de fichiers plats.
Sauvegarde
Les sauvegardes complètes prennent bien sûr beaucoup d'espace mais le scénario habituel est qu'une sauvegarde complète se produise à intervalles réguliers (dit, hebdomadaire) et partielles sur une base plus fréquente (quotidienne, etc.).
Récupération ponctuelle
Selon le SGBDR que vous utilisez, certains points de support prennent en charge la récupération dans le temps. Cela vous permet de revenir à l'époque où un bon état était connu. Cela nécessite cependant une grande quantité de stockage qui augmente en fonction de la distance que vous souhaitez parcourir.
Audit
Les tables d'audit vous diront qui (ou quoi) a mis à jour une ligne. Cela peut vous donner un bon point de départ pour une enquête.
Histoire
Pour certaines tables critiques, une copie de la ligne pertinente est prise au moment de la mise à jour afin que les données puissent être restaurées si nécessaire.
La validation des données
Assurez-vous que les contrôles de validation de base sont effectués sur les données avant leur stockage - en plus des contrôles de type de données de base.
Intégrité référentielle
L'intégrité référentielle n'est pas une solution miracle, mais elle peut aider à garantir que les données sont bien structurées.