Strumenti di backup di SQL Server da Bacula

Esegua backup e ripristini rapidi e convenienti con i nostri strumenti di backup per MS SQL Server. 

Tra la sua vasta gamma di funzioni, Bacula Enterprise esegue anche il backup dei suoi dati Windows con una combinazione impressionante di facilità e funzionalità.

Ciò include la possibilità di eseguire un backup rapido e conveniente utilizzando il nostro strumento di backup MS SQL. Ora può eseguire con precisione il backup di quantità molto elevate di dati specifici basati su Windows nel suo SQL Server a una frazione dei costi della concorrenza – e ottenere il ripristino Point In Time di SQL Server.

Utilizza Bacula per evitare di utilizzare più soluzioni di backup, o di avere una protezione inadeguata da ransomware.

sql server backup tool

Più opzioni – Software di backup SQL più sofisticato

Il software di backup SQL di Bacula offre prestazioni eccezionali grazie ad una moderna architettura altamente affidabile e le offre le seguenti funzionalità di strumento di backup SQL Server:

  • Back-up completo, incrementale e differenziale di SQL Server
  • Backup SQL a livello di database
  • Ripristino point in time (PITR)
  • Possibilità di includere/escludere i database dal lavoro di backup
  • Supporto per i backup “solo copia”
  • Ripristina i file di backup di MS SQL su disco
  • Invia il flusso di backup direttamente al demone di archiviazione
  • Opzione di comando e ripristino del plugin checksum per chiedere a SQL Server di verificare il checksum dei dati
#
Strumenti di backup di SQL Server – indipendenti dal motore VSS

Il software di backup MS SQL di Bacula non utilizza le istantanee VSS per eseguire il backup, quindi è possibile specificare “Abilita VSS = no” nel Bacula FileSet. Questa soluzione di backup del server MSSQL realizza funzionalità avanzate di backup e ripristino tramite l’API Microsoft per SQL Server. Pertanto, supportiamo anche i meccanismi di sicurezza e i tipi di autenticazione forniti da Microsoft SQL Server.

 

#
Crittografia e compressione del backup di SQL Server

Con le funzionalità di compressione del backup di SQL Server di Bacula Enterprise può usufruire di un backup efficiente con compressione e quindi – con un utilizzo molto minore della larghezza di banda della rete. Le tecnologie di sicurezza di Bacula includono la crittografia EFS o TLS, che le consente di inviare i backup MS SQL in modo sicuro dal file al demone di archiviazione.

#
Backup del registro delle transazioni e PITR

Bacula Enterprise le permette di ripristinare un insieme di dati MSSQL o una particolare impostazione da un momento molto preciso nel passato. Con i modelli di ripristino completo o bulk-logged, potrà eseguire il PITR o utilizzare le informazioni LSN per ripristinare lo stato esatto che desidera. È possibile ripristinare esattamente lo stato richiesto della base dati in un momento molto specifico, persino fino a un secondo esatto. Da un backup del Registro transazioni, un ripristino comporrà lo stato del database da una serie di tipi di backup di SQL Server scelti.

 

#
Automazione di backup

Con le funzionalità di pianificazione e di scripting di Bacula Enterprise è in grado di implementare l’automazione del backup di SQL Server e di ridurre i tempi di gestione dei backup. I lavori di backup per il suo SQL Server possono essere lanciati utilizzando la logica di scripting e lo scheduler.

Opzioni del software di backup SQL

Backup completo

Il backup completo salva i file del database e il registro delle transazioni per fornire una protezione completa contro i guasti del supporto. Se uno o più file di dati sono danneggiati, il ripristino dei supporti può ripristinare tutte le transazioni impegnate. Le transazioni in corso vengono annullate. Il backup dei database master e mbdb viene sempre eseguito in questa modalità.

Backup differenziale

Un backup differenziale si basa sul backup completo del database più recente, precedente. Un backup differenziale cattura solo i dati modificati dal backup completo. Quando utilizza la funzione di backup differenziale, la catena di backup è molto critica. Se per qualche motivo il backup completo utilizzato come riferimento da MS SQL non è disponibile, i dati differenziali non saranno utilizzabili. Gli strumenti di backup e ripristino SQL di Bacula utilizzano tecniche diverse per evitare questo problema, quindi se viene rilevato un problema, il backup differenziale del database potrebbe essere aggiornato automaticamente a un backup completo.

Transaction Log Backup

