Udostępnij za pośrednictwem


Jak Konfigurowanie Peer-to-Peer replikacji transakcyjnej (Programowanie replikacji Transact-SQL)

W tym temacie opisano, jak skonfigurować i utrzymywać peer-to-peer topologia replikacji za pomocą procedur przechowywanych.Temat najpierw pokazuje, jak utworzyć topologii trzy węzła i opisano, jak dodawać i łączyć się nowy węzeł.Dodawanie węzła z systemem pokazane są osobne procedury SQL Server 2005 i dodawanie węzła z systemem SQL Server 2008 lub nowszej wersja SQL Server. Ten temat zawiera informacje na temat parametrów, które są używane do wykrywać konflikty w replikacja równorzędna.Aby uzyskać informacje dotyczące wykrywanie konfliktów, zobacz Jak Konfigurowanie wykrywania konfliktów replikacji transakcyjnej Peer-to-Peer (Programowanie replikacji Transact-SQL).

Konfigurowanie topologii jest bardzo podobne do konfigurowania serii standard transakcyjnych publikacje i subskrypcje.Główny punkt pamiętać jest jak zainicjować węzły i wartości, które zostaną określone dla @ sync_type parametr sp_addsubscription:

  • Pierwszy węzeł w topologii zawiera oryginalnej baza danych publikacji; w związku z tym ma on zainicjowany z schemat i dane.Dlatego określanie wartości replikacja obsługuje tylko dla subskrypcji, które replikują dane z innych węzłów w pierwszym węźle.Ta opcja zapewnia, że obiekty wymagane przez replikacja są kopiowane w pierwszym węźle.

  • Po skonfigurowaniu pierwszego węzła węzły są zazwyczaj inicjowane z kopia zapasowa pierwszy węzeł.Dlatego określanie wartości zainicjować z kopia zapasowa lub replikacja obsługuje tylko dla subskrypcji, które sa replikowane dane z pierwszego węzła do innych węzłów.Wartość replikacja obsługuje tylko mogą być używane, jeśli działanie nie występuje w systemie, ale wartość zainicjować z kopia zapasowa jest wymagane, jeśli system jest aktywny.Określanie zainicjować z kopia zapasowa zapewnia, że wszystkie odpowiednie transakcje są replikowane do nowego węzła.

  • Po zainicjowano węzła subskrypcje, które replikują dane z innych węzłów nie trzeba ponownie zainicjować węzła.Dlatego określanie wartości replikacja obsługuje tylko lub zainicjować z lsn.Wartość replikacja obsługuje tylko mogą być używane, jeśli działanie nie występuje w systemie, ale wartość zainicjować z lsn jest wymagane, jeśli system jest aktywny.Określanie zainicjować z lsn zapewnia, że wszystkie odpowiednie transakcje są replikowane do nowego węzła.

    SQL Server 2005nie obsługuje zainicjować z lsn.Jeśli topologię zawiera SQL Server 2005 węzły, można połączyć nowy węzeł z jednym węzłem istniejącego, ale musi quiesce systemu, aby połączyć więcej niż jeden węzeł.Quiescing system obejmuje zatrzymanie działania na opublikowanych tabel na wszystkich węzłach i upewniając się, że każdy węzeł odebrał wszystkie zmiany z innych węzłów.Ten proces jest opisane szczegółowo w ostatniej sekcji tego tematu.

Procedura

Jeśli konfigurujesz topologii dla baz danych, które są aktywne, za pomocą poniższej procedury dodawania węzłów pierwszego i drugiego (węzła a i b węzła)Następnie należy użyć dalsza procedura c węzeł i wszystkie pozostałe węzły.Dalsza procedura używa @ sync_type wartość zainicjować z lsn.Ta opcja pozwala na Konfigurowanie topologii, gdy system jest aktywny, bez brak jakichkolwiek transakcji.

