Delen via


Van secundaire naar primaire replica omleiden van lees-/schrijfverbindingen (Always On-beschikbaarheidsgroepen)

Van toepassing op: SQL Server 2019 (15.x) en hoger

SQL Server 2019 (15.x) introduceert de omleiding van lees-/schrijfverbindingen van secundaire naar primaire replica's voor Always On-beschikbaarheidsgroepen. Lees-/schrijfverbindingsomleiding is beschikbaar op elk operatief systeemplatform. Hiermee kunnen clienttoepassingsverbindingen worden omgeleid naar de primaire replica, ongeacht de doelserver die is opgegeven in de verbindingsreeks.

De verbindingsreeks kan bijvoorbeeld zijn gericht op een secundaire replica. Afhankelijk van de configuratie van de beschikbaarheidsgroepreplica (AG) en de instellingen in de verbindingsreeks, kan de verbinding automatisch worden omgeleid naar de primaire replica.

Gebruikssituaties

Vóór SQL Server 2019 (15.x) leiden de AG-listener en de bijbehorende clusterresource gebruikersverkeer om naar de primaire replica om na een failover opnieuw verbinding te maken. SQL Server 2019 (15.x) blijft de functionaliteit van de AG-listener ondersteunen en voegt omleiding voor replicaverbindingen toe voor scenario's die geen listener kunnen bevatten. Voorbeeld:

  • De clustertechnologie waarmee SQL Server-beschikbaarheidsgroepen zijn geïntegreerd, biedt niet de mogelijkheid van een listener.
  • Een configuratie met meerdere subnetten, zoals in de cloud of een zwevend IP-adres met meerdere subnetten met Pacemaker, waarbij configuraties complex, gevoelig voor fouten worden en moeilijk te oplossen zijn vanwege meerdere betrokken onderdelen
  • Leesschaaluitbreiding of noodherstel en het clustertype is NONE, omdat er geen eenvoudig mechanisme beschikbaar is om transparante herconnectie te garanderen tijdens een handmatige failover.

Voorwaarde

Om ervoor te zorgen dat een secundaire replica lees-/schrijfverbindingsaanvragen kan omleiden:

  • De secundaire replica moet online zijn.
  • De replicaspecificatie PRIMARY_ROLE moet bevatten READ_WRITE_ROUTING_URL.
  • De verbindingsreeks moet zijn ReadWrite door te definiëren ApplicationIntent als ReadWrite of niet in te stellen ApplicationIntent en de standaardwaarde (ReadWrite) van kracht te laten worden.

Optie READ_WRITE_ROUTING_URL instellen

Als u de omleiding van lees-/schrijfverbindingen wilt configureren, stelt u READ_WRITE_ROUTING_URL in voor de primaire replica wanneer u de beschikbaarheidsgroep (AG) maakt.

In SQL Server 2019 (15.x) READ_WRITE_ROUTING_URL is toegevoegd aan de <add_replica_option> specificatie. Zie de volgende onderwerpen:

PRIMARY_ROLE(READ_WRITE_ROUTING_URL) niet ingesteld (standaard)

Standaard is omleiding van lees-/schrijfreplicaverbindingen niet ingesteld voor een replica. De manier waarop een secundaire replica verbindingsaanvragen verwerkt, is afhankelijk van of de secundaire replica is ingesteld om verbindingen en de ApplicationIntent instelling in de verbindingsreeks toe te staan. In de volgende tabel ziet u hoe een secundaire replica verbindingen verwerkt op basis van SECONDARY_ROLE (ALLOW CONNECTIONS = ) en ApplicationIntent.

ApplicationIntent waarde SECONDARY_ROLE (ALLOW CONNECTIONS = NO) SECONDARY_ROLE (ALLOW CONNECTIONS = READ_ONLY) SECONDARY_ROLE (ALLOW CONNECTIONS = ALL)
ApplicationIntent=ReadWrite
Verstek
Verbindingen mislukken Verbindingen mislukken Verbindingen zijn geslaagd
Leesbewerkingen zijn voltooid
Schrijfbewerkingen mislukken
ApplicationIntent=ReadOnly Verbindingen mislukken Verbindingen zijn geslaagd Verbindingen zijn geslaagd

In de voorgaande tabel ziet u het standaardgedrag, dat hetzelfde is als versies van SQL Server vóór SQL Server 2019 (15.x).

PRIMARY_ROLE(READ_WRITE_ROUTING_URL) ingesteld

Nadat u omleiding voor lees-/schrijfverbindingen hebt ingesteld, werkt de replica anders met verbindingsaanvragen. Het verbindingsgedrag is nog steeds afhankelijk van de SECONDARY_ROLE (ALLOW CONNECTIONS = )- en ApplicationIntent-instelling. In de volgende tabel ziet u hoe verbindingen worden verwerkt door een secundaire replica met READ_WRITE_ROUTING, gebaseerd op SECONDARY_ROLE (ALLOW CONNECTIONS = ) en ApplicationIntent.

