Udostępnij za pośrednictwem


Best practices for Azure SQL Data Sync (Najlepsze rozwiązania dotyczące korzystania z usługi Azure SQL Data Sync)

Dotyczy:Azure SQL Database

Ważne

Usługa SQL Data Sync zostanie wycofana 30 września 2027 r. Rozważ migrację do alternatywnych rozwiązań replikacji/synchronizacji danych.

W tym artykule opisano najlepsze rozwiązania dotyczące usługi Azure SQL Data Sync.

Aby zapoznać się z omówieniem usługi SQL Data Sync, zobacz Co to jest usługa SQL Data Sync dla platformy Azure?

Bezpieczeństwo i niezawodność

Agent klienta

  • Zainstaluj agenta klienta przy użyciu konta użytkownika o najniższych uprawnieniach, które ma dostęp do usługi sieciowej.
  • Zainstaluj agenta klienta na serwerze, który różni się od miejsca instalacji programu SQL Server.
  • Nie rejestruj lokalnej bazy danych z więcej niż jednym agentem.
    • Unikaj tego, nawet jeśli synchronizujesz różne tabele dla różnych grup synchronizacji.
    • Zarejestrowanie lokalnej bazy danych przy użyciu wielu agentów klienta stanowi wyzwanie podczas usuwania jednej z grup synchronizacji.

Konta bazy danych z najmniej wymaganymi uprawnieniami

  • Dla konfiguracji synchronizacji:

    • Uprawnienia programu SQL Server: CREATE/ALTER TABLE, ALTER DATABASE, CREATE PROCEDURE, SELECT/ALTER SCHEMA, CREATE TYPE. Te uprawnienia są uwzględniane (wraz z innymi uprawnieniami) w wbudowanej roli ddl_adminbazy danych .
    • Na poziomie grupy zasobów konieczne jest członkostwo w roli Współautora bazy danych SQL. Aby uzyskać więcej informacji, zobacz przypisywanie ról Azure za pomocą portalu Azure. Członkostwo w szerszych rolach, takich jak Współautor lub Właściciel, również, jeśli zostało już przypisane.
    • Uprawnienia na poziomie subskrypcji nie powinny być potrzebne, ale mogą zapewnić uproszczony (choć nie najmniej wymagany) sposób zapewnienia niezbędnych uprawnień dla wielu implementacji usługi Azure Data Sync w ramach subskrypcji. Oryginalny, przestarzały interfejs API wymagał tych uprawnień Azure RBAC, ale nie powinien już być używany.
      • „Microsoft.Sql/locations/syncMemberOperationResults/read”
      • „Microsoft.Sql/locations/syncAgentOperationResults/read”
      • „Microsoft.Sql/locations/syncGroupOperationResults/read”
  • W przypadku ciągłej synchronizacji.

    • Uprawnienia programu SQL Server: SELECT, INSERT, UPDATE i DELETE w tabelach użytkowników wybranych do synchronizacji. Uprawnienie EXECUTE dla typów tabel zdefiniowanych przez użytkownika.
    • Uprawnienia programu SQL Server: UPRAWNIENIA SELECT, INSERT, UPDATE i DELETE dotyczące metadanych synchronizacji i tabel śledzenia utworzonych przez system. Uprawnienie EXECUTE do procedur składowanych utworzonych przez usługę.
      • Schemat DataSync jest używany dla obiektów utworzonych przez system w bazach danych piasty i składowych.
      • Schematy dss i TaskHosting są używane dla obiektów utworzonych przez system w bazie danych metadanych synchronizacji.
  • W przypadku anulowania aprowizacji.

    • Uprawnienia programu SQL Server: ALTER na wszystkich tabelach będących częścią synchronizacji; SELECT i DELETE na tabelach metadanych synchronizacji; PEŁNA KONTROLA na tabelach śledzenia synchronizacji, procedurach składowanych i typach zdefiniowanych przez użytkownika.
    • Aby wyczyścić, usuń obiekty utworzone przez system w schematach DataSync, dss i TaskHosting.

Usługa Azure SQL Database obsługuje tylko jeden zestaw poświadczeń. Aby wykonać te zadania w ramach tego ograniczenia, rozważ następujące opcje:

  • Zmień poświadczenia dla różnych faz (na przykład poświadczenia1 dla konfiguracji i poświadczenia2 w toku).
  • Zmień uprawnienia poświadczeń (czyli zmień uprawnienie po skonfigurowaniu synchronizacji).

Inspekcja

