SelectEtoile : Base de connaissance SGBD

Posts Tagged 'restauration'

Sauvegarde / Restauration

Sauvegarde / restauration d'une table : 

Bcp out :

  • mysql> SELECT a,b,a+b INTO OUTFILE '/tmp/jp1.txt'
  • -> FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  • -> LINES TERMINATED BY '\n'
  • -> FROM jp1;

 

Bcp in :

  • mysql> LOAD DATA INFILE "/tmp/jp1.txt" INTO TABLE jp1
  • -> FIELDS TERMINATED BY ',' ENCLOSED BY '' ESCAPED BY '\\'
  • -> LINES TERMINATED BY '\n';
  • LOAD DATA INFILE 'ta_syb_aseconfig_total.out' INTO TABLE ta_syb_aseconfig
  • FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '\\'
  • LINES TERMINATED BY '\n';

 

Sauvegarde d'une Base de données

mysqldump [options] db_name [tables]

Sauvegarde : mysqldump -u root -ppwd --opt mabase -h monServeur > backup-production.sql

Exemple : mysqldump --socket=mysql.sock --user=root --password=pwd testjp > /tmp/testjp.sql

La commande dump permet de générer le script de création des objets et de la base elle même. Ci-dessous, un exemple de résultat de la commande :

 

-- MySQL dump 10.9

--

-- Host: localhost Database: testjp

-- ------------------------------------------------------

-- Server version 4.1.11-max-log

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

 

--

-- Table structure for table `jp1`

--

 

DROP TABLE IF EXISTS `jp1`;

CREATE TABLE `jp1` (

`a` int(11) default NULL,

`b` int(11) default NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

 

--

-- Dumping data for table `jp1`

--

 

 

/*!40000 ALTER TABLE `jp1` DISABLE KEYS */;

LOCK TABLES `jp1` WRITE;

INSERT INTO `jp1` VALUES (3,8),(1,1),(10,10),(6,7),(5,5),(8,9);

UNLOCK TABLES;

/*!40000 ALTER TABLE `jp1` ENABLE KEYS */;

 

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

 

Il faut prévoir un flush des logs binaire avant la sauvegarde full :

Soit lancer un 'flush logs' dans mysql

Soit ajouter l'option --flush-logs dans la commande mysqldump

 

Autre exemple de mysqldump :

mysqldump --opt ${DATABASE} --databases --routines --triggers --single-transaction --master-data=2 --hex-blob --flush-logs

--master-data=2 permet de mettre une ligne de commentaire dans le fichier généré donnant le binlog courant ainsi que la position
--single-transaction : permet de rendre transactionnel la sauvegarde et donc consistant
--hex-blob : Sauvegarde les colonnes binaires utilisant La notation hexadecimale
 
 

 

 

Restauration d'une base de données :

Restauration d'un dump full :

mysql -u root -ppwd -h monServeur -D mabase2 < backup-production.sql

Exemple : ‘mysql testjp < /tmp/testjp.dump’

 

Restauration des log binaire :

mysqlbinlog mysql-bin.000062 mysql-bin.000063 | mysql


Sauvegarde / restauration table (vont disparaître)

  • BACKUP TABLE table [, table] ... TO '/repertoire/de/sauvegarde/';
  • RESTORE TABLE table [, table] ... FROM '/repertoire/de/sauvegarde/';

 

 

Sauvegarde a l’aide de mysqlhotcopy (Prérequis : Perl et packages DBI)

  • mysqlhotcopy db_name [/répertoire/de/sauvegarde]
  • mysqlhotcopy -u root -ppwd mabase /mstoto/sgbd/sauvegarde/

 

 

 

 

 

Sauvegarde / Restauration Cubes OLAP MSAS

Sauvegarde d'un cube OLAP via MS-SQLServer :

Pour cela, il suffit de définir un job dans l'instance SQLServer avec un step comme suit :

Type    : SQL Server Analysis Services Command

Run as : SQL Server Agent Service Account

Server  : Machine\Instance_OLAP

Command :

 <Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>NomCube</DatabaseID>
  </Object>
  <File>NomCube.abf</File>
  <AllowOverwrite>true</AllowOverwrite>
</Backup>

 

 

Transfert du fichier NomCube.abf vers la machine distante si nécessaire

 

Rechargement du cube OLAP via XMLA :

  • Cette opération peut évidemment être réaliser en mode graphique via 'SQLServer Management Studio'
  • Mais aussi via une commande XMLA :

<Restore xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<File>dirname\NomCube.abf</File>
<AllowOverwrite>true</AllowOverwrite>
</Restore>

 

Resynchroniser les users et groupes

  • Peut être réaliser en mode graphique
  • Ou via une commande XMLA (ex ci-dessous) :

<Batch xmlns='http://schemas.microsoft.com/analysisservices/2003/engine' Transaction='true'>

<Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">

  <Object />

  <ObjectDefinition>

    <Server xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100">

      <ID>MACHINE\INSTANCE</ID>

      <Name>MACHINE\INSTANCE</Name>

    </Server>

  </ObjectDefinition>

</Alter>

<Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">

  <Object>

    <RoleID>Administrators</RoleID>

  </Object>

  <ObjectDefinition>

    <Role xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100">

      <ID>Administrators</ID>

      <Name>Administrators</Name>

      <Members>

        <Member>

          <Name>Domain\group1</Name>

        </Member>

        <Member>

          <Name>Domain\user1</Name>

        </Member>

                       

      </Members>

    </Role>

  </ObjectDefinition>

</Alter>

</Batch>

 

 

 

 

 

Merci à Laurent L (il se reconnaitra ; )))

 

 