ApplicationIntent waarde SECONDARY_ROLE (ALLOW CONNECTIONS = NO) SECONDARY_ROLE (ALLOW CONNECTIONS = READ_ONLY) SECONDARY_ROLE (ALLOW CONNECTIONS = ALL)
ApplicationIntent=ReadWrite
Verstek
Verbindingen mislukken Verbindingen mislukken Verbindingen omleiden naar de primaire bestemming
ApplicationIntent=ReadOnly Verbindingen mislukken Verbindingen zijn geslaagd Verbindingen zijn geslaagd

In de voorgaande tabel ziet u dat wanneer de primaire replica is ingesteld op READ_WRITE_ROUTING_URL, de secundaire replica verbindingen omleidt naar de primaire replica wanneer SECONDARY_ROLE (ALLOW CONNECTIONS = ALL) en de verbinding ReadWrite aangeeft.

Herstel naar de standaard routeringsinstelling

Vanaf SQL Server 2025 (17.x) Preview kunt u NONE opgeven als bestemming voor READ_WRITE_ROUTING_URL om de door READ_ONLY_ROUTING_URL opgegeven routering voor de beschikbaarheidsreplica te herstellen en het verkeer te routeren op basis van het standaardgedrag. Raadpleeg de opdracht ALTER AVAILABILITY GROUP Transact-SQL voor meer informatie.

Voorbeeld

In dit voorbeeld heeft een beschikbaarheidsgroep drie replica's:

  • Een primaire replica op COMPUTER01
  • Een synchrone secundaire replica op COMPUTER02
  • Een asynchrone secundaire replica op COMPUTER03

De volgende afbeelding vertegenwoordigt de beschikbaarheidsgroep.

Beschikbaarheidsgroep met primaire, secundaire en asynchrone secundaire

Het volgende Transact-SQL script maakt deze AG. In dit voorbeeld specificeert elke replica de "READ_WRITE_ROUTING_URL".

CREATE AVAILABILITY GROUP MyAg   
     WITH ( CLUSTER_TYPE =  NONE )  
   FOR   
     DATABASE  [<Database1>]   
   REPLICA ON   
      'COMPUTER01' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER01.<domain>.<tld>:5022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = MANUAL,  
         SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL,   
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER01.<domain>.<tld>:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,   
            READ_ONLY_ROUTING_LIST = ('COMPUTER02', 'COMPUTER03'),
            READ_WRITE_ROUTING_URL = 'TCP://COMPUTER01.<domain>.<tld>:1433' ),   
         SESSION_TIMEOUT = 10  
         ),   
      'COMPUTER02' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER02.<domain>.<tld>:5022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = MANUAL, 
         SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL,   
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02.<domain>.<tld>:1433' ),  
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,   
            READ_ONLY_ROUTING_LIST = ('COMPUTER01', 'COMPUTER03'),  
            READ_WRITE_ROUTING_URL = 'TCP://COMPUTER02.<domain>.<tld>:1433' ),
         SESSION_TIMEOUT = 10  
         ),   
      'COMPUTER03' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER03.<domain>.<tld>:5022',  
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = MANUAL,  
         SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL,   
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03.<domain>.<tld>:1433' ),  
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,   
            READ_ONLY_ROUTING_LIST = ('COMPUTER01', 'COMPUTER02'),  
            READ_WRITE_ROUTING_URL = 'TCP://COMPUTER03.<domain>.<tld>:1433' ),
         SESSION_TIMEOUT = 10  
         );
GO  
  • <domain>.<tld>
    • Domein en top-level domein van de volledig gekwalificeerde domeinnaam. Bijvoorbeeld: corporation.com.

Gedragingen van verbindingen

In het volgende diagram maakt een clienttoepassing verbinding met COMPUTER02, met ApplicationIntent=ReadWrite. De verbinding wordt omgeleid naar de primaire replica.

Verbinding met computer 2 wordt opnieuw omgeleid naar de primaire replica

De secundaire replica leidt lees-/schrijfoproepen om naar de primaire replica. Een leesschrijfverbinding met één van de replica's wordt omgeleid naar de primaire replica.

In het volgende diagram is de primaire replica handmatig overgeschakeld naar COMPUTER02. Een clienttoepassing maakt verbinding met COMPUTER01, met ApplicationIntent=ReadWrite. De verbinding wordt omgeleid naar de primaire replica.

Verbinding omgeleid naar nieuwe primaire replica op computer2

Zie ook

overzicht van AlwaysOn-beschikbaarheidsgroepen (SQL Server)

Over Toegang voor Clientverbindingen tot Beschikbaarheidsreplica's (SQL Server)

Listeners voor Beschikbaarheidsgroepen, Clientconnectiviteit en Toepassingsfailover (SQL Server)