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

Dotyczy:Azure SQL Database

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

Omówienie usługi SQL Data Sync zawiera temat Sync data across multiple cloud and on-premises databases with Azure SQL Data Sync (Synchronizowanie danych między wieloma bazami danych w chmurze i lokalnie za pomocą usługi Azure SQL Data Sync).

Ważne

Usługa Azure SQL Data Sync nie obsługuje obecnie usługi Azure SQL Managed Instance ani Azure Synapse Analytics.

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

  • W przypadku 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ółautor bazy danych SQL. Aby uzyskać więcej informacji, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal. 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ń kontroli dostępu opartej na rolach platformy Azure, 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 we wszystkich tabelach w ramach synchronizacji; SELECT i DELETE w tabelach metadanych synchronizacji; KONTROLA na temat tabel śledzenia synchronizacji, procedur składowanych i typów zdefiniowanych przez użytkownika.
    • Aby wyczyścić, usuń obiekty utworzone przez system w DataSyncschematach , dssi 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świadczeń2 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.

Konfigurowanie

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

Wybieranie 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 usługa Data Sync wykonuje porównanie wierszy po wierszach i wstawianie w celu sprawdzenia konfliktów. Jeśli jednak wydajność nie jest problemem, możesz skonfigurować synchronizację między tabelami, które już zawierają dane.

Aprowizowanie docelowych baz danych

Usługa SQL Data Sync zapewnia podstawową automatyczną aprowizowanie bazy 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. Wszystkie kolumny, które nie są częścią grupy synchronizacji, nie są aprowidowane 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ą aprowidowane w tabelach docelowych.
  • Indeksy w kolumnach typu XML nie są aprowiizowane.
  • Usługa Data Sync obsługuje tylko następujące dwie właściwości indeksu: Unique, Clustered/Non-Clustered. Inne właściwości indeksu, takie jak IGNORE_DUP_KEY, Gdzie predykat filtru itp., nie są obsługiwane, a indeks docelowy jest aprowizowany bez tych właściwości, nawet jeśli źródłowy indeks ma te właściwości ustawione.
  • Ograniczenia CHECK nie są aprowidowane.
  • Istniejące wyzwalacze w tabelach źródłowych nie są aprowizowane.
  • Widoki i procedury składowane nie są tworzone w docelowej bazie danych.
  • W PRZYPADKU AKTUALIZACJI akcji CASCADE i ON DELETE CASCADE w przypadku ograniczeń klucza obcego nie są tworzone ponownie 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.
  • W przypadku środowiska produkcyjnego należy aprowizować 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, centrum powinno znajdować się w tym samym centrum danych. 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 powyższe wytyczne do złożonych konfiguracji grup synchronizacji, takich jak te, które są kombinacją scenariuszy między przedsiębiorstwami i chmurą i chmurą.

Synchronizuj

Unikaj powolnej i kosztownej synchronizacji początkowej

W tej sekcji omówiono początkową synchronizację grupy synchronizacji. Dowiedz się, jak zapobiec dłuższej synchronizacji początkowej i być bardziej kosztowne 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 mogą być propagowane

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żenie .
  • 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 zezwolić na wartości zawarte w wierszach, które zakończyły się niepowodzeniem.
  • 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 anulowaniem aprowizacji

W niektórych okolicznościach wyrejestrowanie bazy danych z agentem klienta może spowodować niepowodzenie synchronizacji.

Scenariusz

  1. Grupa synchronizacji A została utworzona przy użyciu wystąpienia usługi SQL Database i bazy danych programu 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 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 aprowizowana na potrzeby synchronizacji lub nie masz uprawnień do tabel konfiguracji synchronizacji".

Rozwiązanie

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

Aby odzyskać dane z tego scenariusza:

  1. Usuń bazę danych z każdej grupy synchronizacji, do którego należy.
  2. Dodaj bazę danych z powrotem do każdej grupy synchronizacji, z której została usunięta.
  3. Wdróż każdą grupę synchronizacji, której dotyczy problem (ta akcja aprowizuje 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 anulowania aprowizacji 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.

Unikaj 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ż skalowanie w górę zasobów bazy danych metadanych synchronizacji.

Następne kroki

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: