Hantera en replikerad Publisher-databas som en del av en Always On-tillgänglighetsgrupp

Gäller för:SQL Server

Detta ämne diskuterar särskilda överväganden för att underhålla en publikationsdatabas när du använder Always On-tillgänglighetsgrupper.

Underhåll av en publicerad databas i en tillgänglighetsgrupp

Att underhålla en Always On-publikationsdatabas är i princip samma sak som att underhålla en standard publikationsdatabas, med följande överväganden:

  • Administration måste ske på den primära replikvärden. I SQL Server Management Studio visas publikationer under mappen Local Publications för den primära replikvärden och även för läsbara sekundära repliker. Efter failover kan du behöva uppdatera Management Studio manuellt för att ändringen ska återspeglas om sekundären som befordrades till primär inte var läsbar.

  • Replication Monitor visar alltid publiceringsinformation under den ursprungliga utgivaren. Denna information kan dock visas i Replication Monitor från valfri replik genom att lägga till den ursprungliga utgivaren som en server.

  • När du använder lagrade procedurer eller Replication Management Objects (RMO) för att administrera replikering på den aktuella primära enheten, måste du för fall där du anger Publisher-namnet ange namnet på den instans där databasen aktiverades för replikering (den ursprungliga publisher). För att bestämma rätt namn, använd funktionen PUBLISHINGSERVERNAME. När en publicerande databas ansluter sig till en tillgänglighetsgrupp är replikationsmetadata som lagras i de sekundära databasreplikerna identisk med den på primären. Följaktligen är namnet på utgivarinstansen som lagras i systemtabellerna på den sekundära, för publiceringsdatabaser som är aktiverade för replikering på den primära, namnet på den primära, inte namnet på den sekundära. Detta påverkar replikationskonfiguration och underhåll om publiceringsdatabasen går över till en sekundär. Till exempel, om du konfigurerar replikering med lagrade procedurer på en sekundär efter failover, och du vill ha en pull-prenumeration på en publiceringsdatabas som aktiverats på en annan replika, måste du ange namnet på den ursprungliga utgivaren istället för den nuvarande utgivaren som @publisher parameter för sp_addpullsubscription eller sp_addmergepullsubscription. Men om du aktiverar en publiceringsdatabas efter en redundansväxling är instansnamnet för utgivaren som lagras i systemtabellerna namnet på den aktuella primärvärden. I detta fall skulle du använda värdnamnet på den aktuella primära repliken för @publisher-parametern .

    Note

    För vissa procedurer, såsom sp_addpublication, stöds parametern @publisher endast för utgivare som inte är instanser av SQL Server; i dessa fall är den inte relevant för SQL Server Always On.

  • För att synkronisera en prenumeration i Management Studio efter en failover, synkronisera pull-prenumerationer från abonnenten och synkronisera push-prenumerationer från den aktiva publicisten.

Ta bort en publicerad databas från en tillgänglighetsgrupp