Sauvegarde / Restauration ORACLE

Quelques infos utiles :

V$recover_file : détermine les fichier de données à récupérer

V$achived_log : liste des fichiers de journalisation archivés

V$recovery_log : liste de tous les fichiers archivés nécessaires à la restauration

v$backup : liste les fichiers en mode backup

En cas de restauration d’archive log et probleme de place disk, il est possible de changer l’emplacement comme ceci :

Alter system archive log start to <LOCATION> ou set logsource <LOCATION>


Restauration complète :

Recover database : se fait base fermée

Recover tablespace… : se fait base ouverte

Recover datafile ‘nom_du_datafile’ : se fait base ouverte ou fermée (quand les tbs system ou undo sont impactés)

Pour un recover automatique :

Set autorecovery on

Faire un recover datafile…

Entrez ‘auto’ lorsque vous êtes invité à indiquer un redo log archivés

Faire un recover automatic datafile…

Exemple de restauration base fermée (pb sur un fichier du tbs system)

Shutdown abort

Host cp /BACKUP/system.dbf /fsmachine/sgbd/folde/data

Startup mount

Recover database ou recover datafile /fsmachine/sgbd/folde/data/system.dbf

Alter database open

Exemple de récupération base ouverte (défaillance physique sauf SYSTEM)

Vérifier que le datafile problématique est offline (jointure sur v$datafile et v$datafile_header). Sinon, le mettre offline.

Host cp /BACKUP/df2.dbf /fsmachine/sgbd/folde/data

Recover datafile ‘/fsmachine/sgbd/folde/data/ df2.dbf’ ou recover tablespace user_data

Alter database datafile ‘/fsmachine/sgbd/folde/data/ df2.dbf’ online; -- ou alter tablespace user_data online

Exemple de récupération base ouverte initialement fermée

Startup mount

Mettre le fichier offline comme vu au dessus

Alter database open : permet au utilisateurs d’accéder au systeme

Host cp file_save file (si un isk est endommagé, faire la restauration sur un autre disk)

Alter database rename file ‘/disk2/toto.dbf’ to ‘/disk3/toto.dbf’

Recover datafile ‘/disk3/toto.dbf’ ou recover tablespace user_data

Alter database datafile ‘/disk3/toto.dbf’ online;

Exemple de récupération sans sauvegarde

Si la base n’est pas démarrée, la montée, mettre offline le fichier impacté, puis ouvrir la base

Alter tablespace table_data offline immediate ;

Select * from v$recover_file ; -- verifie le statut de la récupération

Alter database create datafile ‘/disk2/df4.dbf’ as ‘/disk1/df4.dbf’

Select * from v$recover_file ; -- verifie le statut de la récupération

Recover tablespace user_data

Alter tablespace user_data online ;

Perte des fichiers de controle (3 solutions)

Utiliser une copie d’un fichier de controle en cours

Créer un nouveau fichier de contrôle

Create controlfile file

Recover database using backup controlfile

NB : alter database backup controlfile to trace


Restauration incomplète:

NB : consulter avant et après le fichier d’alerte. Il contient des infos d’erreurs, des conseils et les SCN

Avant tout chose, avant de démarrer une restauration incomplète

Faire une sauvegarde de la base fermée

Une sauvegarde du controlfile (alter database backup controlfile to /location)

Sauvegarde du redo log courant (alter system archive log current)

Procédure générale de restauration incomplète :

Sauvegarde à froid

Restaurez tous les fichiers de données (sauf controlfile, redolog, passwdfile, fichier de paramtres) pour ramener la base à un état antérieur.

Alter database mount et vérifier que les datafiles sont online

Récupérer la base jusqu’à l’état voulu (voir méthode ci-dessous)

Ouvrir la base avec resetlogs

Faire une sauvegarde full de la base fermée

 

 

Récupération jusqu’à un point dans le temps

Recover database until time `2001-03-04 :14 :22 :03`

Récupération jusqu’à annulation (cas d’un fichier de journalisation perdu ou corrompu nécessaire à une récupération)

Recover database until cancel

Récupération basée sur le SCN

Récupération à l’aide d’une sauvegarde de fichier de contrôle

Mettre la base en mode resteint : alter system enable restricted session ;

Comparer l’heure trouvée dans le fichier alerte (d’un drop par exemple) et dans la vue v$log