Zaleca się włączenie inspekcji na poziomie baz danych w grupach synchronizacji. Dowiedz się, jak włączyć inspekcję w bazie danych Azure SQL Database lub włączyć inspekcję w bazie danych programu SQL Server.

Ustawienia

Zagadnienia i ograniczenia dotyczące bazy danych

Rozmiar bazy danych

Podczas tworzenia nowej bazy danych ustaw maksymalny rozmiar, aby zawsze był większy niż wdrażana baza danych. Jeśli nie ustawisz maksymalnego rozmiaru na większy niż wdrożona baza danych, synchronizacja zakończy się niepowodzeniem. Mimo że usługa SQL Data Sync nie oferuje automatycznego wzrostu, można uruchomić ALTER DATABASE polecenie w celu zwiększenia rozmiaru bazy danych po jej utworzeniu. Upewnij się, że nie przekraczasz limitów rozmiaru bazy danych.

Ważne

Usługa SQL Data Sync przechowuje dodatkowe metadane z każdą bazą danych. Upewnij się, że są uwzględniane te metadane podczas obliczania potrzebnego miejsca. Ilość dodanych obciążeń jest związana z szerokością tabel (na przykład wąskie tabele wymagają większego obciążenia) i ilością ruchu.

Zagadnienia i ograniczenia dotyczące tabel

Wybór tabel

Nie musisz uwzględniać wszystkich tabel, które znajdują się w bazie danych w grupie synchronizacji. Tabele uwzględnione w grupie synchronizacji wpływają na wydajność i koszty. Uwzględnij tabele i tabele, od których są zależne, w grupie synchronizacji tylko wtedy, gdy wymaga tego potrzeba biznesowa.

Klucze podstawowe

Każda tabela w grupie synchronizacji musi mieć klucz podstawowy. Usługa SQL Data Sync nie może zsynchronizować tabeli, która nie ma klucza podstawowego.

Przed rozpoczęciem korzystania z usługi SQL Data Sync w środowisku produkcyjnym przetestuj początkową i bieżącą wydajność synchronizacji.

Puste tabele zapewniają najlepszą wydajność

Puste tabele zapewniają najlepszą wydajność podczas inicjowania. Jeśli tabela docelowa jest pusta, usługa Data Sync używa operacji wstawiania zbiorczego w celu załadowania danych. W przeciwnym razie, funkcja Data Sync przeprowadza porównanie i wstawianie wiersz po wierszu w celu sprawdzenia konfliktów. Jeśli jednak wydajność nie jest problemem, możesz skonfigurować synchronizację między tabelami, które już zawierają dane.

Przygotuj docelowe bazy danych

Usługa SQL Data Sync zapewnia podstawowe automatyczne aprowizowanie baz danych.

W tej sekcji omówiono ograniczenia aprowizacji w usłudze SQL Data Sync.

Ograniczenia automatycznej aprowizacji

Usługa SQL Data Sync ma następujące ograniczenia dotyczące automatycznego aprowizowania.

  • Wybierz tylko kolumny utworzone w tabeli docelowej. Kolumny, które nie są częścią grupy synchronizacji, nie są uwzględniane w tabelach docelowych.
  • Indeksy są tworzone tylko dla wybranych kolumn. Jeśli indeks tabeli źródłowej zawiera kolumny, które nie są częścią grupy synchronizacji, te indeksy nie są odzwierciedlane w tabelach docelowych.
  • Indeksy w kolumnach typu XML nie są udostępnione.
  • Usługa Data Sync obsługuje tylko następujące dwie właściwości indeksu: Unikatowe, Klastrowane/Nieklaterowane. Inne właściwości indeksu, takie jak IGNORE_DUP_KEY, predykat filtru Where itp. nie są obsługiwane, a indeks docelowy jest aprowizowany bez tych właściwości, nawet jeśli indeks źródłowy ma ustawione te właściwości.
  • Ograniczenia CHECK nie są stosowane.
  • Istniejące wyzwalacze w tabelach źródłowych nie są konfigurowane.
  • Nie tworzy się widoków i procedur składowanych w docelowej bazie danych.
  • AKCJE ON UPDATE CASCADE I ON DELETE CASCADE na ograniczeniach klucza obcego nie są odtwarzane w tabelach docelowych.
  • Jeśli masz kolumny dziesiętne lub liczbowe o precyzji większej niż 28, usługa SQL Data Sync może napotkać problem z przepełnieniem konwersji podczas synchronizacji. Zalecamy ograniczenie dokładności kolumn dziesiętnych lub liczbowych do 28 lub mniej.

