Jak Konfigurowanie typu peer-to-peer transakcyjne replikacja (replikacja programowania języka Transact-SQL)

W tym temacie opisano, jak skonfigurować i utrzymywać topologii replikacja równorzędna za pomocą procedur przechowywanych.Temat najpierw pokazuje, jak utworzyć topologii trzy węzła, a następnie opisano, jak dodawać i łączyć się nowy węzeł.Dodawanie węzła, na którym uruchomiono pokazane są osobne procedury SQL Server 2005 i Dodawanie węzła, na którym działa SQL Server 2008 lub w nowszych wersjach SQL Server. W tym temacie nie zawiera informacji na temat parametrów, które są używane do wykrywać konfliktów w replikacja równorzędna.Aby uzyskać informacje na temat wykrywanie konfliktów zobacz Jak Konfigurowanie wykrywanie konfliktów dla transakcji typu peer-to-peer replikacja (replikacja programowania języka Transact-SQL).

Konfigurowanie topologii jest bardzo podobne do konfigurowania serii standardowych transakcyjnych publikacje i subskrypcje.Główny punkt zwrócić uwagę, jest jak węzły są inicjowane, a wartości określone dla @ sync_type parametrsp_addsubscription:

  • Pierwszy węzeł w topologii zawiera oryginalnej bazy danych w publikacja, w związku z tym nie ma on zostać zainicjowany z schemat oraz dane.W związku z tym Podaj wartość tylko obsługi replikacja subskrypcji, które replikują dane z innych węzłów w pierwszym węźle.Ta opcja zapewnia, że obiektów wymagane przez replikację są kopiowane na pierwszym węźle.

  • Po skonfigurowaniu pierwszego węzła węzłów zazwyczaj są inicjowane z kopia zapasowa pierwszy węzeł.W związku z tym Podaj wartość Inicjowanie z kopia zapasowa or tylko obsługi replikacja subskrypcji, które replikują dane z pierwszego węzła do innych węzłów.Wartość tylko obsługi replikacja mogą być używane, jeśli działanie nie występuje w systemie, ale wartość Inicjowanie z kopia zapasowa jest wymagany, jeśli system jest aktywny.Określanie Inicjowanie z kopia zapasowa daje pewność, że wszystkie odpowiednie transakcje są replikowane do nowego węzła.

  • Po węzeł został zainicjowany, subskrypcji, które replikują dane z innych węzłów nie będą musieli ponownie zainicjować węzła.W związku z tym Podaj wartość tylko obsługi replikacja or Inicjowanie z lsn.Wartość tylko obsługi replikacja mogą być używane, jeśli działanie nie występuje w systemie, ale wartość Inicjowanie z lsn jest wymagany, jeśli system jest aktywny.Określanie Inicjowanie z lsn daje pewność, że wszystkie odpowiednie transakcje są replikowane do nowego węzła.

    SQL Server 2005 nie jest obsługiwana Inicjowanie z lsn.Jeśli jest topologia SQL Server 2005 węzły, można połączyć nowy węzeł jeden węzeł istniejących, ale musi quiesce systemu, aby połączyć się z więcej niż jeden węzeł. Quiescing systemu polega na zatrzymanie działania na opublikowanych tabel na wszystkich węzłach i upewniając się, że każdy węzeł otrzymała wszystkie zmiany od wszystkich innych węzłach.Ten proces jest opisana szczegółowo w ostatniej sekcji tego tematu.

Procedura

W przypadku konfigurowania topologii dla bazy danych, które są aktywne, za pomocą poniższej procedury do dodania węzłów pierwszy i drugi (węzła A i B węzłów).Następnie należy użyć kolejne procedury C węzeł i wszystkie pozostałe węzły.Kolejne procedura wykorzystuje @ sync_type value of Inicjowanie z lsn.Ta opcja umożliwia konfigurowanie topologię, wówczas, gdy system jest aktywne nie brakuje żadnych transakcji.