Shutdown

Save controlfile

Restaurer physiquement les fichiers de données et controlfile de la base

Alter database open (desmessages d’erreur apparaissent disant qu’il existe une désybnchronisation – sequence doesn’t match)

Mettre les datafile offline online si nécessaire

Recover database until time `2001-03-04 :14 :22 :03` using backup controlfile

Alter database open resetlogs

Save db full close

 


Une fois la restauration incomplète terminée

Faire une sauvegarde de la base fermée

Sauvegarder tous les fichiers d’archive_log et les supprimer pour éviter de mélanger les différents états de la base.


 

 

 

 

Exemple de scripts sql de sauvegarde à chaud :

 -- sauvegarde_complete_a_chaud.bat

-- genere et execute le fichier homonyme (.sql)

-- remplacer disque_temp: et disque_sauvegarde: par des valeurs !

--

-- on supprime toutes les infos parasites sur la sortie standard

@disque_temp:\nettoie_spool.sql

spool sauvegarde_complete_a_chaud.sql

select 'ALTER TABLESPACE '||tablespace_name||' BEGIN BACKUP;'

from dba_tablespaces;

select 'host copy '||file_name||' disque_sauvegarde:\'||substr(file_name, instr( file_name,'\',-1)+1)

from dba_data_files;

select 'ALTER TABLESPACE '||tablespace_name||' END BACKUP;'

from dba_tablespaces;

spool off

@sauvegarde_complete_a_chaud.sql

 

 

Rechargement Base SYBASE IQ

  1. Vérifier l'espace disque disponible sur les disques de la destination. Les sauvegardes ont tendance à devenir volumineuses.
  2. Comparaison des dbspaces de la source et de la destination.
    sp_iqdbspace
    et comparaison des fichiers dans le répertoire “catalog” de la base.
  3. Récupérer les fichiers de dumps sur la machine cible
  4. Récupérer le mapping de la cible, c’est à dire la correspondance entre les fichiers physiques et le découpage de l’espace de stockage (”IQ Store”).
    Voici la commande :
    select 'rename '+dbspace_name+ ' to '''+file_name+'''' from sysfile where dbspace_name <> ‘SYSTEM’
    go

    Mettre de coté le résultat.
  5. Créer un fichier de rechargement (ex : restore.sql), c’est plus pratique.
    Par exemple :

    restore database '/Chemin/vers/catalog/Ma_BASE.db'
    from 'chemin_absolu_vers_fichier_de_dump_sans_numéro_final'
    rename IQ_SYSTEM_MAIN to '/Chemin/vers/fichiers/physique/fichier_01'
    rename IQ_SYSTEM_TEMP to '/Chemin/vers/fichiers/physique/fichier_temp01'
    rename IQ_SYSTEM_MSG to '/Chemin/vers/fichiers/errorlog/MA_BASE.iqmsg'
    rename IQ_MAIN02 to '/Chemin/vers/fichiers/physique/fichier_02'
    rename IQ_TEMP02 to '/Chemin/vers/fichiers/physique/fichier_temp02'

    (les "rename" étant ceux générés à l'étape 4).

  6. Arrêter le serveur
  7. stop_asiq...

    ou

    SQL > stop engine inconditionally

  8. Sauvegarder le catalogue d’origine de la cible
  9. cd /chemin/vers/catalog/MA_BASE/
    mv BASE.db BASE.db_YYYYMMDD

  10. Démarrer la base en démo :

    Exemple :
    start_asiq -n demo
    Résultat :
    Starting server demo on ma_machine at port (09/04 14:56:06) Run Directory : /chemin/vers/catalog Server Executable : asiqsrv12 Server Output Log : demo.043.srvlog Server Version : 12.6.0/ESD 6.2 12.6.0/ESD 6.2 Open Client Version : 12.5.1/P-EBF12230 GA User Parameters : ‘-n’ ‘demo’ Default Parameters : -hs -c 48m -gc 20 -gd all -gl all -gm 10 -gp 4096 -ti 4400 -gn 25

     

  11. Recharger à l’aide du script généré précédemment :

    isql -UDBA -w999 -S utility_db -PSQL -i restore.sql
    Les fichiers demo.00x.srvlog et demo.00x.stderr permettent de suivre le rechargement

  12. Arrêter le serveur.
  13. Renommer le journal de log de la base :

    cd $CATALOG
    SHELL>dblog -t MA_BASE.log MA_BASE.db

    Adaptive Server Anywhere Transaction Log Utility Version 9.0.1.1570 Debug
    “MA_BASE.db” was using log file “MA_BASE_ORIGINE.log”
    “MA_BASE.db” is using no log mirror file
    “MA_BASE.db” is now using log file “MA_BASE.log”
    Transaction log starting offset is 02177018499
    Transaction log current relative offset is 0000004546

  14. Relancer le serveur :
    start_asiq @$CATALOG/MA_BASE.cfg MA_BASE.db

    Si le log provoque une erreur, vérifier le fichier .iqmsg