Delen via


Databasespiegeling configureren

van toepassing op:SQL Server-

Notitie

Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. Gebruik in plaats daarvan AlwaysOn-beschikbaarheidsgroepen.

Nadat de gespiegelde database is voorbereid (zie Een mirrordatabase voorbereiden voor spiegeling (SQL Server)), kunt u een sessie voor databasespiegeling instellen. De principal-, mirror- en witness-serverexemplaren moeten afzonderlijke serverexemplaren zijn, die zich op afzonderlijke hostsystemen moeten bevinden.

Belangrijk

Het is raadzaam om databasespiegeling te configureren tijdens daluren, omdat het configureren van spiegeling van invloed kan zijn op de prestaties.

Notitie

Een specifieke serverinstantie kan deelnemen aan meerdere gelijktijdige databasespiegelingsessies met dezelfde of verschillende partners. Een serverexemplaar kan een partner zijn in sommige sessies en een getuige in andere sessies. Het mirror-serverexemplaar moet dezelfde editie van SQL Server draaien als het principal-serverexemplaar. Databasespiegeling is niet beschikbaar in elke editie van Microsoft SQL Server. Zie Functies die worden ondersteund door de edities van SQL Server 2016voor een lijst met functies die worden ondersteund door de edities van SQL Server 2016. We raden ook ten zeerste aan dat ze worden uitgevoerd op vergelijkbare systemen die identieke werkbelastingen kunnen verwerken.

Een databasespiegelingssessie tot stand brengen

  1. Maak de spiegeldatabase. Zie Een mirrordatabase voorbereiden voor spiegeling (SQL Server)voor meer informatie.

  2. Stel beveiliging in op elke serverinstantie.

    Voor elke serverinstantie in een databasespiegelingssessie is een eindpunt voor databasespiegeling vereist. Als het eindpunt niet bestaat, moet u het maken.

    Notitie

    De vorm van authenticatie die door een serverexemplaar wordt gebruikt voor databasespiegeling is een eigenschap van zijn databasespiegelingseindpunt. Er zijn twee soorten transportbeveiliging beschikbaar voor databasespiegeling: Windows-verificatie of verificatie op basis van certificaten. Voor meer informatie, zie Transport Security for Database Mirroring en Always On Availability Groups (SQL Server).

    Zorg ervoor dat op elke partnerserver een eindpunt bestaat voor databasespiegeling. Ongeacht het aantal spiegelingssessies dat moet worden ondersteund, kan de serverinstantie slechts één eindpunt voor databasespiegeling hebben. Als u van plan bent deze serverinstantie uitsluitend te gebruiken voor partners tijdens databasespiegelingsessies, kunt u de rol van partner toewijzen aan het eindpunt (ROLE**=**PARTNER). Als u deze server ook wilt gebruiken als getuige in andere databasespiegelingsessies, wijs dan de rol van het eindpunt toe als ALL.

    Als u een SET PARTNER-instructie wilt uitvoeren, moet de STATUS van de eindpunten van beide partners worden ingesteld op GESTART.

    Als u wilt weten of een serverexemplaar een eindpunt voor databasespiegeling heeft en om de rol en status ervan te weten, kunt u de volgende Transact-SQL-instructie gebruiken:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Belangrijk

    Configureer een databasespiegeling-eindpunt dat in gebruik is niet opnieuw. Als er een eindpunt voor databasespiegeling bestaat en al in gebruik is, raden we u aan dat eindpunt te gebruiken voor elke sessie op het serverexemplaren. Het verwijderen van een in gebruik-eindpunt kan ertoe leiden dat het eindpunt opnieuw wordt opgestart, waardoor de verbindingen van de bestaande sessies worden onderbroken. Dit kan een fout lijken te zijn bij de andere serverexemplaren. Dit is met name belangrijk in de modus voor hoge veiligheid met automatische failover, waarbij het opnieuw configureren van het eindpunt op een partner kan leiden tot een failover. Als er een witness is ingesteld voor een sessie, kan het verwijderen van het eindpunt voor databasespiegeling ertoe leiden dat de principal-server van die sessie quorum verliest; Als dat het geval is, wordt de database offline gehaald en worden de gebruikers ervan losgekoppeld. Zie voor meer informatie Quorum: Hoe een witness de beschikbaarheid van de database beïnvloedt (databasespiegeling).

    Als een van beide partners geen eindpunt heeft, zie Maak een eindpunt voor databasespiegeling aan voor Windows-verificatie (Transact-SQL).

  3. Als serverexemplaren worden uitgevoerd onder verschillende domeingebruikersaccounts, vereist elk een aanmelding in de hoofddatabase van de anderen. Als de aanmelding niet bestaat, moet u deze maken. Zie Netwerktoegang tot een databasespiegelingseindpunt toestaan met behulp van Windows-verificatie (SQL Server)voor meer informatie.

  4. Als u de principal-server wilt instellen als partner in de gespiegelde database, maakt u verbinding met de mirrorserver en geeft u de volgende instructie uit:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    waarbij <database_name> de naam is van de database die moet worden gespiegeld (deze naam is hetzelfde voor beide partners) en <server_network_address> het servernetwerkadres van de principal-server is.

    De syntaxis voor een servernetwerkadres is als volgt:

    TCP://<systeemadres>:<poort>

    waarbij <systeemadres> een tekenreeks is die het doelcomputersysteem ondubbelzinnig identificeert en <poort> het poortnummer is dat wordt gebruikt door het spiegelingseindpunt van het partnerserverexemplaren. Zie Een servernetwerkadres (databasespiegeling) opgevenvoor meer informatie.

    Op het mirrorserverexemplaar stelt de volgende ALTER DATABASE-instructie de partner in als het oorspronkelijke principal-serverexemplaar. De databasenaam is AdventureWorks, het systeemadres is DBSERVER1 de naam van het systeem van de partner en de poort die wordt gebruikt door het eindpunt voor databasespiegeling van de partner is 7022:

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

    Met deze instructie wordt de mirror-server voorbereid om een sessie te vormen wanneer er contact wordt opgenomen met de principal-server.

  5. Als u de mirrorserver wilt instellen als partner in de principal-database, maakt u verbinding met de principal-server en geeft u de volgende instructie uit:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    Zie stap 4 voor meer informatie.

    Op het hoofddatabase serverexemplaar stelt de volgende ALTER DATABASE-instructie de partner in als het oorspronkelijke mirror server-exemplaar. De databasenaam is AdventureWorks, het systeemadres is DBSERVER2-de naam van het systeem van de partner en de poort die wordt gebruikt door het eindpunt voor databasespiegeling van de partner is 7025:

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

    Als u deze instructie invoert op de hoofdserver, wordt de databasespiegelingssessie gestart.

  6. Standaard is een sessie ingesteld op volledige transactieveiligheid (VEILIGHEID is ingesteld op VOLLEDIG), waarmee de sessie wordt gestart in de synchrone modus voor hoge veiligheid zonder automatische failover. U kunt de sessie opnieuw configureren om te worden uitgevoerd in de modus voor hoge veiligheid met automatische failover of in asynchrone, krachtige modus, als volgt:

Voorbeeld

Notitie

In het volgende voorbeeld wordt een databasespiegelingssessie tussen partners voor een bestaande gespiegelde database vastgesteld. Zie Een mirrordatabase voorbereiden voor spiegeling (SQL Server)=voor meer informatie over het maken van een gespiegelde database.

In het voorbeeld ziet u de basisstappen voor het maken van een databasespiegelingssessie zonder getuige. De twee partners zijn de standaardserverexemplaren op twee computersystemen (PARTNERHOST1 en PARTNERHOST5). De twee partnerexemplaren gebruiken hetzelfde Windows-domeingebruikersaccount (MYDOMAIN\dbousername).

  1. Maak op de principale serverinstantie (standaardinstantie op PARTNERHOST1) een eindpunt dat alle rollen ondersteunt met behulp van poort 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. Maak op het exemplaar van de mirrorserver (standaardexemplaren op PARTNERHOST5) een eindpunt dat ondersteuning biedt voor alle rollen met behulp van poort 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. Maak op het principal-serverexemplaar (op PARTNERHOST1) een back-up van de database:

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdvWorks_dbmirror.bak'   
        WITH FORMAT  
    GO  
    
  4. Herstel de database op het exemplaar van de mirrorserver (op PARTNERHOST5):

    RESTORE DATABASE AdventureWorks   
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak'   
        WITH NORECOVERY  
    GO  
    
  5. Nadat u de volledige databaseback-up hebt gemaakt, moet u een logboekback-up maken op de principal-database. De volgende Transact-SQL instructie maakt bijvoorbeeld een back-up van het logboek naar hetzelfde bestand dat wordt gebruikt door de vorige databaseback-up:

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. Voordat u mirroring kunt starten, moet u de vereiste logboekback-up (en eventuele volgende logboekback-ups) toepassen.

    Met de volgende Transact-SQL instructie wordt bijvoorbeeld het eerste logboek hersteld vanuit C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\ AdventureWorks.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. Stel op het exemplaar van de spiegelserver het serverexemplaar op PARTNERHOST1 in als de partner (waardoor het de eerste hoofdserver is):

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

    Belangrijk

    standaard wordt een databasespiegelingssessie uitgevoerd in de synchrone modus, die afhankelijk is van de volledige transactieveiligheid (VEILIGHEID is ingesteld op VOLLEDIG). Als u wilt dat een sessie wordt uitgevoerd in asynchrone, krachtige modus, stelt u SAFETY in op UIT. Zie voor meer informatie besturingssysteemmodi voor databasespiegeling.

  8. Stel op het hoofdserverexemplaar het serverexemplaar op PARTNERHOST5 in als de partner (wat het de aanvankelijke mirrorserver maakt):

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5:7022'  
    GO  
    
  9. Optioneel, als u van plan bent om de modus voor hoge veiligheid te gebruiken met automatische failover, stelt u het exemplaar van de witness-server in. Voor meer informatie, zie Een databasespiegelingswitness toevoegen met Windows-verificatie (Transact-SQL).

Notitie

Zie Het instellen van databasespiegeling (SQL Server)voor een volledig voorbeeld van de beveiligingsconfiguratie, het voorbereiden van de gespiegelde database, het instellen van de partners en het toevoegen van een getuige.

Zie ook

nl-NL: Het Instellen van Databasespiegeling (SQL Server)
ALTER DATABASE (Transact-SQL)
Netwerktoegang tot een eindpunt voor databasespiegeling toestaan met behulp van Windows-verificatie (SQL Server)
een mirrordatabase voorbereiden voor spiegeling (SQL Server)
een eindpunt voor databasespiegeling maken voor Windows-verificatie (Transact-SQL)
databasespiegeling en logboekverzending (SQL Server)
Database Mirroring (SQL Server)
Databasespiegeling en -replicatie (SQL Server)
Instellen van databasespiegeling (SQL Server)
Geef een servernetwerkadres voor databasespiegeling op
Databasespiegeling Werkingsmodi