Do ustawiania typu peer-to-peer replikacja między węzłami trzy

  1. Należy skonfigurować każdy węzeł jako wydawca i skojarzyć ją z dystrybutor lokalnym lub zdalnym.Użycie zdalnego dystrybutorem zalecane że tego samego dystrybutor zdalny nie są używane dla wszystkich węzłów, ponieważ jest to potencjalnie pojedynczych punktów awarii.Aby uzyskać więcej informacji zobacz Jak Konfigurowanie publikacji i dystrybucji (Programowanie replikacja języka Transact-SQL).

  2. wykonać na węzła A sp_addpublication.Podaj wartość true dla @ enabled_for_p2p, wartość aktywne for @ Stan i wartość true dla @ allow_initialize_from_backup.Aby dodać artykuły do publikacja, należy wykonać sp_addarticle.

  3. Początkowych danych musi być obecny w każdym węźle, zanim topologii jest skonfigurowany.Użycie SQL Server Funkcja tworzenia 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 takim wypadku jest węzła A.kopia zapasowa należy podjąć po opublikowaniu na węzła A jest tworzony i włączone dla replikacja równorzędna.W tym temacie założono, że działanie nie występuje w przypadku dowolnego nowe węzły zanim zostaną dodane wszystkie węzły, dlatego można użyć tej samej kopia zapasowa zainicjować każdego węzła.

    Jeśli działanie jest wykonywana dla każdego z nowych węzłów zanim zostaną dodane wszystkie węzły, które należy wykonać nową kopię zapasową po każdym węźle został dodany i ma co najmniej raz zsynchronizować z węzła A.Pozwala to uzyskać pewność, że kopia zapasowa z węzła A zawiera metadane dotyczące wszystkich innych węzłach.Na przykład dodać węzeł B i C węzeł działania w tych węzłów: zainicjować węzeł B z kopia zapasowa z węzła A; skonfigurować i zsynchronizować węzeł B, wykonać nową kopię zapasową z węzła A; zainicjować węzła C z nowej kopia zapasowa; i skonfigurować i zsynchronizować węzeł c

    Aby uzyskać więcej informacji na temat sposobów tworzenia tworzyć kopię zapasową zapasowych i przywracanie baz danych zobacz Backing Up and Restoring Databases in SQL Server.

    Important noteImportant Note:

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

    kopia zapasowa zawiera całej bazy danych; dlatego każdy element równorzędny bazy danych zawiera pełną kopię bazy danych publikacja podczas jego inicjowania.kopia zapasowa może zawierać tabele, które nie zostały określone w artykułach w publikacja.Jest administratorem lub aplikacji, aby usunąć wszelkie niepotrzebne obiekty lub dane po został przywrócony z kopia zapasowa.W kolejnych synchronizacji zmiany danych są replikowane tylko wtedy, gdy dotyczą tabel, które są określone w postaci artykułów.

  4. wykonać na węzła A sp_addsubscription.Określ nazwę publikacja, utworzony przez węzeł A jako @ publikacja, nazwa węzła B jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł B jako @ destination_db, wartość Inicjowanie z kopia zapasowa for @ sync_type, a odpowiednie wartości dla @ backupdevicetype and @ backupdevicename Parametry.

  5. Na węzła A wykonać ponownie sp_addsubscription.To czas, należy określić nazwę publikacja jako @ publikacja, nazwa węzła C jako @ subskrybent, nazwę miejsce docelowe bazy danych w C węzeł jako @ destination_db, wartość Inicjowanie z kopia zapasowa for @ sync_type, a odpowiednie wartości dla @ backupdevicetype and @ backupdevicename Parametry.

  6. Węzeł b wykonać sp_addpublication.Należy określić nazwę dla publikacja @ publikacja, wartość true dla @ enabled_for_p2p, wartość aktywne for @ Stan i wartość true dla @ allow_initialize_from_backup.Aby dodać artykuły 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 na węzeł A jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  8. Węzeł b, ponownie wykonać sp_addsubscription.To czas, należy określić nazwę publikacja jako @ publikacja, nazwa węzła C jako @ subskrybent, nazwę miejsce docelowe bazy danych w C węzeł jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  9. W C węzła wykonać sp_addpublication.Należy określić nazwę dla publikacja @ publikacja, wartość true dla @ enabled_for_p2p, wartość aktywne for @ Stan i wartość true dla @ allow_initialize_from_backup.Aby dodać artykuły do publikacja, należy wykonać sp_addarticle.

  10. W C węzła wykonać sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła A jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł A jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  11. W C węzła wykonaj ponownie sp_addsubscription.Tym razem, należy określić nazwę publikacja jako @ publikacja, nazwa węzła B jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł B jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  12. Jeśli opublikowanych tabel, po operacji przywracanie są wszystkie kolumny tożsamości, zakres tożsamości, przypisane do tabel z węzła A mogą być użyte w tabelach na węzeł B i C. węzłaNależy użyć DBCC CHECKIDENT reseed tabele na węzeł B i C węzeł, aby zapewnić, że inny zakres jest używany dla każdego.

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

Użyj poniższej procedury, aby dodać jeden lub więcej węzłów do topologię, która składa się z węzłów, które są uruchomione SQL Server 2008 lub nowsze wersje SQL Server.

