Udostępnij za pośrednictwem


Migrowanie usługi Azure SQL Database z modelu opartego na jednostkach DTU do modelu opartego na rdzeniach wirtualnych

Dotyczy: Azure SQL Database

W tym artykule opisano sposób migrowania bazy danych w usłudze Azure SQL Database z modelu zakupów opartego na jednostkach DTU do modelu zakupów opartego na rdzeniach wirtualnych.

Migrowanie bazy danych

Migrowanie bazy danych z modelu zakupów opartego na jednostkach DTU do modelu zakupów opartego na rdzeniach wirtualnych jest podobne do skalowania między celami usług w warstwach usług Podstawowa, Standardowa i Premium, z podobnym czasem trwania i minimalnym przestojem na końcu procesu migracji. Baza danych zmigrowana do modelu zakupów opartego na rdzeniach wirtualnych może zostać zmigrowana z powrotem do modelu zakupów opartego na jednostkach DTU w dowolnym momencie przy użyciu tych samych kroków, z wyjątkiem baz danych migrowanych do warstwy usługi Hiperskala .

Bazę danych można migrować do innego modelu zakupów przy użyciu witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia platformy Azure i języka Transact-SQL.

Aby przeprowadzić migrację bazy danych do innego modelu zakupów przy użyciu witryny Azure Portal, wykonaj następujące kroki:

  1. Przejdź do bazy danych SQL w witrynie Azure Portal.

  2. Wybierz pozycję Obliczenia i magazyn w obszarze Ustawienia.

  3. Użyj listy rozwijanej w obszarze Warstwa usługi, aby wybrać nowy model zakupów i warstwę usług:

    Zrzut ekranu przedstawiający stronę obliczeniową i magazyn bazy danych SQL w witrynie Azure Portal z wybraną warstwą usługi.

Wybieranie warstwy usługi i celu usługi rdzeni wirtualnych

W przypadku większości scenariuszy migracji jednostek DTU do rdzeni wirtualnych bazy danych i pul elastycznych w warstwach usług Podstawowa i Standardowa są mapowana na warstwę usługi Ogólnego przeznaczenia . Bazy danych i elastyczne pule w warstwie usługi Premium są mapowana na warstwę usługi Krytyczne dla działania firmy. W zależności od scenariusza i wymagań aplikacji warstwa usługi Hiperskala może być często używana jako cel migracji dla baz danych i elastycznych pul we wszystkich warstwach usług DTU.

Aby wybrać cel usługi lub rozmiar obliczeniowy, dla zmigrowanej bazy danych w modelu rdzeni wirtualnych można użyć podstawowej, ale przybliżonej reguły kciuka: co 100 jednostek DTU w warstwach Podstawowa lub Standardowa wymaga co najmniej 1 rdzeni wirtualnych, a co 125 jednostek DTU w warstwie Premium wymaga co najmniej 1 rdzeni wirtualnych.

Napiwek

Ta reguła jest przybliżona, ponieważ nie uwzględnia określonego typu sprzętu używanego dla bazy danych DTU lub elastycznej puli.

W modelu JEDNOSTEK DTU system może wybrać dowolną dostępną konfigurację sprzętu dla bazy danych lub elastycznej puli. Ponadto w modelu DTU masz tylko pośrednią kontrolę nad liczbą rdzeni wirtualnych (procesorów logicznych), wybierając wyższą lub niższą liczbę jednostek DTU lub eDTU.

W modelu rdzeni wirtualnych klienci muszą dokonać wyraźnego wyboru zarówno konfiguracji sprzętu, jak i liczby rdzeni wirtualnych (procesorów logicznych). Chociaż model jednostek DTU nie oferuje tych opcji, typ sprzętu i liczba logicznych procesorów CPU używanych dla każdej bazy danych i elastycznej puli są widoczne za pośrednictwem dynamicznych widoków zarządzania. Dzięki temu można dokładniej określić pasujący cel usługi rdzeni wirtualnych.