Tänk på följande problem om en publicerad databas tas bort från en tillgänglighetsgrupp, eller om en tillgänglighetsgrupp med en publicerad medlemsdatabas tas bort.

  • Om publiceringsdatabasen hos den ursprungliga utgivaren tas bort från en primär replik i tillgänglighetsgruppen måste du köra sp_redirect_publisher utan att specificera ett värde för parametern @redirected_publisher för att ta bort omdirigeringen för publicist/databas-paret.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB';  
    

    Databasen kommer att vara kvar i återställningsläge på primärservern och måste återställas. När du gör detta bör replikering fungera oförändrat mot den ursprungliga Publisher.

  • Om publiceringsdatabasen växlar över från den ursprungliga utgivaren till en replik och databasen tas bort från den primära repliken i tillgänglighetsgruppen använder du den lagrade proceduren sp_redirect_publisher för att uttryckligen omdirigera den ursprungliga utgivaren till den nya utgivaren. Databasen kommer att lämnas i återställningsläge och måste återställas. När du har gjort detta bör replikationen fortsätta fungera som den gjorde i tillgänglighetsgruppen.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB',  
        @redirected_publisher = 'MyNewPublisher';  
    

    Ta inte bort den fjärrservern för den ursprungliga utgivaren från distributören, även om servern inte längre kan nås. Servermetadata för den ursprungliga utgivaren behövs hos distributören för att uppfylla metadatafrågor om publicering.

  • Om en komplett tillgänglighetsgrupp tas bort är beteendet för en medlemsreplikerad databas detsamma som när en publicerad databas tas bort från en tillgänglighetsgrupp. Replikering kan återupptas från den senaste primära så snart databasen har återställts och omdirigeringen har ändrats. Om databasen återställs hos sin ursprungliga utgivare bör omdirigering tas bort. Om databasen återställs på en annan värd bör omdirigering uttryckligen styras om till den nya värden.

    Note

    När en tillgänglighetsgrupp tas bort som har publicerade medlemsdatabaser, eller en publicerad databas tas bort från en tillgänglighetsgrupp, kommer alla kopior av de publicerade databaserna att lämnas i återställningstillståndet. Om de återställs kommer varje databas att visas som en publicerad databas. Endast en kopia bör behållas med publikationsmetadata. För att inaktivera replikering för en publicerad databaskopia, ta först bort alla prenumerationer och publikationer från databasen.

    Kör sp_dropsubscription för att ta bort prenumerationer på publikationer. Se till att sätta parametern @ignore_distributor till 1 för att bevara metadata för den aktiva publiceringsdatabasen hos distributören.

    USE MyDBName;  
    GO  
    
    EXEC sys.sp_dropsubscription   
        @subscriber = 'MySubscriber',  
        @publication = 'MyPublication',  
        @article = 'all',  
        @ignore_distributor = 1;  
    

    Kör sp_droppublication för att ta bort alla publikationer. Sätt återigen parametern @ignore_distributor till 1 för att bevara metadata för den aktiva publiceringsdatabasen hos distributören.

    EXEC sys.sp_droppublication   
        @publication = 'MyPublication',  
        @ignore_distributor = 1;  
    

    Kör sp_replicationdboption för att inaktivera replikering i databasen.

    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'false';  
    

    Vid denna punkt kan kopian av den publicerade databasen behållas eller tas bort.

Ta bort originalutgivaren

Det kan finnas fall (byta ut äldre server, OS-uppgradering, etc.) där du vill ta bort en originalutgivare från en Always On-tillgänglighetsgrupp. Följ stegen i detta avsnitt för att ta bort utgivaren från tillgänglighetsgruppen.

Antag att du har servrarna N1, N2 och D1, där N1 och N2 är primära och sekundära replika av tillgänglighetsgruppen AG1, N1 är den ursprungliga utgivaren av en transaktionell publikation och D1 är distributören. Du vill ersätta den ursprungliga utgivarens N1 med den nya utgivarens N3.

För att ta bort utgivaren, följ dessa steg:

  1. Installera och konfigurera SQL Server till noden N3. Versionen av SQL Server måste vara densamma som den ursprungliga utgivaren.
  2. På distributörsservern D1, lägg till N3 som utgivare med hjälp av sp_adddistpublisher.
  3. Konfigurera N3 som utgivare med D1 som distributör.
  4. Lägg till N3 som replika i tillgänglighetsgruppen AG1.
  5. På N3-repliken, kontrollera att push-prenumeranterna för publiceringen visas som länkade servrar. Använd antingen sp_addlinkedserver eller SQL Server Management Studio.
  6. När N3 är synkroniserad växlar du över tillgänglighetsgruppen till N3 som primär.
  7. Ta bort N1 från tillgänglighetsgruppen AG1.

Vänligen överväg följande:

  • Ta inte bort den ursprungliga utgivarens fjärrserver (N1 i detta fall) eller någon metadata kopplad till den från distributören, även om servern inte längre kan nås. Servermetadata för den ursprungliga utgivaren behövs hos distributören för att uppfylla metadatafrågor för publicering, och utan den kommer replikering att misslyckas.
  • För SQL Server 2014, när den ursprungliga publicisten tas bort, kommer du inte kunna använda originalpublicistnamnet för att administrera replikering i Replication Monitor. Om du försöker registrera nya replikor som utgivare i Replication Monitor visas inte informationen eftersom det inte finns någon metadata kopplad till den. För att administrera replikering i detta scenario måste du högerklicka på enskilda publikationer och prenumerationer i SQL Server Management Studio (SSMS).
  • För SQL Server 2016 SP2-CU3, SQL Server 2017 CU6 och senare registrerar du lyssnaren för tillgänglighetsgruppens utgivare i Replication Monitor för att administrera replikering med SQL Server Management Studio version 17.7 och senare.

Relaterade uppgifter