Preparazione di un database mirror per il mirroring (SQL Server)
Si applica a: SQL Server
Prima di avviare una sessione di mirroring del database, è necessario che il proprietario del database o l'amministratore del sistema verifichi che il database mirror sia stato creato e sia pronto per il mirroring. La creazione di un nuovo database mirror richiede l'esecuzione di un backup completo del database principale e di un backup del log successivo. Entrambi i backup devono quindi essere ripristinati sull'istanza del server mirror tramite WITH NORECOVERY.
Questo argomento illustra come preparare un database mirror in SQL Server usando SQL Server Management Studio o Transact-SQL.
Prima di iniziare:
Per preparare un database mirror esistente per il riavvio del mirroring
Completamento: dopo la preparazione di un database mirror
Prima di iniziare
Requisiti
Le istanze del server principale e del server mirror devono essere eseguite nella stessa versione di SQL Server. Sebbene sia possibile che la versione di SQL Server del server mirror sia successiva, questa configurazione è consigliata solo per processi di aggiornamento accuratamente pianificati. In questo tipo di configurazione si corre il rischio che venga effettuato un failover automatico durante il quale lo spostamento dei dati viene automaticamente sospeso in quanto non è possibile spostare i dati in una versione precedente di SQL Server. Per altre informazioni, vedere Aggiornamento di istanze con mirroring.
Le istanze del server principale e del server mirror devono essere eseguite nella stessa edizione di SQL Server. Per informazioni sul supporto del mirroring del database in SQL Server, vedere Edizioni e funzionalità supportate di SQL Server 2022.
Il database deve utilizzare il modello di recupero con registrazione completa.
Per altre informazioni, vedere Visualizzare o modificare il modello di recupero di un database (SQL Server) o sys.databases (Transact-SQL) e ALTER DATABASE (Transact-SQL).
Il nome del database mirror deve essere identico a quello del database principale.
Per poter eseguire correttamente il mirroring, è necessario che lo stato del database mirror sia RESTORING. Quando si prepara un database mirror, è necessario utilizzare l'opzione RESTORE WITH NORECOVERY per tutte le operazioni di ripristino. Per ripristinare un backup completo del database principale, seguito da tutti i backup del log successivi sarà necessaria almeno l'opzione WITH NORECOVERY.
Nel sistema in cui si desidera creare il database mirror deve essere disponibile un'unità disco con spazio sufficiente per contenere il database in questione.
Limitazioni e restrizioni
Non è possibile eseguire il mirroring del database di sistema master, msdb, tempo model .
Non è possibile eseguire il mirroring di un database appartenente a un gruppo di disponibilità Always On.
Consigli
Utilizzare un backup completo molto recente o uno differenziale recente del database principale.
Se un processo di backup del log è stato pianificato in modo da essere eseguito sul database principale con una frequenza elevata, potrebbe essere necessario disabilitare tale processo fino all'avvio del mirroring.
Se possibile, è consigliabile che il percorso del database mirror, inclusa la lettera di unità, sia identico a quello del database principale.
Se i percorsi dei file sono diversi, ad esempio il database principale è disponibile nell'unità F: e tale unità non è presente nel sistema mirror, è necessario includere l'opzione MOVE nell'istruzione RESTORE.
Importante
Per aggiungere un file durante una sessione di mirroring senza conseguenze per la sessione, è necessario che il percorso del file esista in entrambi i server. Pertanto, se durante la creazione del database mirror i file del database vengono spostati, potrebbe essere impossibile aggiungere successivamente file al database mirror senza sospendere il mirroring. Per informazioni sulla gestione di un'operazione di creazione file non riuscita, vedere Risolvere i problemi relativi alla configurazione del mirroring del database (SQL Server).
Se il database principale ha cataloghi full-text, è consigliabile vedere Mirroring di database e cataloghi full-text (SQL Server).
Nel caso di un database di produzione, eseguire sempre il backup in un dispositivo distinto.
Sicurezza
La proprietà TRUSTWORTHY è impostata su OFF quando viene eseguito il backup di un database. Di conseguenza, la proprietà TRUSTWORTHY è sempre impostata su OFF in un nuovo database mirror. Se il database deve risultare attendibile dopo un failover, è necessario eseguire passaggi di configurazione aggiuntivi. Per altre informazioni, vedere Impostare un database mirror per l'uso della proprietà Trustworthy (Transact-SQL).
Per informazioni sull'abilitazione della decrittografia automatica della chiave master del database di un database mirror, vedere Impostazione di un database mirror crittografato.
Autorizzazioni
Proprietario del database o amministratore di sistema.
Per preparare un database mirror esistente per il riavvio del mirroring
Se il mirroring è stato rimosso e lo stato del database mirror è ancora RECOVERING, è possibile riavviare il mirroring.
Eseguire almeno un backup del log sul database principale. Per altre informazioni, vedere Backup di un log delle transazioni (SQL Server).
Nel database mirror utilizzare RESTORE WITH NORECOVERY per il ripristino di tutti i backup del log eseguiti sul database principale dopo la rimozione del mirroring. Per altre informazioni, vedere Ripristinare un backup del log delle transazioni (SQL Server).
Per preparare un nuovo database mirror
Per preparare un database mirror
Nota
Per un esempio Transact-SQL di questa procedura, vedere Esempio (Transact-SQL) più avanti in questa sezione.
Connettersi all'istanza del server principale.
Creare un backup completo o differenziale del database principale.
In genere, è necessario eseguire almeno un backup del log sul database principale. È tuttavia possibile evitare il backup del log se il database è stato appena creato e non è ancora stato eseguito alcun backup del log oppure se il modello di recupero è stato appena modificato da SIMPLE a FULL.
Se i backup non sono posizionati in un'unità di rete accessibile da entrambi i sistemi, copiare i backup del database e del log nel sistema in cui verrà ospitata l'istanza del server mirror.
Connettersi all'istanza del server mirror.
Se si utilizza RESTORE WITH NORECOVERY, creare il database mirror ripristinando il backup di database completo e, facoltativamente, il backup di database differenziale più recente, nell'istanza del server mirror.
Nota
Se si ripristina il database un filegroup alla volta, prestare attenzione a ripristinare l'intero database.
Se si utilizza RESTORE WITH NORECOVERY, applicare tutti i backup del log in sospeso al database mirror.
Esempio (Transact-SQL)
Prima di iniziare una sessione di mirroring del database, è necessario creare il database mirror. Questa operazione deve essere eseguita poco prima di iniziare la sessione di mirroring.
Nell'esempio viene utilizzato il database di esempio AdventureWorks2022
in cui, per impostazione predefinita, viene utilizzato il modello di recupero con registrazione minima.
Per utilizzare il mirroring con il database
AdventureWorks2022
, è necessario modificare il database in modo da utilizzare il modello di recupero con registrazione completa:USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO
Dopo aver modificato il modello di recupero del database da SIMPLE a FULL, creare un backup completo da utilizzare per la creazione del database mirror. Dopo la modifica del modello di recupero, è consigliabile selezionare l'opzione WITH FORMAT per creare un nuovo set di supporti. L'operazione risulta utile per separare i backup eseguiti durante l'utilizzo del modello di recupero con registrazione completa dai backup precedenti eseguiti durante l'utilizzo del modello di recupero con registrazione semplice. Ai fini di questo esempio, il file di backup (
C:\AdventureWorks.bak
) verrà creato nella stessa unità del database.Nota
Nel caso di un database di produzione, è consigliabile eseguire sempre il backup in un dispositivo distinto.
Nell'istanza del server principale, ovvero in
PARTNERHOST1
, creare un backup completo del database principale nel modo seguente:BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureWorks.bak' WITH FORMAT GO
Copiare il backup completo nel server mirror.
Se si utilizza RESTORE WITH NORECOVERY, ripristinare il backup completo nell'istanza del server mirror. Il comando di ripristino dipende dal fatto che i percorsi del database mirror e di quello principale siano identici o meno.
Se i percorsi sono identici:
Nell'istanza del server mirror, ovvero in
PARTNERHOST5
, ripristinare il backup completo nel modo seguente:RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH NORECOVERY GO
Se i percorsi sono diversi:
Se il percorso del database mirror è diverso dal percorso del database principale, ad esempio perché le lettere di unità non corrispondono, per creare il database mirror è necessario che l'operazione di ripristino includa una clausola MOVE.
Importante
Se il nome di percorso del database principale è diverso dal nome di percorso del database mirror, non è possibile aggiungere un file. Alla ricezione del log relativo all'operazione di aggiunta del file, l'istanza del server mirror tenta infatti di salvare il nuovo file nella posizione utilizzata dal database principale.
Ad esempio, il comando seguente ripristina un backup di un database principale che si trova in C:\Programmi\Microsoft SQL Server\MSSQL..n\MSSQL\Data\ in un percorso diverso, D:\Programmi\Microsoft SQL Server\MSSQL.n\MSSQL\Dat
a\
, in cui deve trovarsi il database mirror.RESTORE DATABASE AdventureWorks FROM DISK='C:\AdventureWorks.bak' WITH NORECOVERY, MOVE 'AdventureWorks_Data' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', MOVE 'AdventureWorks_Log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf'; GO
Dopo aver creato il backup completo, è necessario creare un backup del log nel database principale. Ad esempio, l'istruzione Transact-SQL seguente esegue il backup del log nello stesso file usato dal backup completo precedente:
BACKUP LOG AdventureWorks TO DISK = 'C:\AdventureWorks.bak' GO
Prima di avviare il mirroring, è necessario applicare il backup del log richiesto ed eventuali backup del log successivi.
Ad esempio, l'istruzione Transact-SQL seguente ripristina il primo log da
C:\AdventureWorks.bak
:RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=1, NORECOVERY GO
Se vengono eseguiti altri backup del log prima dell'avvio del mirroring, è necessario ripristinare anche tali backup, in sequenza, nel server mirror tramite WITH NORECOVERY.
Ad esempio, l'istruzione Transact-SQL seguente ripristina altri due log da
C:\AdventureWorks.bak
:RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=2, NORECOVERY GO RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=3, NORECOVERY GO
Per un esempio completo di impostazione del mirroring del database, con le impostazioni relative alla sicurezza e ai partner, nonché l'aggiunta di un server di controllo del mirroring, vedere Impostazione del mirroring del database (SQL Server).
Completamento: dopo la preparazione di un database mirror
Se è stato eseguito un backup del log aggiuntivo dopo l'ultima operazione RESTORE LOG, è necessario applicare manualmente ogni backup del log aggiuntivo, utilizzando RESTORE WITH NORECOVERY.
Avviare la sessione di mirroring. Per altre informazioni, vedere Stabilire una sessione di mirroring del database tramite autenticazione di Windows (SQL Server Management Studio) o Stabilire una sessione di mirroring del database tramite autenticazione di Windows (Transact-SQL).
Se è stato disabilitato il processo di backup sul database principale, riabilitare il processo.
Se il database deve risultare attendibile dopo un failover, è necessario eseguire passaggi di configurazione aggiuntivi dopo l'avvio del mirroring. Per altre informazioni, vedere Impostare un database mirror per l'uso della proprietà Trustworthy (Transact-SQL).
Attività correlate
Ripristinare un backup del log delle transazioni (SQL Server)
Stabilire una sessione di mirroring del database tramite autenticazione di Windows (Transact-SQL)
Configurare un database mirror per l'uso della proprietà Trustworthy (Transact-SQL)
Vedi anche
Mirroring del database (SQL Server)
Sicurezza trasporto per il mirroring del database e i gruppi di disponibilità Always On (SQL Server)
Impostazione del mirroring del database (SQL Server)
Backup e ripristino di indici e cataloghi full-text
Mirroring del database e cataloghi full-text (SQL Server)
Mirroring e replica del database (SQL Server)
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
Argomenti RESTORE (Transact-SQL)