Poniższe podejście wykorzystuje te informacje do określenia celu usługi rdzeni wirtualnych z podobną alokacją zasobów w celu uzyskania podobnego poziomu wydajności po migracji do modelu rdzeni wirtualnych.

Mapowanie jednostek DTU na rdzenie wirtualne

Następujące zapytanie Języka Transact-SQL, wykonywane w kontekście bazy danych DTU do zmigrowania, zwraca zgodną (prawdopodobnie ułamkową) liczbę rdzeni wirtualnych w każdej konfiguracji sprzętu w modelu rdzeni wirtualnych. Tę liczbę można zaokrąglić do najbliższej liczby rdzeni wirtualnych dostępnych dla baz danych i elastycznych pul w każdej konfiguracji sprzętu w modelu rdzeni wirtualnych. Klienci mogą wybrać cel usługi rdzeni wirtualnych, który jest najbliższym dopasowaniem dla bazy danych DTU lub elastycznej puli.

Przykładowe scenariusze migracji korzystające z tego podejścia zostały opisane w sekcji Przykłady .

Wykonaj to zapytanie w kontekście bazy danych, która ma zostać zmigrowana, a nie w master bazie danych. Podczas migracji elastycznej puli wykonaj zapytanie w kontekście dowolnej bazy danych w puli.

;WITH dtu_vcore_map
AS (
    SELECT rg.slo_name,
        CAST(DATABASEPROPERTYEX(DB_NAME(), 'Edition') AS NVARCHAR(40)) COLLATE DATABASE_DEFAULT AS dtu_service_tier,
        CASE 
            WHEN slo.slo_name LIKE '%SQLG4%' THEN 'Gen4' --Gen4 is retired.
            WHEN slo.slo_name LIKE '%SQLGZ%' THEN 'Gen4' --Gen4 is retired.
            WHEN slo.slo_name LIKE '%SQLG5%' THEN 'standard_series'
            WHEN slo.slo_name LIKE '%SQLG6%' THEN 'standard_series'
            WHEN slo.slo_name LIKE '%SQLG7%' THEN 'standard_series'
            WHEN slo.slo_name LIKE '%GPGEN8%' THEN 'standard_series'
            END COLLATE DATABASE_DEFAULT AS dtu_hardware_gen,
        s.scheduler_count * CAST(rg.instance_cap_cpu / 100. AS DECIMAL(3, 2)) AS dtu_logical_cpus,
        CAST((jo.process_memory_limit_mb / s.scheduler_count) / 1024. AS DECIMAL(4, 2)) AS dtu_memory_per_core_gb
    FROM sys.dm_user_db_resource_governance AS rg
    CROSS JOIN (
        SELECT COUNT(1) AS scheduler_count
        FROM sys.dm_os_schedulers
        WHERE status COLLATE DATABASE_DEFAULT = 'VISIBLE ONLINE'
        ) AS s
    CROSS JOIN sys.dm_os_job_object AS jo
    CROSS APPLY (SELECT UPPER(rg.slo_name) COLLATE DATABASE_DEFAULT AS slo_name) slo
    WHERE rg.dtu_limit > 0
        AND DB_NAME() COLLATE DATABASE_DEFAULT <> 'master'
        AND rg.database_id = DB_ID()
)
SELECT dtu_logical_cpus,
    dtu_memory_per_core_gb,
    dtu_service_tier,
    CASE 
        WHEN dtu_service_tier = 'Basic' THEN 'General Purpose'
        WHEN dtu_service_tier = 'Standard' THEN 'General Purpose or Hyperscale'
        WHEN dtu_service_tier = 'Premium' THEN 'Business Critical or Hyperscale'
        END AS vcore_service_tier,
    CASE 
        WHEN dtu_hardware_gen = 'Gen4' THEN dtu_logical_cpus * 1.7
        WHEN dtu_hardware_gen = 'standard_series' THEN dtu_logical_cpus
        END AS standard_series_vcores,
    5.05 AS standard_series_memory_per_core_gb,
    CASE 
        WHEN dtu_hardware_gen = 'Gen4' THEN dtu_logical_cpus
        WHEN dtu_hardware_gen = 'standard_series' THEN dtu_logical_cpus * 0.8
        END AS Fsv2_vcores,
    1.89 AS Fsv2_memory_per_core_gb,
    CASE 
        WHEN dtu_hardware_gen = 'Gen4' THEN dtu_logical_cpus * 1.4
        WHEN dtu_hardware_gen = 'standard_series' THEN dtu_logical_cpus * 0.9
        END AS M_vcores,
    29.4 AS M_memory_per_core_gb
