Configurare il mirroring del database

Si applica a:SQL Server

Nota

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Usare invece Gruppi di disponibilità Always On.

Dopo la preparazione del database mirror, illustrata in Preparazione di un database mirror per il mirroring (SQL Server), è possibile stabilire una sessione di mirroring del database. È necessario che le istanze del server principale, del server mirror e del server di controllo del mirroring siano istanze di server distinte, situate in sistemi host distinti.

Importante

È consigliabile configurare il mirroring del database durante le fasce orarie di minore attività, dato che tale configurazione può influire sulle prestazioni.

Nota

Una determinata istanza del server può prendere parte a più sessioni di mirroring del database simultanee con lo stesso partner o con partner diversi. Una determinata istanza del server può essere partner in alcune sessioni e server di controllo del mirroring in altre. L'istanza del server mirror deve eseguire la stessa edizione di SQL Server dell'istanza del server principale. Il mirroring del database non è disponibile in tutte le edizioni di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2016. È inoltre consigliabile che vengano eseguite in sistemi simili in grado di gestire carichi di lavoro identici.

Per stabilire una sessione di mirroring del database

  1. Creare il database mirror. Per altre informazioni, vedere Preparazione di un database mirror per il mirroring (SQL Server).

  2. Impostare la sicurezza in ogni istanza del server.

    Per ogni istanza del server in una sessione di mirroring del database è necessario un endpoint di mirroring del database. Se l'endpoint non esiste, è necessario crearlo.

    Nota

    La forma di autenticazione utilizzata per il mirroring del database da un'istanza del server corrisponde a una proprietà dell'endpoint del mirroring del database dell'istanza. Per il mirroring del database sono disponibili due tipi di sicurezza del trasporto: l'autenticazione di Windows o l'autenticazione basata sui certificati. Per altre informazioni, vedere Sicurezza trasporto per il mirroring del database e i gruppi di disponibilità AlwaysOn (SQL Server).

    Assicurarsi che in ogni server partner server sia disponibile un endpoint per il mirroring del database. Indipendentemente dal numero di sessioni di mirroring da supportare, nell'istanza del server è consentito un solo endpoint del mirroring del database. Per usare questa istanza del server esclusivamente per i partner di sessioni di mirroring del database, è possibile assegnare il ruolo di partner all'endpoint (ROLE**=**PARTNER). Se si desidera utilizzare questo server anche per il server di controllo del mirroring in altre sessioni di mirroring del database, assegnare il ruolo dell'endpoint come ALL.

    Per eseguire un'istruzione SET PARTNER, l'opzione STATE degli endpoint di entrambi i partner deve essere impostata su STARTED.

    Per verificare se un'istanza del server dispone di un endpoint del mirroring del database e per informazioni sul ruolo e sullo stato relativi, in quell'istanza, usare l'istruzione Transact-SQL seguente:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Importante

    Non riconfigurare un endpoint del mirroring del database in uso. Se un endpoint di mirroring del database è presente e già in uso, è consigliabile utilizzarlo per ogni sessione sull'istanza del server. L'eliminazione di un endpoint in uso può determinare il riavvio dell'endpoint, interrompendo le connessioni delle sessioni esistenti, cosa che ad altre istanze del server potrebbe apparire come un errore. Questa indicazione è particolarmente importante in modalità a sicurezza elevata con failover automatico, nella quale la riconfigurazione dell'endpoint in un partner potrebbe causare il verificarsi di un failover. Se un server di controllo del mirroring è stato impostato per una sessione, l'eliminazione dell'endpoint del mirroring del database può inoltre determinare la perdita del quorum da parte del server principale della sessione. Se si verifica questa situazione, il database viene portato offline e i suoi utenti vengono disconnessi. Per altre informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database (mirroring del database).

    Se un partner manca di un endpoint, vedere Creare un endpoint del mirroring del database per l'autenticazione Windows (Transact-SQL).

  3. Se le istanze del server sono in esecuzione in account utente di dominio diversi, per ciascuna istanza è necessario un account di accesso nel database master delle altre. Se l'account di accesso non esiste, è necessario crearlo. Per altre informazioni, vedere Concessione dell'accesso alla rete a un endpoint per il mirroring del database utilizzando l'autenticazione di Windows (SQL Server).

  4. Per impostare il server principale come partner sul database mirror, connettersi al server mirror ed eseguire l'istruzione seguente:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    dove <database_name> è il nome del database di cui eseguire il mirroring (il nome è lo stesso per entrambi i partner) e <server_network_address> è l'indirizzo di rete del server principale.

    La sintassi per un indirizzo di rete del server presenta la seguente struttura:

    TCP://<system-address>:<port>

    dove <system-address> è una stringa che identifica in maniera univoca il computer di destinazione e <port> è il numero di porta usato dall'endpoint del mirroring dell'istanza del server partner. Per altre informazioni, vedere Specificare un indirizzo di rete del server - Mirroring del database.

    Ad esempio, sull'istanza del server mirror, l'istruzione ALTER DATABASE seguente imposta il partner come istanza del server principale originale. Il nome del database è AdventureWorks, l'indirizzo del sistema è DBSERVER1, ovvero il nome del sistema partner, e il numero della porta usata dall'endpoint del mirroring del database del partner è 7022:

    ALTER DATABASE AdventureWorks   
       SET PARTNER = 'TCP://DBSERVER1:7022'  
    

    Questa istruzione prepara il server mirror per creare una sessione quando viene contattato dal server principale.

  5. Per impostare il server mirror come partner sul database principale, connettersi al server principale ed eseguire l'istruzione seguente:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    Per ulteriori informazioni, vedere il passaggio 4.

    Ad esempio, sull'istanza del server principale, l'istruzione ALTER DATABASE seguente imposta il partner come istanza del server mirror originale. Il nome del database è AdventureWorks, l'indirizzo del sistema è DBSERVER2, ovvero il nome del sistema partner, e il numero della porta usata dall'endpoint del mirroring del database del partner è 7025:

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'  
    

    L'immissione di questa istruzione sul server principale avvia la sessione di mirroring del database.

  6. Per impostazione predefinita, una sessione è impostata su un livello di protezione delle transazioni completo (SAFETY è impostato su FULL), il che determina l'avvio della sessione in modalità sincrona a sicurezza elevata senza failover automatico. È possibile riconfigurare la sessione per l'esecuzione in modalità a sicurezza elevata con failover automatico o in modalità asincrona a prestazioni elevate, come riportato di seguito:

Esempio

Nota

Nell'esempio seguente viene creata una sessione di mirroring del database tra i partner per un database mirror esistente. Per informazioni sulla creazione di un database mirror, vedere Preparare un database mirror per il mirroring (SQL Server).

Nell'esempio viene illustrata la procedura di base per la creazione di una sessione di mirroring del database senza un server di controllo del mirroring. I due partner sono le istanze del server predefinite sui due sistemi di computer (PARTNERHOST1 e PARTNERHOST5). Le due istanze dei partner vengono eseguite tramite lo stesso account utente di dominio di Windows (MYDOMAIN\dbousername).

  1. Nell'istanza del server principale (istanza predefinita in PARTNERHOST1) creare un endpoint che supporti tutti i ruoli utilizzando la porta 7022:

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  2. Nell'istanza del server mirror (istanza predefinita in PARTNERHOST5) creare un endpoint che supporti tutti i ruoli utilizzando la porta 7022:

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  3. Nell'istanza del server principale (in PARTNERHOST1), eseguire il backup del database:

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdvWorks_dbmirror.bak'   
        WITH FORMAT  
    GO  
    
  4. Sull'istanza del server mirror (in PARTNERHOST5), eseguire il ripristino del database:

    RESTORE DATABASE AdventureWorks   
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak'   
        WITH NORECOVERY  
    GO  
    
  5. Dopo aver creato il backup completo del database, è necessario creare un backup del log sul database principale. Ad esempio, l'istruzione Transact-SQL seguente esegue il backup del log nello stesso file usato dal backup del database precedente:

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. 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  
    
  7. Nell'istanza del server mirror impostare l'istanza del server in PARTNERHOST1 come partner, rendendola il server principale iniziale:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER =   
        'TCP://PARTNERHOST1:7022'  
    GO  
    

    Importante

    Per impostazione predefinita, una sessione di mirroring del database viene eseguita in modalità sincrona, che dipende da un livello di sicurezza delle transazioni completo (SAFETY impostato su FULL). Per fare in modo che una sessione venga eseguita in modalità asincrona a prestazioni elevate impostare SAFETY su OFF. Per altre informazioni, vedere Database Mirroring Operating Modes.

  8. Nell'istanza del server principale impostare l'istanza del server in PARTNERHOST5 come partner, rendendola l'istanza del server mirror iniziale:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5:7022'  
    GO  
    
  9. Facoltativamente, se si desidera utilizzare la modalità a sicurezza elevata con failover automatico, impostare l'istanza del server di controllo del mirroring. Per altre informazioni, vedere Aggiungere un server di controllo del mirroring del database tramite l'autenticazione di Windows (Transact-SQL).

Nota

Per un esempio completo che illustri 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).

Vedi anche

Configurazione del mirroring del database (SQL Server)
ALTER DATABASE (Transact-SQL)
Consentire l'accesso di rete a un endpoint del mirroring del database tramite l'autenticazione di Windows (SQL Server)
Preparazione di un database mirror per il mirroring (SQL Server)
Creare un endpoint del mirroring del database per l'autenticazione Windows (Transact-SQL)
Mirroring del database e log shipping (SQL Server)
Database Mirroring (SQL Server)
Mirroring e replica del database (SQL Server)
Configurazione del mirroring del database (SQL Server)
Specificare un indirizzo di rete del server (Mirroring del database)
Database Mirroring Operating Modes