Aby zestaw typu peer-to-peer replikacji między trzy węzły

  1. Skonfiguruj każdy węzeł jako wydawca i skojarzyć ją z lokalnym lub dystrybutor zdalny.Jeśli używasz dystrybutor zdalny, firma Microsoft zaleca, aby używać takie same dystrybutor zdalny dla wszystkich węzłów, ponieważ potencjalnie jest pojedynczym punktem awarii.Aby uzyskać więcej informacji, zobacz Jak Konfigurowanie publikacji i dystrybucji (Programowanie replikacji Transact-SQL).

  2. W węźle a wykonać sp_addpublication.Określ wartość true dla @ enabled_for_p2p, wartość active dla @ Stan i wartości true dla @ allow_initialize_from_backup.Aby dodać artykułów do publikacja, należy wykonać sp_addarticle.

  3. Przed skonfigurowaniem topologii, początkowych danych musi być obecny w każdym węźle.Użyj SQL Server funkcji Kopia zapasowa i przywracanie zainicjować danych w publikacja na każdym węźle w topologii.Kopia zapasowa powinna pochodzić z pierwszego węzła, który jest skonfigurowany; w tym przypadek jest to węzła A.kopia zapasowa należy podjąć po publikacja w węźle a jest tworzony i włączona replikacja równorzędna.W tym temacie założono, że działanie nie występuje na wszystkich nowych węzłów, zanim zostaną dodane wszystkie węzły; dlatego można użyć tej samej kopia zapasowa zainicjować każdego węzła.

    Działania występują na wszystkich nowych węzłów, zanim zostaną dodane wszystkie węzły, należy wykonać nowe kopia zapasowa po każdym węźle został dodany i co najmniej raz niezsynchronizowany z węzła A.Gwarantuje to, że kopia zapasowa z węzła a zawiera metadane dotyczące wszystkich innych węzłach.Jeśli na przykład dodać węzeł b i c węzła z działaniem tych węzłów: Inicjowanie węzła b z kopia zapasowa z węzła A; Konfigurowanie i zsynchronizować węzeł B; podjąć nowy kopia zapasowa z węzła A; Inicjowanie c węzeł z nowym kopia zapasowa; Konfigurowanie i zsynchronizować węzła C.

    Aby uzyskać więcej informacji dotyczących wykonywania tworzyć kopię zapasową zapasowej i przywracanie baz danych, zobacz Wykonywanie kopii zapasowych i przywracanie baz danych programu SQL Server.

    Ważna informacjaWażne:

    Podczas przywracania bazy danych nie zostanie określona opcja KEEP_REPLICATION (dla Transact-SQL) lub zachować ustawienia replikacja opcji (dla SQL Server Management Studio).Replikacja będzie odpowiednio skonfigurować bazę danych, po uruchomieniu Kreatora konfiguracji Peer-to-Peer topologii.

    Kopia zapasowa zawiera całej bazy danych; dlatego każda baza danych elementu równorzędnego zawiera pełną kopię baza danych publikacja podczas jego inicjowania.Kopia zapasowa może zawierać tabele, które nie są określone w artykułach w publikacja.Jest odpowiedzialny za administratora lub aplikacji, aby usunąć wszelkie niepożądane obiekty lub dane po kopia zapasowa został przywrócony.W kolejne synchronizacje zmiany danych są replikowane tylko, jeśli mają one zastosowanie do tabel, które są określone jako artykułów.

  4. W węźle a wykonać sp_addsubscription.Określ nazwę publikacja utworzonych w węźle a jako publikacja @, nazwa węzła b jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł b jako @ destination_db, wartość zainicjować z kopia zapasowa dla @ sync_typeoraz właściwe wartości dla @ backupdevicetype i @ backupdevicename parametry.

  5. W węźle a wykonać ponownie sp_addsubscription.To czas, określ nazwę publikacja jako publikacja @, nazwa węzła c jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle c jako @ destination_db, wartość zainicjować z kopia zapasowa dla @ sync_typeoraz właściwe wartości dla @ backupdevicetype i @ backupdevicename parametry.

  6. Węzeł b wykonać sp_addpublication.Określ nazwę publikacja dla publikacja @, wartość true dla @ enabled_for_p2p, wartość active dla @ Stan i wartości true dla @ allow_initialize_from_backup.Aby dodać artykułów do publikacja, należy wykonać sp_addarticle.

  7. Węzeł b wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła a jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle a jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  8. Węzeł b wykonać ponownie sp_addsubscription.To czas, określ nazwę publikacja jako publikacja @, nazwa węzła c jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle c jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  9. W węźle c wykonać sp_addpublication.Określ nazwę publikacja dla publikacja @, wartość true dla @ enabled_for_p2p, wartość active dla @ Stan i wartości true dla @ allow_initialize_from_backup.Aby dodać artykułów do publikacja, należy wykonać sp_addarticle.

  10. W węźle c wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła a jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle a jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  11. W węźle c wykonać ponownie sp_addsubscription.To czas, określ nazwę publikacja jako publikacja @, nazwa węzła b jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł b jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  12. Jeśli tabele opublikowane po operacji przywracanie są wszystkie kolumny tożsamości, zakres tożsamości, przypisany do tabel z węzła a byłoby również w tabelach na węzeł b i C. węzełNależy użyć dbcc checkident do reseed tabele na węzeł b i c węzła, aby zapewnić, że inny zakres jest używany dla każdego.

    Aby uzyskać więcej informacji na temat zarządzania zakresy tożsamości, zobacz "Przypisywanie zakresów ręczne tożsamości zakres zarządzania" sekcja Replikowanie kolumny tożsamości.