La funzione “Transaction Log Backup” di MS SQL è implementata come livello “incrementale” con Bacula. Il database deve essere configurato con il modello di recupero completo o con il modello di recupero bulk-logged. Se il database utilizza il modello di recupero semplice, il file del registro delle transazioni sarà troncato dopo ogni checkpoint e il backup del registro delle transazioni non consentirà il ripristino Point in Time. Il ripristino completo sarà possibile, ma non il ripristino di un punto nel tempo.

Configurazione del database SQLMS

È necessario eseguire il backup del database master. Se il master è danneggiato in qualche modo, ad esempio a causa di un guasto del supporto, un’istanza di MS SQL potrebbe non essere in grado di avviarsi. In questo caso, è necessario ricostruire il master e poi ripristinare il database da un backup. È possibile creare solo backup completi del database master.

Ripristino del server SQL

Può utilizzare tutti i metodi abituali per avviare un ripristino. Tuttavia, deve assicurarsi che se ripristina i dati differenziali, venga ripristinato anche il precedente backup completo. Ciò avviene automaticamente se avvia il ripristino, in bconsole, utilizzando le opzioni di ripristino 5 o 12. Nella struttura di file generata, deve contrassegnare i database completi o le istanze di database.

Opzioni di ripristino

Bacula Enterprise è stato realizzato per offrire all’utente molte opzioni nel processo di recupero dei dati, e per ripristinare i dati in una varietà di modi diversi. Alcune di queste opzioni sono comunemente utilizzate durante il ripristino, come ad esempio:

  • il parametro Where: Come per le consuete funzioni di Bacula Enterprise, il parametro consente all’amministratore di ripristinare i dati in un luogo specifico.
  • il parametro Replace: Viene utilizzato per stabilire come Bacula debba comportarsi con i dati esistenti al momento del ripristino.

Oltre a questo, lo stesso plugin di backup di SQL Server offre ulteriori opzioni di ripristino più complete, come ad esempio:

  • Instance: Poiché MS SQL gestisce diverse istanze, il plugin MS SQL di Bacula Enterprise le permette di scegliere quale ripristinare. La chiave è la granularità fine. Questo parametro è opzionale e se non viene impostato, il ripristino utilizzerà il valore di Backup e Ripristino MS SQL impostato al momento del backup. Per impostazione predefinita, il nome dell’istanza è “MSSQLSERVER”.
  • Database. Questa opzione specifica il nome dei database da ripristinare e utilizza il valore MS SQL Backup and Restore impostato al momento del backup. Questo parametro è opzionale. Per impostazione predefinita, il plugin utilizzerà l’opzione Where per determinare il nome del nuovo database. Se entrambi i parametri Where e Database sono impostate su un nome di database valido, Database verrà utilizzato.
  • User. Questo è il nome utente utilizzato per connettersi all’istanza MS SQL. Questo parametro è opzionale e se non viene impostato, il ripristino utilizzerà il valore impostato al momento del backup.
  • Password. La password utilizzata per connettersi all’istanza MS SQL. Questo parametro è opzionale e se non viene impostato, il ripristino utilizzerà il valore impostato al momento del backup.
  • Domain. Si tratta del dominio utilizzato per connettersi all’istanza MS SQL. Questo parametro è opzionale e se non viene impostato, il ripristino utilizzerà il valore impostato al momento del backup.
  • Recovery. Specifica se il database utilizzerà l’opzione RECOVERY o NORECOVERY durante il ripristino. Per impostazione predefinita, il database ripristinato verrà recuperato.
  • Stop_before_mark. Per utilizzare la clausola WITH STOPBEFOREMARK = <point> per specificare che il record di registro che si trova immediatamente prima del contrassegno è il punto di recupero. Il punto può essere una data-ora, un numero LSN o un nome_marchio.
  • Stop_at_mark. Per utilizzare la clausola WITH STOPATMARK = <point> per specificare che la transazione contrassegnata è il punto di recupero. STOPATMARK esegue un roll forward al punto e include la transazione marcata nel roll forward. Il punto può essere una data-ora, un numero LSN o un nome_marchio.
  • Stop_at=<datetime>. Per utilizzare la clausola WITH STOPAT = <datetime> per specificare che la data-ora è il punto di recupero.
  • Restrict_user. Per utilizzare la clausola WITH RESTRICT_USER per limitare l’accesso al database ripristinato. Il valore predefinito è no.