Zalecenia

  • Użyj funkcji automatycznego aprowizowania usługi SQL Data Sync tylko wtedy, gdy próbujesz użyć usługi.
  • Dla produkcji należy zapewnić schemat bazy danych.

Gdzie zlokalizować bazę danych centrum

Scenariusz z chmurą w przedsiębiorstwie

Aby zminimalizować opóźnienie, zachowaj bazę danych centrum w pobliżu największej koncentracji ruchu bazy danych grupy synchronizacji.

Scenariusz chmury do chmury

  • Gdy wszystkie bazy danych w grupie synchronizacji znajdują się w jednym centrum danych, koncentrator powinien być tam również zlokalizowany. Ta konfiguracja zmniejsza opóźnienie i koszt transferu danych między centrami danych.
  • Gdy bazy danych w grupie synchronizacji znajdują się w wielu centrach danych, centrum powinno znajdować się w tym samym centrum danych co większość baz danych i ruchu bazy danych.

Scenariusze mieszane

Zastosuj wspomniane powyżej wytyczne do złożonych konfiguracji grup synchronizacji, takich jak te, które są kombinacją scenariuszy typu przedsiębiorstwo-do-chmury oraz chmura-do-chmury.

Synchronizuj

Unikaj powolnej i kosztownej synchronizacji początkowej

W tej sekcji omówiono początkową synchronizację grupy synchronizacji. Dowiedz się, jak zapobiec, aby początkowa synchronizacja trwała dłużej i kosztowała więcej niż to konieczne.

Jak działa synchronizacja początkowa

Podczas tworzenia grupy synchronizacji zacznij od danych w tylko jednej bazie danych. Jeśli masz dane w wielu bazach danych, usługa SQL Data Sync traktuje każdy wiersz jako konflikt, który należy rozwiązać. To rozwiązanie konfliktu powoduje spowolnienie synchronizacji początkowej. Jeśli masz dane w wielu bazach danych, synchronizacja początkowa może potrwać od kilku dni do kilku miesięcy, w zależności od rozmiaru bazy danych.

Jeśli bazy danych znajdują się w różnych centrach danych, każdy wiersz musi podróżować między różnymi centrami danych. Zwiększa to koszt synchronizacji początkowej.

Zalecenie

Jeśli to możliwe, zacznij od danych tylko w jednej z baz danych grupy synchronizacji.

Projektowanie w celu uniknięcia pętli synchronizacji

Pętla synchronizacji występuje, gdy istnieją odwołania cykliczne w grupie synchronizacji. W tym scenariuszu każda zmiana w jednej bazie danych jest bez końca i cyklicznie replikowana przez bazy danych w grupie synchronizacji.

Upewnij się, że unikasz pętli synchronizacji, ponieważ powodują one obniżenie wydajności i może znacznie zwiększyć koszty.

Zmiany, które nie udają się propagować

Przyczyny, dla których nie można propagować zmian

Propagacja zmian może zakończyć się niepowodzeniem z jednego z następujących powodów:

  • Niezgodność schematu/typu danych.
  • Wstawianie wartości null w kolumnach bez wartości null.
  • Naruszenie ograniczeń klucza obcego.

Co się stanie, gdy zmiany nie będą propagowane?

  • Grupa synchronizacji pokazuje, że jest w stanie ostrzeżenia.
  • Szczegóły są wyświetlane w podglądzie dzienników interfejsu użytkownika portalu.
  • Jeśli problem nie zostanie rozwiązany przez 45 dni, baza danych stanie się nieaktualna.

Uwaga

Te zmiany nigdy nie są propagowane. Jedynym sposobem odzyskania w tym scenariuszu jest ponowne utworzenie grupy synchronizacji.

Zalecenie

Regularnie monitoruj kondycję grupy synchronizacji i bazy danych za pośrednictwem portalu i interfejsu dziennika.

Konserwacja

Unikaj nieaktualnych baz danych i grup synchronizacji

Grupa synchronizacji lub baza danych w grupie synchronizacji może stać się nieaktualna. Gdy stan grupy synchronizacji jest nieaktualny, przestanie działać. Gdy stan bazy danych jest nieaktualny, dane mogą zostać utracone. Najlepiej jest uniknąć tego scenariusza zamiast próby odzyskania z niego.

Unikaj nieaktualnych baz danych

Stan bazy danych jest ustawiony na nieaktualny , gdy był w trybie offline przez 45 dni lub dłużej. Aby uniknąć nieaktualnego stanu bazy danych, upewnij się, że żadne z baz danych nie jest w trybie offline przez 45 dni lub więcej.

