Afficher la pageAnciennes révisionsLiens de retourAjouter au livre.Exporter en PDFTout plier/déplierExportation ODTHaut de page Vous affichez une ancienne révision du document ! Si vous l'enregistrez, vous créerez une nouvelle version avec ce contenu. Sélection de fichiers ====== Procédure de restauration des données à partir d'une ou plusieurs sauvegardes ====== La perte des données observée sur les différentes bases de données des clients nous a conduit à rédiger un ensemble de procédures permettant de restaurer les données à partir d'une sauvegarde mise à disposition. * **Prérequis** - Disposer de la sauvegarde et de la base de données anonymisées de la production du client en question en **<color #ed1c24>local</color>** (Par local nous voulons dire avoir les fichiers SQL des 2 bases de données et être en mesure de les restaurer sur votre serveur local de base de données). - Se servir d'un outil d'administration de base données déjà installé. Exemple: Workbench ou dbeaver. ==== Les étapes ==== * Créer deux (2) bases de données l'une contiendra les données de la sauvegarde et l'autre les données anonymisées de la production. <WRAP left round box 70%> Requêtes à exécuter pour créer les différentes bases de données: * **CREATE DATABASE** cynod_nom_client_periode_sauvegarde; * **CREATE DATABASE** cynod_nom_client_prod; </WRAP> * Restaurer les données de la sauvegarde dans la base de données <color #ed1c24>cynod_nom_client_periode_sauvegarde</color><WRAP left round box 60%> === Procédure de restauration de données de la sauvegarde. === * **USE** <color #ed1c24>cynod_nom_client_periode_sauvegarde</color>; Modifier la taille du paquet de communication entre le client et le serveur afin d'empêcher MYSQL de générer des erreurs lors de la restauration des données. convertir la taille des données en Megaoctets puis : ''max_taille_paquet = taille_données_à_restaurer_en_Mo × 1024 × 1024 + 500 × 1024 ×1024'' 500Mo pour avoir une marge de sécurité dans le transfert de grosses quantités de données. * **SET GLOBAL max_allowed_packet**=max_taille_paquet; * **SOURCE** chemin_vers_votre_saugarde/sauvegarde.sql </WRAP> * Restaurer les données de la production dans la base de données <color #ed1c24>cynod_nom_client_prod</color><WRAP left round box 60%> === Procédure de restauration de données de la production. === * **USE** <color #ed1c24>cynod_nom_client_prod</color>; Modifier la taille du paquet de communication entre le client et le serveur afin d'empêcher MYSQL de générer des erreurs lors de la restauration des données. convertir la taille des données en Megaoctets puis : ''max_taille_paquet = taille_données_à_restaurer_en_Mo × 1024 × 1024 + 500 × 1024 ×1024'' 500Mo pour avoir une marge de sécurité dans le transfert de grosses quantités de données. * **SET GLOBAL max_allowed_packet**=max_taille_paquet; * **SOURCE** chemin_vers_votre_bd_prod/prod.sql </WRAP> * Effectuer une requête croisée entre la base de données de sauvegarde et la base de données de production <WRAP left round box 60%> **SELECT** * **FROM** cynod_nom_client_periode_sauvegarde.nom_table nt **WHERE** nt.champ **not in** ( **SELECT** champ **FROM** cynod_nom_client_prod.nom_table); </WRAP> * Créer une table temporaire pour stocker le résultat de la requête si résultat il y a. <WRAP left round box 70%> **CREATE TABLE** temp_nom_table_periode **like** nom_table; </WRAP> * Insérer les données manquantes dans la **table temporaire** <WRAP left round box 75%> **INSERT INTO** temp_nom_table_periode **SELECT** * **FROM** cynod_nom_client_periode_sauvegarde.nom_table nt **WHERE** nt.champ not in ( **SELECT** champ **FROM** cynod_nom_client_prod.nom_table); </WRAP> * Faire un **dump** de la table temporaire <WRAP left round box 85%> **mysqldump -u** nom_user_db **-p** nom_base_données nom_table_temporaire_a_dumper **>** chemin_dossier_stockage_du_dump/nom_du_dump.sql </WRAP> * Fournir le **dump** de la table à l'équipe **INFRA** accompagné de la **requête d'insertion** dans la table où l'on doit restaurer les données extraites de la sauvegarde.<WRAP left round box 100%> * Requête de vérification des données au niveau de la base de données en production pour s'assurer que les données contenues dans la tables temporaire n'y sont pas déjà. ***SELECT * FROM** table_a_restaurer nt **WHERE** nt.champ in (**SELECT** champ **FROM** table_temporaire); * Insertion dans la table sans prendre en compte la colonne ID des données. ***INSERT INTO** nom_table (liste_colonnes_sans_la_colone_ID) **SELECT** liste_des_colonnes_sans_la_colone_ID **FROM** nom_table_temporaire; </WRAP> Enregistrer Aperçu Annuler Résumé Note : En modifiant cette page, vous acceptez que le contenu soit placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International cynod/config_avancee/restaurationdonnees.1714310045.txt.gz Dernière modification: 2024/04/28 13:14par yannick.bribaud