SelectEtoile : Base de connaissance SGBD

Posts Tagged 'restore'

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/

 

 

 

 

 

Sybase IQ, Erreur de conectivity -85 avec utility_db

Erreur de connectivité sur l'utility_db lors d'un rechargement de base.

 Symptôme

Pour un rechargement d'une base devenant un peu volumineuse sur un environnement nécessitant un rename du chemin des dbspaces. Il peut arriver ce genre de message:

sybase@xxxxxxxx:/xxxxxxxxx/sgbd/xxxxxxxxx/dump/load_from_prod$dbisql3 resotre_Gauthier.sql
Error! The connection to the database was closed by the server.
Communication error
SQLCODE=-85, ODBC 3 State="08S01"
File: "resotre_Gauthier.sql" on line 1, column 1 

 

Cause du problème:

Dans ce cas, l'origine du problème venait de la commande passée pour le restaure de la base. La taille de la commande dépasse la taille du cache des pages du catalog asa définie au démarrage du server.

Log de lancement du server:

I. 06/25 16:54:07. 1: -n
I. 06/25 16:54:07. 2: utility_db
I. 06/25 16:54:07. 3: -x
I. 06/25 16:54:07. 4: tcpip{host=mscharlevoix;port=2638}
I. 06/25 16:54:07. 5: -c
I. 06/25 16:54:07. 6: 48m
I. 06/25 16:54:07. 7: -gc
I. 06/25 16:54:07. 8: 20
I. 06/25 16:54:07. 9: -gd
I. 06/25 16:54:07. 10: all
I. 06/25 16:54:07. 11: -gl
I. 06/25 16:54:07. 12: all
I. 06/25 16:54:07. 13: -gm
I. 06/25 16:54:07. 14: 10
I. 06/25 16:54:07. 15: -gp
I. 06/25 16:54:07. 16: 4096 --> Valeur par defaut

I. 06/25 16:54:07. 17: -ti
I. 06/25 16:54:07. 18: 4400
I. 06/25 16:54:08. 19: -z
I. 06/25 16:54:08. 20: -ct+
I. 06/25 16:54:08. 21: asiqdemo.db
I. 06/25 16:54:08. 22: -hs
I. 06/25 16:54:08. 23: -gn
I. 06/25 16:54:08. 24: 25
I. 06/25 16:54:08. 25: -o
I. 06/25 16:54:08. 26: /mscharlevoix/sgbd/IQ_FMTB_PREX/IQ_BIN/errorlog/utility_db.004.srvlog
I. 06/25 16:54:08. 27: -hn
I. 06/25 16:54:08. 28: 8
I. 06/25 16:54:08.
I. 06/25 16:54:08. Adaptive Server IQ
I. 06/25 16:54:08. Version 12.7
I. 06/25 16:54:08. (64bit mode)
I. 06/25 16:54:08. Copyright 1992-2008 by Sybase, Inc. All rights reserved
I. 06/25 16:54:08.
I. 06/25 16:54:08. 4 logical processor(s) on 2 physical processor(s) detected.
I. 06/25 16:54:08. Running on Linux 2.6.9-78.0.17.ELsmp #1 SMP Thu Mar 5 04:58:34 EST 2009 x
I. 06/25 16:54:08. 49152K of memory used for caching
I. 06/25 16:54:08. Minimum cache size: 49152K, maximum cache size: 262012K
I. 06/25 16:54:08. Using a maximum page size of 4096 bytes 

Commande de restaure:

restore database '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx.db' from '/xxxxxxxxxx/sgbd/xxxxxxxxxx/dump/load_from_prod/IX_DW_MO_2009.06.22-2130.dmp'
rename IQ_SYSTEM_MAIN to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main01'
rename IQ_SYSTEM_TEMP to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-temp01'
rename IQ_SYSTEM_MSG to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/IQ_BIN/errorlog/xxxxxxxxxx.iqmsg'
rename main02 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main02'
rename main03 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main03'
rename main04 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main04'
rename main05 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main05'
rename main06 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main06'
rename main07 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main07'
rename main08 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main08'
rename main09 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main09'
rename main10 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main10'
rename main11 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main11'
rename main12 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main12'
rename main13 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main13'
rename main14 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main14'
rename main15 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main15'
rename main16 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main16'
rename main17 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main17'
rename main18 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main18'
rename main19 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main19'
rename main20 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main20'
rename main21 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main21'
rename main22 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main22'
rename main23 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main23'
rename main24 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main24'
rename main25 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main25'
rename temp02 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-temp02'
rename temp03 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-temp03'
rename main26 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main26'
rename main27 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main27'
rename main28 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main28'
rename main29 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main29'
rename main30 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main30'
rename main31 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main31'
rename main32 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main32'
rename main33 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main33'
rename main34 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main34'
rename main35 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main35'
rename main36 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main36'
rename main37 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main37'
rename main38 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main38'
rename main39 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main39'
rename main40 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main40'
rename main41 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main41'
rename main42 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main42'
rename main43 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main43'
rename main44 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main44'
rename main45 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main45'
rename main46 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main46' ;

 

Solution:

Il faut augmenter le catalog database cache page size à 8192 (C'est plutôt selon la taille necessaire) avec le paramétré -gp.

start_asiq -n Youpi -gp 8192.

  Bonus :

Il y a aussi un autre symptôme, il rejéte votre commande sur une syntaxe error en tronquant une ligne de la requête qui correspond à la limite de la taille du cache de page (4096):

 

Could not execute statement.

  Syntax error near '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/iqf' on line 54

  SQLCODE=-131, ODBC 3 State="42000"

Sur cette exemple le path est coupé et les instructions suivantes ne sont pas prises en compte

 

Sybase IQ dump cross paltform

Migration cross-platform IQ

 Lorsque l'on recharge une base IQ via une sauvegarde sur une instance installée sur un OS différent de la source. Il n'y a pas comme sous ASE de procédure ou de commande à utiliser pour valider l'opération après le rechargement.

 La seule condition est que les plateforme ai le même endian. Pour s'assurer que la migration est possible,il faut vérifier dans la documentation officielle de Sybase: Installation and Configuration Guilde, Chapitre 4 Migrating across hardware platforms.

Il y a deux groupes: big endian et little endian. Et bien évidement, si les deux plateforme sont dans le même groupe, la migration est possible. Si par malheur ce n'est pas le cas, il va falloir passer par des transfert, fichier plat... 

Il y a une particularité pour Linux 126 32 bits (cf à la doc).

 Les étapes de la migration sont décrites dans le guide de migration. 

 

 

 

 

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

Sauvegarde / Restauration SQL-Server

Procédure de dump / load database sous SQL-Server

 

Exemple : rechargement de msbase sur mabase_resto

sp_helpdb mabase : Visualisation de la structure de mabase

 

Sauvegarde :

backup database mabase to disk='dirname\mabase.sav'

RESTORE DATABASE [MABASE] FROM  DISK = N'dirname\MABASE.BAK' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10
GO

 

Restauration :

RESTORE DATABASE mabase_resto FROM DISK='dirname\mabase.sav'

WITH MOVE 'mabase_resto_Data' TO 'SQLServerDir\Data\msbase_resto_1.MDF' ,

MOVE 'msbase_resto_Log' TO 'SQLServerDir\Log\msbase_resto_1.LDF'

 

RESTORE LOG [MABASE] FROM  DISK = N'dirname\MABASE.TRN' WITH  FILE = 1,  NOUNLOAD,  STATS = 10
GO 

 

Remapping des users :

EXEC sp_change_users_login 'Report' : visualisation des users non mappés avec un login

EXEC sp_change_users_login 'Auto_fix', 'bbuser' : mapping d'un user à un login automatique

 

Restaurations spécifiques :

Restauration base avec un problème sur les données :

A utiliser avec grande précaution. En effet, des données peuvent être perdues !!!

USE [master]
GO
ALTER DATABASE
[MyDatabase] SET EMERGENCY
GO
ALTER DATABASE
[MyDatabase] SET SINGLE_USER
GO
DBCC
CHECKDB ([MyDatabase], REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE
[MyDatabase] SET MULTI_USER
GO
ALTER DATABASE
[MyDatabase] SET ONLINE
GO

 

Restauration sans fichier de log (.ldf) :

 
USE [master]
GO
CREATE DATABASE [Test] ON FILENAME = N'G:\MSSQL\Data\Test.mdf')
FOR ATTACH_REBUILD_LOG
GO
 
sp_attach_single_file_db @dbname= 'test', @physname= 'G:\MSSQL\Data\Test.mdf'