Su BWeb Management Suite di Bacula System, le Opzioni del Plugin sono disponibili nella scheda di ripristino.

Restore options tab when using BWeb Management Suite

Ripristino di SQL Server in tempo reale

Questo argomento è rilevante solo per i database SQL Server che utilizzano i modelli di ripristino completo o bulk-logged. Nel modello di ripristino bulk-logged, se un backup del registro contiene modifiche bulk-logged, il ripristino point-in-time non è possibile fino a un punto all’interno di tale backup. Il database deve essere ripristinato fino alla fine del backup del registro delle transazioni.

È possibile eseguire il ripristino point in time di un database MS SQL direttamente dal plugin MS SQL. È anche possibile ripristinare i file localmente ed eseguire l’operazione dalla Microsoft SQL Server Management Console per avere più opzioni.

Informazioni LSN

Gli LSN sono utilizzati internamente durante una sequenza di RESTORE per tracciare il momento in cui i dati sono stati ripristinati. Quando viene ripristinato un backup, i dati vengono ripristinati all’LSN corrispondente al momento in cui è stato eseguito il backup.

L’LSN di un record di registro in cui si è verificato un determinato evento di backup e ripristino è visualizzabile utilizzando una o più delle seguenti funzioni:

  • Uscita del lavoro di backup di Macula
  • Nomi dei file di log
  • tabella msdb.backupset
  • tabella msdb.backupfile

Durante un lavoro di backup con il modulo MS SQL, le seguenti informazioni sui numeri LSN saranno visualizzate nell’output del lavoro:

 

win-fd JobId 3: LSN for “db29187”: First: 42000146037, Last: 44000172001

Il numero First LSN corrisponde all’ultimo LSN dell’ultimo backup dei registri delle transazioni. Può essere il primissimo backup completo o l’ultimo backup transazionale (incrementale). Il numero Last LSN corrisponde all’ultima transazione registrata nel registro.

Con un backup del registro transazionale (incrementale), il nome del file associato a questo database nel lavoro incrementale sarà:

 

/@mssql/MSSQLSERVER/db29187/log-42000162001.trn

Il numero nel nome, qui 42000162001 corrisponde all’ultimo LSN del lavoro precedente (completo o incrementale).

Nell’esempio mostrato nella Fig. 2, se l’amministratore ha bisogno di ripristinare il database nello stato che corrisponde a LSN 14, può farlo con le seguenti azioni:

  • Utilizza l’opzione 5 del menu di ripristino
  • Sfoglia la directory del database “/@mssql/db29187”
  • Seleziona l’ultimo file di backup completo “data.bak” (LSN: 10)
  • Seleziona il backup incrementale “log-10.trn”
  • Specifica l’opzione stop_at_mark su “lsn:14”
  • Esegui il lavoro di ripristino

oppure se l’ultimo backup completo di SQL non è disponibile, ma lo è il backup completo precedente.

  • Utilizza l’opzione 3 del menu di ripristino, selezionando i jobid pertinenti
  • Sfoglia la cartella del database “/@mssql/db29187”
  • Seleziona il file di backup completo “data.bak” (LSN: 2)
  • Seleziona i backup incrementali “log-2.trn”, “log-3.trn”, “log-10.trn”
  • Specifica l’opzione stop_at_mark su “lsn:14”
  • Esegui il lavoro di ripristino

Panoramica degli scenari di ripristino SQL

Descrizione Dove Database Esempio
Ripristino dei file su disco Percorso where=c:/tmp
Ripristino del database originale where=/
Ripristina con un nuovo nome Nome where=newdb
Ripristino con un nuovo nome Nome database=newdb
Ripristino con un nuovo nome e ricollocazione del file Percorso Nome where=c:/tmp
database=newdb

Scenari di ripristino

Ripristino con lo stesso nome

Per ripristinare un database con lo stesso nome, il parametro where deve essere vuoto o “/” e il flag replace= deve essere impostato su sempre oppure il database originale deve essere eliminato per primo.

 

* restore where=/ replace=always

Using Catalog “MyCatalog”
Run Restore job
JobName: RestoreFiles
Bootstrap: /opt/bacula/working/127.0.0.1-dir.restore.1.bsr
Where: /
Replace: Always
FileSet: Full Set
Backup Client: win2008-fd
Restore Client: win2008-fd
Storage: File
When: 2015-12-14 09:53:36
Catalog: MyCatalog
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no):

Ripristinare il database SQL con un nuovo nome

