Posso avere backup completi su più dischi?


8

Attualmente, ho solo un file di backup, IMTDB.bak, ed è sullo stesso HDD del database stesso. Voglio aumentare la ridondanza di questo backup di DB essenzialmente "copiandolo" su un altro disco, ma viene visualizzato l'errore "Backup non riuscito per server, il supporto è formattato per supportare 2 famiglie di supporti". Penso che ciò significhi che quando ho creato il backup, ha solo lo scopo di mettere il backup su un'unità e non posso aggiungere altro in modo retroattivo. Voglio migrare il backup su quest'altra unità (in realtà copiarlo e basta), ma non voglio cancellare il backup corrente per farlo.

Cosa faccio? Sono sicuro nel copiare semplicemente IMTDB.bak in una cartella sull'altra unità?


sicuro. L'uso di explorer per copiare il file da una posizione a un'altra non è affatto un problema. Potresti voler controllare l'automazione del processo, magari con l'Utilità di pianificazione di Windows.
Max Vernon,

Dove / come vedi questo errore: "Backup non riuscito per server, il supporto è formattato per supportare 2 famiglie di supporti"
Max Vernon,

Quando vai su Attività -> Backup e prova a fare "Aggiungi" e seleziona il disco che ho.
ijustlovemath,

Aggiungendo un altro disco, il backup verrà semplicemente suddiviso su più dischi, riducendo ulteriormente l'affidabilità del file di backup, poiché se uno dei due dischi non riesce, il file di backup sarà inutilizzabile. Fai come suggerisce @Kin nella sua risposta e usa il BACKUP DATABASEcomando T-SQL per eseguire il backup in due posizioni contemporaneamente.
Max Vernon,

Risposte:


12

Dato che non hai familiarità con il BACKUP DATABASEcomando T-SQL , ho pensato di aggiungere alcuni dettagli a riguardo.

Probabilmente vuoi eseguire qualcosa in linea con la seguente dichiarazione attraverso il servizio Utilità di pianificazione di Windows, poiché non hai accesso a SQL Server Agent (vedo dalle tue altre domande, usi SQL Server Express).

BACKUP DATABASE [xyz]
TO DISK = 'C:\somepath\mybackupfile.bak'
MIRROR TO DISK = 'D:\somepath\myotherbackupfile.bak'
WITH FORMAT
    , INIT
    , SKIP
    , STATS = 1;

Potresti prendere in seria considerazione la possibilità che la MIRROR TOclausola faccia riferimento a una posizione che non si trova sul tuo computer locale, poiché se perdi completamente il tuo computer locale, potresti non essere in grado di accedere a nessuno dei file di backup. La specifica di una MIRROR TOclausola richiede di specificare la FORMATparola chiave nella WITHclausola la prima volta che si esegue quell'istruzione di backup.

È possibile utilizzare il nome di una condivisione di Windows, ad esempio \\SomeServer\SQLBackups\MyBackupFile.bakpurché le autorizzazioni di sicurezza sulla condivisione consentano l'accesso al servizio Utilità di pianificazione di Windows.

La WITH FORMAT, INITparte indica a SQL Server di sovrascrivere eventuali backup esistenti che potrebbero trovarsi nei file di backup. È possibile modificarlo in WITH NOINITdopo aver completato il primo backup con mirroring se si desidera salvare più backup (ovvero backup da diversi punti nel tempo) in quei file. NOSKIPdice a SQL Server di non controllare la scadenza del backup, tra le altre cose. STATS = 1visualizzerà l'output in 1incrementi percentuali. Puoi modificare questo numero in qualsiasi cosa ti piaccia. Uso 1per database di dimensioni molto grandi in quanto fornisce indicazioni sui progressi.

Per farlo funzionare tramite il servizio Utilità di pianificazione di Windows, è necessario salvare quel comando (dopo averlo testato in SQL Server Management Studio) in un file sul disco; chiamiamolo C:\somefolder\BackupMyDB.sql. Ti consigliamo quindi di aggiungere il seguente comando all'utilità di pianificazione di Windows:

<path to sqlcmd>sqlcmd -S localhost -E -i C:\somefolder\BackupMyDB.sql

Ti consigliamo di avere quell'attività "eseguita come" tu.

Una volta che hai fatto tutto ciò, vuoi prendere seriamente in considerazione il tentativo di ripristinare il backup su un altro computer in modo da capire come farlo. Avere backup è solo una parte di un piano di ripristino di emergenza; la parte probabilmente più importante è testare quel piano.

Il processo di ripristino utilizza un comando simile al seguente:

RESTORE DATABASE [xyz]
FROM DISK = 'D:\somepath\myotherbackupfile.bak'
WITH RECOVERY
    , STATS = 1;

Attenzione, l'esecuzione RESTORE DATABASEsul computer in cui risiede il tuo database corrente può sovrascrivere il database corrente senza conferma o avviso, quindi assicurati di valutare attentamente il nome del database, [xyz]nel mio esempio, e le altre opzioni che usi. (Questo in realtà non sovrascriverà il database esistente se non aggiungi la REPLACEparola chiave alla WITHclausola - Voglio solo sottolineare di stare attento.)


Grazie! Poiché il mio file .bak contiene già alcuni backup, il mirror creato includerà automaticamente quei backup? O solo il più recente?
ijustlovemath,

Suggerirei di spostare quel file da qualche parte se si desidera mantenerlo poiché MIRRORrichiede di formattare il file di backup la prima volta che lo si utilizza, il che rimuoverà qualsiasi backup si trovi in ​​quel file.
Max Vernon,

1
Grazie ancora per i dettagli nel tuo post. Davvero utile per un principiante senza altre risorse!
ijustlovemath,

il piacere è tutto mio. Non posso sottolineare abbastanza l'importanza di una strategia di backup e ripristino testata e affidabile . Ho consigliato di ripristinare il test su qualche altra macchina in modo da non avere la possibilità di ostruire il database esistente, cosa facile da fare durante l'apprendimento.
Max Vernon,

5

È possibile utilizzare backup database .... MIRROR TO DISK =per eseguire il backup del database in una posizione aggiuntiva.

Sono sicuro nel copiare semplicemente IMTDB.bak in una cartella sull'altra unità?

Sì, puoi farlo una volta terminato il backup.

Nota: assicurarsi di utilizzare T-SQL anziché la GUI che presenta opzioni di backup limitate.


Quali sono le opzioni consigliate qui? Il mio DB è molto semplice, solo quattro tabelle, tre delle quali hanno solo 90.000 righe, la quarta ha ~ 75 milioni. È anche una dimensione fissa; non verranno aggiunti altri dati. Farò solo domande contro di esso.
ijustlovemath,

5
Ti suggerirei di mettere il tuo db in read_onlymodalità e fare solo un ultimo backup con COMPRESSION. Conservalo in un luogo sicuro.
Kin Shah,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.