Aby dodać węzła z systemem SQL Server 2008 lub nowsza wersja do topologii

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

  2. Przywrócić kopię zapasową z węzła A na węzeł D.

  3. wykonać na D węzła sp_addpublication.Należy określić nazwę dla publikacja @ publikacja, wartość true dla @ enabled_for_p2p, wartość aktywne for @ Stan i wartość true dla @ allow_initialize_from_backup.Aby dodać artykuły do publikacja, należy wykonać sp_addarticle.

  4. wykonać na D węzła sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła A jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł A jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  5. wykonać na węzła A sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła D jako @ subskrybent, nazwę miejsce docelowe bazy danych w D węzeł jako @ destination_db, wartość Inicjowanie z kopia zapasowa for @ sync_type, a odpowiednie wartości dla @ backupdevicetype and @ backupdevicename Parametry.

    Węzeł D potencjalnie otrzymała transakcji z węzła B i C węzła do węzła A.Te transakcje są traktowane w następnym kroku.

  6. W D węzeł kwerendy MSpeer_lsns tabela.Użycie Autor and originator_lsn kolumny, aby określić w dzienniku numer (LSN) ostatniej transakcji, która otrzymała D węzeł z węzła b sekwencji

  7. wykonać na D węzła 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_db, a wartość tylko obsługi replikacja for @ 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 D węzeł jako @ destination_db, wartość Inicjowanie z lsn for @ sync_typei LSN, pobrane dla węzła B do @ subscriptionlsn.

  9. W D węzeł kwerendy MSpeer_lsns tabela.Użycie Autor and originator_lsn kolumny w celu określenia LSN ostatniej transakcji, która otrzymała D węzeł z węzła c

  10. wykonać na D węzła sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła C jako @ subskrybent, nazwę miejsce docelowe bazy danych w C węzeł jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  11. W C węzła wykonać sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła D jako @ subskrybent, nazwę miejsce docelowe bazy danych w D węzeł jako @ destination_db, wartość Inicjowanie z lsn for @ sync_typei LSN, pobrane dla węzła C dla @ subscriptionlsn.

  12. Jeśli opublikowanych tabel, po operacji przywracanie są wszystkie kolumny tożsamości, zakres tożsamości, przypisane do tabel z węzła A mogą być użyte w tabelach na węzeł D.Należy użyć DBCC CHECKIDENT reseed tabele na węzeł D, aby upewnić się, że inny zakres jest używany dla każdego.

    Aby uzyskać więcej informacji na temat zarządzania tożsamości zakresów zobacz część "Przypisywanie zakresów ręczne tożsamości zakres zarządzania" 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, na którym działa w nowszych wersjach SQL Server, który jest SQL Server 2005 wymaga tego można quiesce systemu do łączenia się nowy węzeł z wszystkich istniejących węzłów. W poniższej procedurze pokazano, jak dodać SQL Server 2005 węzeł do istniejących topologii etapach:

  • Etap, co jest objęty kroki od 1 do 5.Ten etap obejmuje częściowo połączyć D węzeł topologii, tworząc subskrypcji między węzła A i węzłów D.Pozwala to na zmiany powtarzać się na węzła A, węzeł B i C. węzłaZmiany w D węzeł może się rozpocząć tak szybko, jak subskrypcje zostały utworzone między węzła A i węzłów D.Zmiany wprowadzone przez węzeł B i C węzłów 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 połączyć D węzeł topologii, tworząc subskrypcji między węzeł B i węzeł D oraz między węzeł 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ż o tylko jedno połączenie między węzła A i węzłów D.

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

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

  2. Przywrócić kopię zapasową z węzła A na węzeł D.

  3. wykonać na D węzła sp_addpublication.Należy określić nazwę dla publikacja @ publikacja, wartość true dla @ enabled_for_p2p, wartość aktywne for @ Stan i wartość true dla @ allow_initialize_from_backup.Aby dodać artykuły do publikacja, należy wykonać sp_addarticle.

  4. wykonać na D węzła sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła A jako @ subskrybent, nazwę miejsce docelowe bazy danych na węzeł A jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  5. wykonać na węzła A sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła D jako @ subskrybent, nazwę miejsce docelowe bazy danych w D węzeł jako @ destination_db, wartość Inicjowanie z kopia zapasowa for @ sync_type, a odpowiednie wartości dla @ backupdevicetype and @ backupdevicename Parametry.

  6. Quiesce topologii, wykonując następujące czynności:

    1. Zatrzymaj wszystkie operacje wykonywane na wszystkich opublikowanych tabel w topologii typu peer-to-peer.

    2. wykonać sp_requestpeerresponse w bazie danych na Serwer A, Serwer B, Serwer C, and Serwer Di pobieranie parametrów wyjściowych @ request_id.

    3. Domyślnie jest Agent dystrybucji zestaw na uruchamianie ciągłe, dlatego, tokeny mają być wysyłane do wszystkich węzłów automatycznie.Agent dystrybucji nie jest uruchomiony w trybie ciągłym, należy uruchomić agenta.Aby uzyskać więcej informacji zobacz Pojęcia dotyczące replikacja agenta pliki wykonywalne lub How to: Start and Stop a Replication Agent (SQL Server Management Studio).

    4. wykonać sp_helppeerresponses, zapewniając @ request_id wartość pobierana w kroku 2.Poczekaj, aż wszystkie węzły wskazują otrzymał żądanie elementów równorzędnych.

    5. Przypisać nowej tożsamości zakresów w D węzła, jeśli trzeba.Teraz można całkowicie podłączyć topologii przez dodawanie pozostałych subskrypcji.

  7. wykonać na D węzła 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_db, a wartość tylko obsługi replikacja for @ sync_type.

  8. wykonać na D węzła sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła C jako @ subskrybent, nazwę miejsce docelowe bazy danych w C węzeł jako @ destination_db, a wartość tylko obsługi replikacja for @ 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 D węzeł jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.

  10. W C węzła wykonać sp_addsubscription.Określ nazwę publikacja jako @ publikacja, nazwa węzła D jako @ subskrybent, nazwę miejsce docelowe bazy danych w D węzeł jako @ destination_db, a wartość tylko obsługi replikacja for @ sync_type.