Poniższa procedura służy dodać jeden lub więcej węzłów do topologii, który składa się z węzłów, które są uruchomione SQL Server 2008 lub nowsze wersje SQL Server.

Aby dodać węzeł z programem SQL Server 2008 lub nowszego wersja do topologii

  1. D węzła należy skonfigurować jako wydawca i skojarzyć ją z lokalnym lub dystrybutor zdalny.

  2. Przywracanie kopia zapasowa z węzła a do węzła D.

  3. W węźle d wykonać sp_addpublication.Określ nazwę publikacja dla publikacja @, wartość true dla @ enabled_for_p2p, wartość active dla @ Stan i wartości true dla @ allow_initialize_from_backup.Aby dodać artykułów do publikacja, należy wykonać sp_addarticle.

  4. W węźle d wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła a jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle a jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  5. W węźle a wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła d jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle d jako @ destination_db, wartość zainicjować z kopia zapasowa dla @ sync_typeoraz właściwe wartości dla @ backupdevicetype i @ backupdevicename parametry.

    Węzeł d potencjalnie otrzymała transakcji z węzła b i c węzła do węzła A.Transakcje te są traktowane w następnym kroku.

  6. W węźle d kwerendy MSpeer_lsns tabela.Użyj zleceniodawcy i originator_lsn kolumny, aby określić numer sekwencyjny dziennika (LSN) najnowsze transakcji, który węzeł d otrzymała od węzła B.

  7. W węźle d wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła b jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł b jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  8. Węzeł b wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła d jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle d jako @ destination_db, wartość zainicjować z lsn dla @ sync_type, i LSN pobrana dla węzła b dla @ subscriptionlsn.

  9. W węźle d kwerendy MSpeer_lsns tabela.Użyj zleceniodawcy i originator_lsn kolumny, aby określić LSN najnowsze transakcji, która otrzymała d węzła z węzła C.

  10. W węźle d wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła c jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle c jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  11. W węźle c wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła d jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle d jako @ destination_db, wartość zainicjować z lsn dla @ sync_type, i LSN pobrana dla węzła c dla @ subscriptionlsn.

  12. Jeśli tabele opublikowane po operacji przywracanie są wszystkie kolumny tożsamości, zakres tożsamości, przypisany do tabel z węzła a byłoby również w tabelach na węźle D.Należy użyć dbcc checkident do reseed tabele na węzeł D, aby zapewnić, że inny zakres jest używany dla każdego.

    Aby uzyskać więcej informacji na temat zarządzania zakresy tożsamości, zobacz "Przypisywanie zakresów ręczne tożsamości zakres zarządzania" sekcja Replikowanie kolumny tożsamości.

