Udostępnij przez


Migrowanie baz danych na dużą skalę przy użyciu automatyzacji

Usługa Azure Database Migration Service oferuje następujące możliwości:

  • Niezawodna, odporna na uszkodzenia usługa, która organizuje działania przenoszenia danych w celu zapewnienia bezproblemowego środowiska migracji.

  • Możliwość uruchamiania trybów migracji online (dla migracji wymagających minimalnego przestoju) lub offline (dla migracji z przestojem utrzymującym się przez okres migracji), zgodnie z wymaganiami Twojej firmy.

  • Elastyczność tworzenia i konfigurowania własnego środowiska Integration Runtime w celu zapewnienia własnych zasobów obliczeniowych na potrzeby uzyskiwania dostępu do źródłowego programu SQL Server i kopii zapasowych w środowisku lokalnym.

Za pomocą narzędzi automatyzacji, takich jak program PowerShell — moduł usługi Azure DataMigration Service lub interfejs wiersza polecenia platformy Azure, można migrować co najmniej jedną bazę danych na dużą skalę, w tym bazy danych w wielu wystąpieniach programu SQL Server.

Następujące przykładowe skrypty można wykorzystać, aby dopasować do swoich scenariuszy migracji przy użyciu Azure PowerShell lub Azure CLI.

Scenariusz migracji Język skryptów
Ocena programu SQL Server PowerShell / Azure CLI
SQL Server do Azure SQL Managed Instance (przy użyciu udostępniania plików) PowerShell / Azure CLI
Program SQL Server do usługi Azure SQL Managed Instance (przy użyciu usługi Azure Storage) PowerShell / Azure CLI
SQL Server do SQL Server na maszynach wirtualnych platformy Azure (przy użyciu udostępnionego folderu) PowerShell / Azure CLI
Program SQL Server do programu SQL Server na maszynach wirtualnych platformy Azure (przy użyciu usługi Azure Storage) PowerShell / Azure CLI
Sql Server do usługi Azure SQL Database PowerShell / Azure CLI
Zalecenia dotyczące SKU PowerShell / Azure CLI
Kompleksowa automatyzacja migracji PowerShell / Azure CLI
Kompleksowa automatyzacja migracji dla wielu baz danych PowerShell / Azure CLI

Wymagania wstępne

Wymagania wstępne wspólne dla wszystkich obsługiwanych scenariuszy migracji przy użyciu programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure są następujące:

  • Masz konto platformy Azure przypisane do jednej z wbudowanych ról wymienionych w następujący sposób:

    • Osoba przyczyniająca się do działania docelowego wystąpienia zarządzanego Azure SQL, programu SQL Server na maszynach wirtualnych platformy Azure lub usługi Azure SQL Database oraz do konta usługi Storage, do przekazywania plików kopii zapasowej bazy danych z udziału sieciowego SMB (Nie dotyczy usługi Azure SQL Database).

    • Rola czytelnika dla grup zasobów platformy Azure zawierających docelowe wystąpienie zarządzane Azure SQL, program SQL Server na maszynach wirtualnych platformy Azure lub w usłudze Azure SQL Database.

    • Rola właściciela lub współautora dla subskrypcji platformy Azure.

    Konto platformy Azure jest wymagane tylko w przypadku uruchamiania kroków migracji i nie jest wymagane do wykonania kroków oceny ani zaleceń platformy Azure.

  • Utwórz docelową usługę Azure SQL Managed Instance, program SQL Server na maszynie wirtualnej platformy Azure lub usługę Azure SQL Database.

    Jeśli elementem docelowym jest usługa Azure SQL Database, musisz przeprowadzić migrację schematu bazy danych ze źródła do miejsca docelowego przy użyciu środowiska aplikacji warstwy danych lub rozszerzenia SQL Database Projects dla programu Visual Studio Code.

    Jeśli masz istniejącą maszynę wirtualną platformy Azure, powinna zostać zarejestrowana w rozszerzeniu agenta IaaS programu SQL Server w trybie pełnego zarządzania.

  • Jeśli elementem docelowym jest usługa Azure SQL Managed Instance lub program SQL Server na maszynie wirtualnej platformy Azure, upewnij się, że identyfikatory logowania używane do łączenia źródłowego programu SQL Server są członkami roli serwera sysadmin lub mają CONTROL SERVER uprawnienia.

  • Jeśli docelowym systemem jest usługa Azure SQL Database, upewnij się, że login używany do łączenia z źródłowym serwerem SQL jest członkiem, a db_datareader login dla docelowego serwera SQL to db_owner.

  • Użyj jednej z następujących opcji magazynowania dla pełnych plików kopii zapasowej bazy danych i dziennika transakcji:

    • Udział sieciowy SMB

    • Konto magazynu Azure: udostępnianie plików lub kontener obiektów blob

      • Jeśli pliki kopii zapasowej bazy danych znajdują się w udziale sieciowym SMB, utwórz konto usługi Azure Storage, które umożliwia usłudze DMS przekazywanie plików kopii zapasowych bazy danych. Pamiętaj, aby utworzyć konto usługi Azure Storage w tym samym regionie co wystąpienie usługi Azure Database Migration Service.

      • Upewnij się, że kontener obiektów blob konta usługi Azure Storage jest używany wyłącznie do przechowywania plików kopii zapasowych. Wszelkie inne typy plików (.txt, .png, .jpgitp.) zakłócają proces przywracania, co prowadzi do awarii.

      • Usługa Azure Database Migration Service nie inicjuje żadnych kopii zapasowych, a zamiast tego używa istniejących kopii zapasowych, które mogą już być częścią planu odzyskiwania po awarii na potrzeby migracji.

      • Każdą kopię zapasową można zapisać w osobnym pliku kopii zapasowej lub w wielu plikach kopii zapasowej. Jednak dołączanie wielu kopii zapasowych (czyli pełnych i t-log) do jednego nośnika kopii zapasowej nie jest obsługiwane.

      • Użyj skompresowanych kopii zapasowych, aby zmniejszyć prawdopodobieństwo wystąpienia potencjalnych problemów związanych z migracją dużych kopii zapasowych.

  • Upewnij się, że konto usługi, które działa na źródłowym wystąpieniu programu SQL Server, ma uprawnienia do odczytu i zapisu w udziale sieciowym SMB zawierającym pliki kopii zapasowej bazy danych.

  • Źródłowy certyfikat wystąpienia programu SQL Server z bazy danych chronionej przez funkcję Transparent Data Encryption (TDE) musi zostać zmigrowany do docelowego wystąpienia usługi Azure SQL Managed Instance lub programu SQL Server na maszynie wirtualnej platformy Azure zanim nastąpi migracja danych.

    Wskazówka

    Jeśli baza danych zawiera poufne dane chronione przez funkcję Always Encrypted, proces migracji automatycznie migruje klucze Always Encrypted do docelowego wystąpienia zarządzanego azure SQL lub programu SQL Server na maszynie wirtualnej platformy Azure.

  • Jeśli kopie zapasowe bazy danych znajdują się w sieciowym udziale plików, podaj maszynę do zainstalowania własnego środowiska Integration Runtime w celu uzyskania dostępu do kopii zapasowych bazy danych i migracji ich. Moduły Azure PowerShell lub Azure CLI udostępniają klucze uwierzytelniania do rejestrowania lokalnego środowiska uruchomieniowego integracji. W ramach przygotowań do migracji upewnij się, że maszyna, na której planujesz zainstalować własne środowisko Integration Runtime, ma włączone następujące reguły zapory ruchu wychodzącego i nazwy domen:

    Nazwy domen Porty wychodzące opis
    Chmura publiczna: {datafactory}.{region}.datafactory.azure.net
    lub *.frontend.clouddatahub.net
    Azure Government: {datafactory}.{region}.datafactory.azure.us
    Chiny: {datafactory}.{region}.datafactory.azure.cn
    443 Wymagane przez własne środowisko uruchomieniowe Integration Runtime do nawiązania połączenia z usługą Migracji Danych.
    W przypadku nowo utworzonej fabryki danych w chmurze publicznej znajdź nazwę FQDN z poziomu własnego klucza środowiska Integration Runtime, który ma format {datafactory}.{region}.datafactory.azure.net. Dla starej fabryki danych, jeśli nie widzisz FQDN w kluczu integracji z samodzielnym hostingiem, użyj zamiast tego *.frontend.clouddatahub.net.
    download.microsoft.com 443 Wymagane przez samoobsługowe środowisko Integration Runtime do pobierania aktualizacji. Jeśli wyłączono automatyczną aktualizację, możesz pominąć konfigurowanie tej domeny.
    *.core.windows.net 443 Używane przez lokalne środowisko uruchomieniowe integracji, które łączy się z kontem usługi Azure Storage do przesyłania kopii zapasowych bazy danych z udziału sieciowego

    Jeśli pliki kopii zapasowej bazy danych są już dostępne na koncie usługi Azure Storage, własne środowisko Integration Runtime nie jest wymagane podczas procesu migracji.

  • W przypadku korzystania z własnego środowiska Integration Runtime upewnij się, że maszyna, na której zainstalowano środowisko uruchomieniowe, może połączyć się ze źródłowym wystąpieniem programu SQL Server i udziałem plików sieciowych, na którym znajdują się pliki kopii zapasowej.

  • Port wychodzący 445 powinien być włączony, aby uzyskać dostęp do udostępniania plików w sieci.

  • Jeśli używasz usługi Azure Database Migration Service po raz pierwszy, upewnij się, że dostawca zasobów Microsoft.DataMigration jest zarejestrowany w subskrypcji. Możesz wykonać kroki, aby zarejestrować dostawcę zasobów

    Jeśli celem migracji jest usługa Azure SQL Database, nie musisz wykonywać kopii zapasowych w celu przeprowadzenia tej migracji. Migracja do usługi Azure SQL Database jest uważana za logiczną migrację obejmującą wstępne tworzenie bazy danych i przenoszenie danych (wykonywane przez usługę DMS).

Automatyzowanie migracji bazy danych

Za pomocą modułu Azure PowerShell Az.DataMigration lub interfejsu wiersza polecenia az datamigration można migrować bazy danych, automatyzując proces tworzenia usługi Azure Database Migration Service, konfigurowanie migracji baz danych na potrzeby migracji online oraz przeprowadzanie migracji typu cutover. Istnieje kilka innych poleceń i funkcji, które są udokumentowane w przykładach platformy Azure.

Przykłady automatyzacji migracji bazy danych programu SQL Server przy użyciu interfejsu wiersza polecenia platformy Azure:

Krok 1. Tworzenie usługi Azure Database Migration Service, która będzie organizować działania migracji bazy danych.

#STEP 1: Create Database Migration Service
az datamigration sql-service create --resource-group "myRG" --sql-migration-service-name "myMigrationService" --location "EastUS2"

Krok 2. Konfigurowanie i uruchamianie migracji bazy danych online z lokalnego programu SQL Server (z kopiami zapasowymi w usłudze Azure Storage) do usługi Azure SQL Managed Instance.

#STEP 2: Start Migration
az datamigration sql-managed-instance create `
--source-location '{\"AzureBlob\":{\"storageAccountResourceId\":\"/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/dbbackupssqlbits\",\"accountKey\":\"myAccountKey\",\"blobContainerName\":\"dbbackups\"}}' `
--migration-service "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.DataMigration/SqlMigrationServices/myMigrationService" `
--scope "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Sql/managedInstances/mySQLMI" `
--source-database-name "AdventureWorks2008" `
--source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="<password>" user-name="sqluser" `
--target-db-name "AdventureWorks2008" `
--resource-group myRG `
--managed-instance-name mySQLMI

Krok 3. Wykonanie migracji jednorazowej po przywróceniu wszystkich kopii zapasowych do usługi Azure SQL Managed Instance.

#STEP 3: Get migration ID and perform Cutover
$migOpId = az datamigration sql-managed-instance show --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --expand=MigrationStatusDetails --query "properties.migrationOperationId"
az datamigration sql-managed-instance cutover --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --migration-operation-id $migOpId

Jeśli wystąpi błąd The subscription is not registered to use namespace 'Microsoft.DataMigration'. See https://aka.ms/rps-not-found for how to register subscriptions., uruchom następujące polecenie:

Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"