Per ripristinare un database con un nuovo nome, potrebbe essere necessario riposizionare i file del database sul disco. Dipende se il database originale è ancora presente.

Se il database originale non è più disponibile, il parametro where o il database “Plugin Options” possono contenere il nuovo nome del database e il plugin gestirà automaticamente la creazione del database con il nuovo nome.

Se il database originale è ancora necessario, il parametro where viene utilizzato per ricollocare i file sul disco e il nuovo nome del database deve essere impostato con il menu “Plugin Options” con l’opzione database. Il layout.dat deve essere selezionato nella struttura di ripristino.

 

* restore where=c:/tmp replace=always

Using Catalog “MyCatalog”
Run Restore job
JobName: RestoreFiles
Bootstrap: /opt/bacula/working/127.0.0.1-dir.restore.1.bsr
Where: c:/tmp
Replace: Always
FileSet: Full Set
Backup Client: win2008-fd
Restore Client: win2008-fd
Storage: File
When: 2015-12-14 09:53:36
Catalog: MyCatalog
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no): mod <—————–
Parameters to modify:
1: Level
2: Storage
3: Job
4: FileSet
5: Restore Client
6: When
7: Priority
8: Bootstrap
9: Where
10: File Relocation
11: Replace
12: JobId
13: Plugin Options
Select parameter to modify (1-13): 13 <—————–
Automatically selected : mssql: database=db29187
Plugin Restore Options
instance: *None*
database: *None*
username: *None*
password: *None*
domain: *None*
recovery: *None* (yes)
stop_before_mark: *None*
stop_at_mark: *None*
stop_at: *None*
Use above plugin configuration? (yes/mod/no): mod <——————
You have the following choices:
1: instance (Instance used to restore)
2: database (New database name)
3: username (Username used for restore)
4: password (Password used for restore)
5: domain (Domain name of user (default to local))
6: recovery (Start Recovery)
7: stop_before_mark (Stop the recovery before a mark (STOPBEFOREMARK).
8: stop_at_mark (Stop the recovery at a mark (STOPATMARK).
9: stop_at (Stop at (STOPAT). {datetime})
Select parameter to modify (1-9): 2 <——————
Please enter a value for database: newdb <——————
Use above plugin configuration? (yes/mod/no): yes <——————
Using Catalog “MyCatalog”
Run Restore job
JobName: RestoreFiles
Bootstrap: /opt/bacula/working/127.0.0.1-dir.restore.1.bsr
Where: c:/tmp
Replace: Always
FileSet: Full Set
Backup Client: win2008-fd
Restore Client: win2008-fd
Storage: File
When: 2015-12-14 09:53:36
Catalog: MyCatalog
Priority: 10
Plugin Options: User Specified
OK to run? (yes/mod/no): yes <—————–

Ripristino di SQL su disco locale

Specificando where=c:/path/, i file saranno ripristinati nel filesystem locale e l’amministratore di MS SQL potrà utilizzare un TSQL o la Microsoft SQL Server Mangement Console per ripristinare il database. I comandi SQL necessari per ripristinare il database vengono stampati nell’output del lavoro, come mostrato nel prossimo esempio.

 

* restore where=c:/tmp
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Cancel
Select item: (1-13): 5
Automatically selected Client: win2008-fd
+——-+——-+———-+———-+———————+—————+
| jobid | level | jobfiles | jobbytes | starttime | volumename |
+——-+——-+———-+———-+———————+—————+
| 1 | F | 3 | 65,771 | 2015-12-14 09:52:31 | TestVolume001 |
| 2 | I | 2 | 65,771 | 2015-12-14 09:52:42 | TestVolume001 |
| 3 | I | 2 | 65,771 | 2015-12-14 09:52:52 | TestVolume001 |
+——-+——-+———-+———-+———————+—————+
You have selected the following JobIds: 1,2,3
Building directory tree for JobId(s) 1,2,3 …
6 files inserted into the tree.
You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the “all” keyword on the command line.
Enter “done” to leave this mode.
cwd is: /
$ cd @mssql
cwd is: /@mssql/
$ cd MSSQLSERVER
cwd is: /@mssql/MSSQLSERVER/
$ m db1684
6 files marked.
$ done
Bootstrap records written to /opt/bacula/working/127.0.0.1-dir.restore.1.bsr
The Job will require the following (*=>InChanger):
Volume(s) Storage(s) SD Device(s)
===========================================================================
TestVolume001 File FileStorage
Volumes marked with “*” are in the Autochanger.
2 files selected to be restored.
Using Catalog “MyCatalog”
Run Restore job
JobName: RestoreFiles
Bootstrap: /opt/bacula/working/127.0.0.1-dir.restore.1.bsr
Where: /tmp
Replace: Always
FileSet: Full Set
Backup Client: win2008-fd
Restore Client: win2008-fd
Storage: File
When: 2015-12-14 09:53:36
Catalog: MyCatalog
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no): yes
Job queued. JobId=6
wait
You have messages.
* messages
$ done
17:18 dir JobId 6: Start Restore Job RestoreFiles.2015-12-14_17.18.18_14
17:18 dir JobId 6: Using Device “FileStorage” to read.
17:18 sd JobId 6: Ready to read from volume “TestVolume001” on file device “FileStorage” (/tmp/regress/tmp).
17:18 sd JobId 6: Forward spacing Volume “TestVolume001” to file:block 0:224.
17:18 fd JobId 6: RESTORE DATABASE [db1684] FROM DISK=’c:/tmp/@mssql/MSSQLSERVER/db1684/data.bak’
WITH BLOCKSIZE=65536, BUFFERCOUNT=10, MAXTRANSFERSIZE=65536, NORECOVERY , REPLACE
17:18 fd JobId 6: RESTORE DATABASE [db1684]
FROM DISK=’c:/tmp/@mssql/MSSQLSERVER/db1684/log-34000000014400001.bak’
WITH BLOCKSIZE=65536, BUFFERCOUNT=10, MAXTRANSFERSIZE=65536, NORECOVERY
17:18 fd JobId 6: RESTORE DATABASE [db1684]
FROM DISK=’c:/tmp/@mssql/MSSQLSERVER/db1684/log-34000000018400001.bak’
WITH BLOCKSIZE=65536, BUFFERCOUNT=10, MAXTRANSFERSIZE=65536, NORECOVERY
17:18 fd JobId 6: RESTORE DATABASE [db1684]
FROM DISK=’c:/tmp/@mssql/MSSQLSERVER/db1684/log-34000000029100001.bak’
WITH BLOCKSIZE=65536, BUFFERCOUNT=10, MAXTRANSFERSIZE=65536, NORECOVERY
17:18 sd JobId 6: End of Volume at file 0 on device “FileStorage” (/tmp/regress/tmp), Volume “TestVolume001”
17:18 fd JobId 6: RESTORE DATABASE [db1684]
FROM DISK=’c:/tmp/@mssql/MSSQLSERVER/db1684/log-36000000017200001.bak’
WITH BLOCKSIZE=65536, BUFFERCOUNT=10, MAXTRANSFERSIZE=65536, NORECOVERY
17:18 sd JobId 6: Elapsed time=00:00:01, Transfer rate=9.372 M Bytes/second
17:18 fd JobId 6: RESTORE DATABASE [db1684]
17:18 dir JobId 6: Bacula dir 8.4.8 (22Feb16):
Build OS: x86_64-unknown-linux-gnu archlinux
JobId: 6
Job: RestoreFiles.2015-12-11_17.18.18_14
Restore Client: win2008-fd
Start time: 14-Dec-2015 17:18:20
End time: 14-Dec-2015 17:18:22
Files Expected: 6
Files Restored: 6
Bytes Restored: 9,371,785
Rate: 4685.9 KB/s
FD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Restore OK

Ripristino del database “master”

Le istruzioni su come fare per ripristinare il database “master” sono dettagliate in questo articolo: https://technet.microsoft.com/en-us/library/aa213839%28v=sql.80%29.aspx

Database in stato di ripristino

Al termine di un ripristino, se l’opzione di recupero del plugin è stata impostata su no, il database ripristinato si troverà nello stato di “restoring”. Per terminare il processo di ripristino, è necessario eseguire il processo di recupero. Può farlo con il seguente comando SQL:

 

RESTORE [yourdatabase] WITH RECOVERY;

Ulteriore aiuto sul backup di SQL:

  • Utilizzi altri DB nella sua infrastruttura? Bacula Enterprise ha soluzioni per Oracle, PostgreSQL, MSSQL e SAP database.
  • Sei interessato al backup su supporti a nastro? Dai un’occhiata al nostro software di backup su nastro.
  • Sei interessato al backup e al ripristino di MS Exchange? Dai un’occhiata al nostro strumento Exchange Server.