Jak wspomniano we wprowadzeniu do tego tematu, głównym różnica między Dodawanie SQL Server 2005 węzeł i dodawanie węzła z systemem nowszym wersja z SQL Server, który jest SQL Server 2005 wymaga należy do quiesce systemu, aby połączyć nowy węzeł wszystkie istniejące węzły.W poniższej procedurze przedstawiono sposób dodawania SQL Server 2005 węzła do istniejącego topologii etapami:

  • Jeden etap jest objęty kroki od 1 do 5.Ten etap obejmuje częściowo nawiązywanie d węzła topologii tworząc subskrypcje między węzła a i D. węzłaDzięki temu zmiany nadal występują węzła A, węzeł b i C. węzełZmiany w węźle d może rozpocząć się tak szybko, jak subskrypcje zostały utworzone między węzła a i D. węzłaZmiany z węzła b i c węzeł są replikowane do d węzła do węzła A.

  • Drugiego etapu jest objęty kroki od 6 do 9.Ten etap obejmuje całkowicie nawiązywanie d węzła topologii tworząc subskrypcje między węzeł b i d węzła i między węzłem c i D. węzłaNa tym etapie należy quiesce systemu.

    Drugiego etapu nie jest wymagane, ale zapewnia odporności na uszkodzenia więcej niż posiadające tylko jedno połączenie między węzła a i D. węzła

Aby dodać węzeł SQL Server 2005 do topologii

  1. D węzła należy skonfigurować jako wydawca i skojarzyć ją z lokalnym lub dystrybutor zdalny.

  2. Przywracanie kopia zapasowa z węzła a do węzła D.

  3. W węźle d wykonać sp_addpublication.Określ nazwę publikacja dla publikacja @, wartość true dla @ enabled_for_p2p, wartość active dla @ Stan i wartości true dla @ allow_initialize_from_backup.Aby dodać artykułów do publikacja, należy wykonać sp_addarticle.

  4. W węźle d wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła a jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle a jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  5. W węźle a wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła d jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle d jako @ destination_db, wartość zainicjować z kopia zapasowa dla @ sync_typeoraz właściwe wartości dla @ backupdevicetype i @ backupdevicename parametry.

  6. Quiesce topologię, wykonując następujące kroki:

    1. Zatrzymaj wszystkie działania na wszystkich opublikowanych tabel w topologii peer-to-peer.

    2. Wykonanie sp_requestpeerresponse w bazie danych na Serwer A, Serwer B, Serwera C, i Server Di pobierania parametru wyjściowego @ request_id.

    3. Domyślnie, Agent dystrybucji jest zestaw do pracy ciągłej; Dlatego tokeny powinny być przesyłane do wszystkich węzłów automatycznie.Jeśli Agent dystrybucji nie jest uruchomiony w trybie ciągłym, należy uruchomić agenta.Aby uzyskać więcej informacji, zobacz Pojęcia dotyczące plików wykonywalnych Agent replikacji lub Jak Uruchamianie i zatrzymywanie Agent replikacji (SQL Server Management Studio).

    4. Wykonanie sp_helppeerresponses, zapewniając @ request_id wartość pobraną w kroku 2.Poczekaj, aż wszystkie węzły wskazują otrzymali żądania równorzędnego.

    5. Jeśli trzeba, należy przypisać nowe zakresy tożsamości w węźle D.Teraz można całkowicie podłączyć topologii przez dodawanie pozostałych subskrypcji.

  7. W węźle d wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła b jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł b jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  8. W węźle d wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła c jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle c jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  9. Węzeł b wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła d jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle d jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.

  10. W węźle c wykonać sp_addsubscription.Określ nazwę publikacja jako publikacja @, nazwa węzła d jako @ subskrybent, nazwę miejsce docelowe bazy danych w węźle d jako @ destination_dbi wartość replikacja obsługuje tylko dla @ sync_type.