FROM dtu_vcore_map;

Dodatkowe czynniki

Oprócz liczby rdzeni wirtualnych (procesorów logicznych) i typu sprzętu kilka innych czynników może mieć wpływ na wybór celu usługi rdzeni wirtualnych:

  • Mapowanie zapytania Transact-SQL odpowiada celom jednostek DTU i usług rdzeni wirtualnych pod względem ich pojemności procesora CPU, dlatego wyniki są dokładniejsze dla obciążeń powiązanych z procesorem CPU.

  • W przypadku tego samego typu sprzętu i tej samej liczby rdzeni wirtualnych limity zasobów przepływności operacji we/wy na sekundę i dziennika transakcji dla baz danych rdzeni wirtualnych są często wyższe niż w przypadku baz danych jednostek DTU. W przypadku obciążeń związanych z operacjami we/wy może być możliwe obniżenie liczby rdzeni wirtualnych w modelu rdzeni wirtualnych w celu osiągnięcia tego samego poziomu wydajności. Rzeczywiste limity zasobów dla baz danych jednostek DTU i rdzeni wirtualnych są widoczne w widoku sys.dm_user_db_resource_governance . Porównanie tych wartości między bazą danych lub pulą jednostek DTU do zmigrowania oraz bazą danych lub pulą rdzeni wirtualnych z około pasującym celem usługi może pomóc dokładniej wybrać cel usługi rdzeni wirtualnych.

  • Zapytanie mapowania zwraca również ilość pamięci na rdzeń dla bazy danych DTU lub elastycznej puli do zmigrowania oraz dla każdej konfiguracji sprzętu w modelu rdzeni wirtualnych. Zapewnienie podobnej lub większej całkowitej ilości pamięci po migracji do rdzeni wirtualnych jest ważne w przypadku obciążeń wymagających dużej pamięci podręcznej danych w celu osiągnięcia wystarczającej wydajności lub obciążeń wymagających dużych przydziałów pamięci na potrzeby przetwarzania zapytań. W przypadku takich obciążeń w zależności od rzeczywistej wydajności może być konieczne zwiększenie liczby rdzeni wirtualnych w celu uzyskania wystarczającej całkowitej ilości pamięci.

  • Historyczne wykorzystanie zasobów bazy danych DTU należy wziąć pod uwagę podczas wybierania celu usługi rdzeni wirtualnych. Bazy danych jednostek DTU ze stale niedostatecznie wykorzystywanymi zasobami procesora CPU mogą wymagać mniejszej liczby rdzeni wirtualnych niż liczba zwracana przez zapytanie mapowania. Z drugiej strony bazy danych jednostek DTU, w których stale wysokie wykorzystanie procesora CPU powoduje niewystarczającą wydajność obciążenia, może wymagać więcej rdzeni wirtualnych niż zwracane przez zapytanie.

  • W przypadku migrowania baz danych z sporadycznymi lub nieprzewidywalnymi wzorcami użycia rozważ użycie bezserwerowej warstwy obliczeniowej dla warstwy obliczeniowej usługi Azure SQL Database . Maksymalna liczba współbieżnych procesów roboczych w trybie bezserwerowym wynosi 75% limitu w aprowizowanych obliczeniach dla tej samej liczby skonfigurowanych maksymalnej liczby rdzeni wirtualnych. Ponadto maksymalna ilość pamięci dostępnej w trybie bezserwerowym wynosi 3 GB niż maksymalna liczba skonfigurowanych rdzeni wirtualnych, która jest mniejsza niż pamięć na rdzeń dla aprowizowania zasobów obliczeniowych. Na przykład maksymalna pamięć gen5 wynosi 120 GB, gdy maksymalnie 40 rdzeni wirtualnych jest skonfigurowanych w trybie bezserwerowym, a 204 GB dla aprowizowanego procesora obliczeniowego z 40 rdzeniami wirtualnymi.

  • W modelu rdzeni wirtualnych obsługiwany maksymalny rozmiar bazy danych może się różnić w zależności od sprzętu. W przypadku dużych baz danych sprawdź obsługiwane maksymalne rozmiary w modelu rdzeni wirtualnych dla pojedynczych baz danych i pul elastycznych.

  • W przypadku pul elastycznych limity zasobów dla pul elastycznych przy użyciu modelu zakupów jednostek DTU i modeli rdzeni wirtualnych mają różnice w maksymalnej obsługiwanej liczbie baz danych na pulę. Należy to wziąć pod uwagę podczas migracji elastycznych pul z wieloma bazami danych.

  • Niektóre konfiguracje sprzętowe mogą nie być dostępne w każdym regionie. Sprawdź dostępność w obszarze Konfiguracja sprzętu dla usługi SQL Database.

Wytyczne dotyczące określania rozmiaru jednostek DTU do rdzeni wirtualnych podane w tej sekcji pomagają w początkowym oszacowaniu docelowego celu usługi bazy danych.

Optymalna konfiguracja docelowej bazy danych jest zależna od obciążenia. W związku z tym, aby osiągnąć optymalny stosunek ceny/wydajności po migracji, może być konieczne użycie elastyczności modelu rdzeni wirtualnych w celu dostosowania liczby rdzeni wirtualnych, konfiguracji sprzętu i warstw usług i obliczeń. Może być również konieczne dostosowanie parametrów konfiguracji bazy danych, takich jak maksymalny stopień równoległości i/lub zmiana poziomu zgodności bazy danych w celu włączenia ostatnich ulepszeń aparatu bazy danych.

Przykłady migracji jednostek DTU do rdzeni wirtualnych

Uwaga

Wartości w poniższych przykładach są przeznaczone tylko do celów ilustracyjnych. Rzeczywiste wartości zwracane w opisanych scenariuszach mogą być inne.

Migrowanie standardowej bazy danych S9

Zapytanie mapowania zwraca następujący wynik (niektóre kolumny nie są wyświetlane w celu zwięzłości):

dtu_logical_cpus dtu_memory_per_core_gb standard_series_vcores standard_series_memory_per_core_gb
24.00 5,40 24.000 5,05

Widzimy, że standardowa baza danych DTU ma 24 procesory logiczne (rdzenie wirtualne), z 5,4 GB pamięci na rdzeń wirtualny. Bezpośrednie dopasowanie do tego jest bazą danych ogólnego przeznaczenia 2 rdzeni wirtualnych na sprzęcie z serii Standardowa (Gen5), celem usługi GP_Gen5_24 rdzeni wirtualnych.

Migrowanie standardowej bazy danych S0

Zapytanie mapowania zwraca następujący wynik (niektóre kolumny nie są wyświetlane w celu zwięzłości):

dtu_logical_cpus dtu_memory_per_core_gb standard_series_vcores standard_series_memory_per_core_gb
0.25 1.3 0.500 5,05

Widzimy, że baza danych DTU ma odpowiednik 0,25 procesorów logicznych (rdzeni wirtualnych), z 1,3 GB pamięci na rdzeń wirtualny. Najmniejsze cele usługi rdzeni wirtualnych w konfiguracji sprzętowej serii standardowej (Gen5), GP_Gen5_2, zapewniają więcej zasobów obliczeniowych niż standardowa baza danych S0, więc bezpośrednie dopasowanie nie jest możliwe. Preferowana jest opcja GP_Gen5_2 . Ponadto jeśli obciążenie jest odpowiednie dla bezserwerowej warstwy obliczeniowej, GP_S_Gen5_1 byłoby bliżej dopasowane.

Migrowanie bazy danych Premium P15

Zapytanie mapowania zwraca następujący wynik (niektóre kolumny nie są wyświetlane w celu zwięzłości):

dtu_logical_cpus dtu_memory_per_core_gb standard_series_vcores standard_series_memory_per_core_gb
42.00 4.86 42.000 5,05

Widzimy, że baza danych DTU ma 42 procesory logiczne (rdzenie wirtualne), z 4,86 GB pamięci na rdzeń wirtualny. Chociaż nie ma celu usługi rdzeni wirtualnych z 42 rdzeniami, cel usługi BC_Gen5_40 jest prawie równoważny pod względem wydajności procesora CPU i pamięci i jest dobrym dopasowaniem.

Migrowanie elastycznej puli podstawowej 200 eDTU

Zapytanie mapowania zwraca następujący wynik (niektóre kolumny nie są wyświetlane w celu zwięzłości):

dtu_logical_cpus dtu_memory_per_core_gb standard_series_vcores standard_series_memory_per_core_gb
4,00 5,40 4000 5,05

Widzimy, że elastyczna pula DTU ma 4 logiczne procesory CPU (rdzenie wirtualne), z 5,4 GB pamięci na rdzeń wirtualny. Sprzęt serii Standardowa wywołuje jednak 4 rdzenie wirtualne, jednak ten cel usługi obsługuje maksymalnie 200 baz danych na pulę, podczas gdy elastyczna pula podstawowa 200 eDTU obsługuje maksymalnie 500 baz danych. Jeśli migrowana elastyczna pula ma ponad 200 baz danych, pasujący cel usługi rdzeni wirtualnych musi być GP_Gen5_6, który obsługuje maksymalnie 500 baz danych.

Migrowanie baz danych replikowanych geograficznie

Migracja z modelu opartego na jednostkach DTU do modelu zakupów opartego na rdzeniach wirtualnych jest podobna do uaktualniania lub obniżania relacji replikacji geograficznej między bazami danych w warstwach usług Standardowa i Premium. Podczas migracji nie trzeba zatrzymywać replikacji geograficznej dla warstw ogólnego przeznaczenia i Krytyczne dla działania firmy usług, ale należy przestrzegać następujących reguł sekwencjonowania:

  • Podczas uaktualniania należy najpierw uaktualnić pomocniczą bazę danych, a następnie uaktualnić bazę podstawową.
  • Podczas obniżania poziomu należy odwrócić kolejność: najpierw należy obniżyć podstawową bazę danych, a następnie obniżyć dół pomocniczej bazy danych.

Aby przeprowadzić migrację do warstwy usługi Hiperskala, replikacja geograficzna powinna zostać tymczasowo usunięta. Aby uzyskać więcej informacji, zobacz Migrowanie istniejącej bazy danych do warstwy Hiperskala.

W przypadku korzystania z replikacji geograficznej między dwiema elastycznymi pulami zalecamy wyznaczenie jednej puli jako podstawowej i drugiej jako pomocniczej. W takim przypadku podczas migracji elastycznych pul należy użyć tych samych wskazówek dotyczących sekwencjonowania. Jeśli jednak masz elastyczne pule zawierające zarówno podstawowe, jak i pomocnicze bazy danych, należy traktować pulę z wyższym wykorzystaniem jako podstawową i odpowiednio postępować zgodnie z regułami sekwencjonowania.

Poniższa tabela zawiera wskazówki dotyczące określonych scenariuszy migracji:

Bieżąca warstwa usługi Docelowa warstwa usługi Typ migracji Akcje użytkownika
Standardowa Ogólnego przeznaczenia Boczny Można przeprowadzić migrację w dowolnej kolejności, ale należy zapewnić odpowiednie rozmiary rdzeni wirtualnych zgodnie z wcześniejszym opisem
Premium Krytyczne dla działania firmy Boczny Można przeprowadzić migrację w dowolnej kolejności, ale należy zapewnić odpowiednie rozmiary rdzeni wirtualnych zgodnie z wcześniejszym opisem
Standardowa Krytyczne dla działania firmy Uaktualnienie Najpierw należy przeprowadzić migrację pomocniczą
Krytyczne dla działania firmy Standardowa Zmiana na starszą lub mniej zaawansowaną wersję Najpierw należy przeprowadzić migrację podstawowego
Premium Ogólnego przeznaczenia Zmiana na starszą lub mniej zaawansowaną wersję Najpierw należy przeprowadzić migrację podstawowego
Ogólnego przeznaczenia Premium Uaktualnienie Najpierw należy przeprowadzić migrację pomocniczą
Krytyczne dla działania firmy Ogólnego przeznaczenia Zmiana na starszą lub mniej zaawansowaną wersję Najpierw należy przeprowadzić migrację podstawowego
Ogólnego przeznaczenia Krytyczne dla działania firmy Uaktualnienie Najpierw należy przeprowadzić migrację pomocniczą
Standardowa Hiperskala Boczny Replikacja geograficzna do wyłączenia przed migracją do warstwy Hiperskala
Premium Hiperskala Boczny Replikacja geograficzna do wyłączenia przed migracją do warstwy Hiperskala

Migrowanie grup trybu failover

Migracja grup trybu failover z wieloma bazami danych wymaga indywidualnej migracji podstawowych i pomocniczych baz danych. W trakcie tego procesu mają zastosowanie te same zagadnienia i reguły sekwencjonowania. Po przekonwertowaniu baz danych na model zakupów oparty na rdzeniach wirtualnych grupa trybu failover pozostanie w mocy z tymi samymi ustawieniami zasad.

Tworzenie pomocniczej bazy danych replikacji geograficznej

Dodatkową bazę danych replikacji geograficznej (pomocniczą geograficzną) można utworzyć tylko przy użyciu tej samej warstwy usługi, która była używana dla podstawowej bazy danych. W przypadku baz danych o wysokim współczynniku generowania dzienników zalecamy utworzenie pomocniczego obszaru geograficznego o takim samym rozmiarze obliczeniowym jak podstawowy.

W przypadku utworzenia pomocniczego obszaru geograficznego w elastycznej puli dla pojedynczej podstawowej bazy danych upewnij się, że maxVCore ustawienie puli jest zgodne z rozmiarem obliczeniowym podstawowej bazy danych. W przypadku utworzenia pomocniczego obszaru geograficznego dla elementu podstawowego w innej elastycznej puli zalecamy, aby pule miały te same maxVCore ustawienia.

Migrowanie z jednostek DTU do rdzeni wirtualnych przy użyciu kopiowania bazy danych

Kopia bazy danych tworzy transakcyjnie spójną migawkę danych w określonym momencie po rozpoczęciu operacji kopiowania. Nie synchronizuje danych między źródłem a obiektem docelowym po tym punkcie w czasie.

Dowolną bazę danych z rozmiarem obliczeniowym opartym na jednostkach DTU można skopiować do bazy danych o rozmiarze obliczeniowym opartym na rdzeniach wirtualnych przy użyciu programu PowerShell, interfejsu wiersza polecenia platformy Azure lub języka Transact-SQL bez ograniczeń lub specjalnego sekwencjonowania, o ile docelowy rozmiar obliczeniowy obsługuje maksymalny rozmiar bazy danych źródłowej bazy danych. Kopiowanie bazy danych do innej warstwy usługi nie jest obsługiwane w witrynie Azure Portal.