SelectEtoile : Base de connaissance SGBD

Posts Tagged 'load'

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/

 

 

 

 

 

Procédure de rechargement d'une base à partir d'un fichier dump - SQLSERVER

USE [master]

GO

 

/****** Object:  StoredProcedure [dbo].[load_MABASE_test_backup]    Script Date: 07/26/2010 09:04:33 ******/

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

--create proc [dbo].[load_MABASE_test_backup] @date_entree char(6) as

CREATE proc [dbo].[load_MABASE_test_backup] as

begin

declare @chemin_fichier varchar(256), @commande2 varchar(256), @fichier varchar(256), @res int

 

select @fichier='D:\Dump_a_recharger\MABASE_test.bak'

select @commande2='dir '+@fichier

exec @res=xp_cmdshell @commande2

if (@res=0)

print 'File ok'

else

begin

print 'File not found. Please transfer first the file !!!'

return

end

 

-- Extraction des logins

exec xp_cmdshell 'osql -E –SServerWin\Instance -Q "exec sp_transferlogin" -o "C:\temp\login_Instance.sql"'

 

-- Sauvegarde des setting avant chargement

select * into tempdb.. MABASE_test_ rsys_system_flags from [MABASE_test]..rsys_system_flags

 

-- Modification état de la base en SINGLE USER

ALTER DATABASE MABASE_test SET SINGLE_USER WITH ROLLBACK IMMEDIATE

 

-- Restore de la base de données

RESTORE DATABASE MABASE_test

FROM DISK = 'D:\Dump_a_recharger\MABASE_test.bak'

WITH MOVE 'MABASE_Data' TO '%DATA%\MABASE_test_Data.mdf',

MOVE 'MABASE_Log' TO '%LOG%\MABASE_test_Log.ldf',

REPLACE

 

-- Modification état de la base en MULTI USER

ALTER DATABASE MABASE_test SET MULTI_USER

 

-- Import des logins

exec xp_cmdshell 'osql -E -SServerWin\Instance  -i"c:\temp\login_Instance.sql" -o "c:\temp\login_Instance.log"'

 

-- Re création des users

exec xp_cmdshell 'osql -E -SServerWin\Instance -i"D:\Package_DBA_JOB\create_users_MABASE_test.sql" -o"D:\Package_DBA_JOB\create_users_MABASE_test.log"'

 

-- Modification options de la base de données

ALTER DATABASE [MABASE_test] SET RECOVERY SIMPLE WITH NO_WAIT

ALTER DATABASE [MABASE_test] SET RECOVERY SIMPLE

 

-- Restoration des setting après rechargement

delete [MABASE_test]..rsys_system_flags

insert into [MABASE_test]..rsys_system_flags select * from tempdb..MABASE_test_ rsys_system_flags

drop table tempdb..MABASE_test_ rsys_system_flags

 

-- Suppression du fichier dump

exec xp_cmdshell 'del D:\Dump_a_recharger\MABASE_test.bak'

end

 

GO

Rechargement base avec modification status

Cet article décrit la procédure pour recharger une base qui est soit suspect, soit dans un état "impossible à loader"

 

Sauvegarde du status de la base

select status from sysdatabase where name = "MABASE"

A garder bien soigneusement

 

Mise à jour du status de la base pour reload :

1> begin tran

2> go

1> update sysdatabase set status = RefStatus where name = "mabase"   -- Refstatus défini ci dessous

2> go

1> commit

2> go

1> shutdown -- ou shutdown with nowait si nécessaire

2> go

 

RefStatus :

  • -32768 en cas de base en état 'suspect' (après le reboot, il faudra supprimer la base et la reconstruire)
  • 32 met la base en état 'à loader' (après reboot, il suffira de recharger la base)

 

Si on a mis le status à -32768 :

Extraire l'ordre de création de la base (create database mabase for load ...)

1> dbcc dbrepair('mabase','dropdb')

2> go

1> create database mabase for load

2> go

1> load database mabase ....

2> go

1> online database mabase

2> go

-- Vérification du status de la base mabase


Si on a mis le status à 32 :

 

  • Après le redémarrage, bien vérifier que la base mabase est dans l'état 'à recharger'.
  • Sinon, il faut redémarrer jusqu'à ce que ce soit le cas
  • Ensuite, on peut recharger la base

 

 

 

 

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'