Unikaj nieaktualnych grup synchronizacji

Stan grupy synchronizacji jest ustawiony na nieaktualny , gdy każda zmiana grupy synchronizacji nie może być propagowana do pozostałej części grupy synchronizacji przez 45 dni lub więcej. Aby uniknąć nieaktualnego stanu grupy synchronizacji, regularnie sprawdzaj dziennik historii grupy synchronizacji. Upewnij się, że wszystkie konflikty zostały rozwiązane i że zmiany są pomyślnie propagowane w bazach danych grup synchronizacji.

Grupa synchronizacji może nie zastosować zmiany z jednego z następujących powodów:

  • Niezgodność schematu między tabelami.
  • Niezgodność danych między tabelami.
  • Wstawianie wiersza z wartością null w kolumnie, która nie zezwala na wartości null.
  • Aktualizowanie wiersza przy użyciu wartości naruszającej ograniczenie klucza obcego.

Aby zapobiec nieaktualnym grupom synchronizacji:

  • Zaktualizuj schemat, aby dopuścić wartości zawarte w nieudanych wierszach.
  • Zaktualizuj wartości klucza obcego, aby uwzględnić wartości zawarte w wierszach, które zakończyły się niepowodzeniem.
  • Zaktualizuj wartości danych w wierszu, który zakończył się niepowodzeniem, aby były one zgodne ze schematem lub kluczami obcymi w docelowej bazie danych.

Unikanie problemów z deprowizjonowaniem

W niektórych okolicznościach wyrejestrowanie bazy danych za pomocą agenta klienta może spowodować niepowodzenie synchronizacji.

Scenariusz

  1. Grupa synchronizacji A została utworzona przy użyciu instancji bazy danych SQL i bazy danych SQL Server, która jest skojarzona z lokalnym agentem 1.
  2. Ta sama lokalna baza danych jest zarejestrowana w lokalnym agencie 2 (ten agent nie jest skojarzony z żadną grupą synchronizacji).
  3. Wyrejestrowywanie lokalnej bazy danych z agenta lokalnego 2 usuwa tabele śledzenia i metadanych dla grupy synchronizacji A dla lokalnej bazy danych.
  4. Operacja synchronizacji grupy A kończy się niepowodzeniem z powodu następującego błędu: "Nie można ukończyć bieżącej operacji, ponieważ baza danych nie jest przygotowana do synchronizacji lub nie masz uprawnień do korzystania z tabel konfiguracyjnych synchronizacji."

Rozwiązanie

Aby uniknąć tego scenariusza, nie rejestruj bazy danych z więcej niż jednym agentem.

Aby wyjść z tej sytuacji (scenariusza):

  1. Usuń bazę danych z każdej grupy synchronizacji, do których należy.
  2. Dodaj bazę danych z powrotem do każdej grupy synchronizacji, z której została usunięta.
  3. Wdróż każdą dotkniętą problemem grupę synchronizacji (ta akcja udostępnia bazę danych).

Modyfikowanie grupy synchronizacji

Nie próbuj usuwać bazy danych z grupy synchronizacji, a następnie edytować grupę synchronizacji bez uprzedniego wdrożenia jednej ze zmian.

Zamiast tego najpierw usuń bazę danych z grupy synchronizacji. Następnie wdróż zmianę i poczekaj na zakończenie aprowizacji. Po zakończeniu deprowizjonowania można edytować grupę synchronizacji i wdrożyć zmiany.

Jeśli spróbujesz usunąć bazę danych, a następnie zmodyfikujesz grupę synchronizacji bez wcześniejszego wdrożenia jednej ze zmian, jedna lub druga operacja zakończy się niepowodzeniem. Interfejs portalu może stać się niespójny. W takim przypadku odśwież stronę, aby przywrócić prawidłowy stan.

Staraj się unikać przekroczenia limitu czasu odświeżania schematu

Jeśli masz złożony schemat do synchronizacji, może wystąpić "limit czasu operacji" podczas odświeżania schematu, jeśli baza danych metadanych synchronizacji ma niższą jednostkę SKU (na przykład: podstawowa).

Rozwiązanie

Aby rozwiązać ten problem, rozważ zwiększenie zasobów bazy danych metadanych synchronizacji.

Aby uzyskać więcej informacji na temat usługi SQL Data Sync, zobacz:

Aby uzyskać więcej informacji na temat usługi SQL Database, zobacz: