Samouczek: migrowanie bazy danych PostgreSQL do usługi Azure Database for PostgreSQL w trybie online przy użyciu usługi DMS (klasycznej) za pośrednictwem interfejsu wiersza polecenia platformy Azure

Za pomocą usługi Azure Database Migration Service można migrować bazy danych z lokalnego wystąpienia bazy danych PostgreSQL do usługi Azure Database for PostgreSQL z minimalnym przestojem. Innymi słowy, migrację można osiągnąć z minimalnym przestojem w aplikacji. W tym samouczku przeprowadzisz migrację przykładowej bazy danych dvd rental z lokalnego wystąpienia bazy danych PostgreSQL 9.6 do usługi Azure Database for PostgreSQL przy użyciu działania migracji online w usłudze Azure Database Migration Service.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Migrowanie przykładowego schematu przy użyciu narzędzia pg_dump.
  • Tworzenie wystąpienia usługi Azure Database Migration Service.
  • Tworzenie projektu migracji za pomocą usługi Azure Database Migration Service.
  • Uruchamianie migracji.
  • Monitoruj migrację.

Uwaga

Przeprowadzenie migracji online przy użyciu usługi Azure Database Migration Service wymaga utworzenia wystąpienia na podstawie warstwy cenowej Premium. Szyfrujemy dysk, aby zapobiec kradzieży danych podczas procesu migracji.

Ważne

Aby uzyskać optymalne środowisko migracji, firma Microsoft zaleca utworzenie wystąpienia usługi Azure Database Migration Service w tym samym regionie świadczenia usługi Azure co docelowa baza danych. Przenoszenie danych między regionami lub lokalizacjami geograficznymi może spowalniać proces migracji i powodować błędy.

Wymagania wstępne

Do ukończenia tego samouczka niezbędne są następujące elementy:

  • Pobierz i zainstaluj program PostgreSQL Community Edition 9.4, 9.5, 9.6 lub 10. Źródłowa wersja serwera PostgreSQL musi być 9.4, 9.5, 9.6, 10, 11, 12 lub 13. Aby uzyskać więcej informacji, zobacz Obsługiwane wersje bazy danych PostgreSQL.

    Należy również pamiętać, że docelowa wersja usługi Azure Database for PostgreSQL musi być równa lub nowsza niż lokalna wersja bazy danych PostgreSQL. Na przykład program PostgreSQL 9.6 może migrować tylko do usługi Azure Database for PostgreSQL 9.6, 10 lub 11, ale nie do usługi Azure Database for PostgreSQL 9.5.

  • Utwórz wystąpienie w usłudze Azure Database for PostgreSQL lub utwórz serwer usługi Azure Database for PostgreSQL — Hiperskala (Citus).

  • Utworzenie usługi Microsoft Azure Virtual Network dla usługi Azure Database Migration Service przy użyciu modelu wdrożenia usługi Azure Resource Manager, która zapewnia łączność między lokacjami dla lokalnych serwerów źródłowych, z użyciem usługi ExpressRoute lub sieci VPN. Aby uzyskać więcej informacji na temat tworzenia sieci wirtualnej, zobacz dokumentację sieci wirtualnej, a zwłaszcza artykuły Szybki start ze szczegółowymi informacjami krok po kroku.

    Uwaga

    Podczas konfigurowania sieci wirtualnej, jeśli używasz usługi ExpressRoute z komunikacją równorzędną sieci do firmy Microsoft, dodaj następujące punkty końcowe usługi do podsieci , w której będzie aprowizowana usługa:

    • Punkt końcowy docelowej bazy danych (np. punkt końcowy usługi SQL, punkt końcowy usługi Azure Cosmos DB)
    • Punkt końcowy magazynu
    • Punkt końcowy magistrali usług

    Taka konfiguracja jest konieczna, ponieważ usługa Azure Database Migration Service nie ma łączności z Internetem.

  • Upewnij się, że reguły sieciowej grupy zabezpieczeń sieci wirtualnej nie blokują portu wychodzącego 443 elementu ServiceTag dla usług ServiceBus, Storage i AzureMonitor. Aby uzyskać więcej informacji na temat filtrowania ruchu sieciowej grupy zabezpieczeń sieci wirtualnej, zapoznaj się z artykułem Filtrowanie ruchu sieciowego przy użyciu sieciowych grup zabezpieczeń.

  • Zapora sytemu Windows skonfigurowana pod kątem dostępu do aparatu bazy danych.

  • Otwórz zaporę systemu Windows, aby zezwolić usłudze Azure Database Migration Service na dostęp do źródłowego serwera PostgreSQL Server, czyli domyślnie ustawionego portu TCP 5432.

  • W przypadku korzystania z urządzenia zapory przed źródłową bazą danych konieczne może być dodanie reguł zapory, aby zezwolić usłudze Azure Database Migration Service na dostęp do źródłowej bazy danych podczas migracji.

  • Utwórz regułę zapory na poziomie serwera dla usługi Azure Database for PostgreSQL, aby umożliwić usłudze Azure Database Migration Service dostęp do docelowych baz danych. Podaj zakres podsieci sieci wirtualnej używanej dla usługi Azure Database Migration Service.

  • Istnieją dwie metody wywoływania interfejsu wiersza polecenia:

    • W prawym górnym rogu witryny Azure Portal wybierz przycisk Cloud Shell:

      Przycisk Cloud Shell w witrynie Azure Portal

    • Lokalnie zainstaluj i uruchom interfejs wiersza polecenia. Do zarządzania zasobami platformy Azure potrzebnymi do migracji jest wymagana wersja interfejsu wiersza polecenia w wersji 2.18 lub nowszej.

      Aby pobrać interfejs wiersza polecenia, postępuj zgodnie z instrukcjami w artykule Instalowanie interfejsu wiersza polecenia platformy Azure. W tym artykule wymieniono również platformy, które obsługują interfejs wiersza polecenia platformy Azure.

      Aby skonfigurować podsystem Windows dla systemu Linux (WSL), postępuj zgodnie z instrukcjami w Przewodniku instalacji systemu Windows 10

  • Włącz replikację logiczną na serwerze źródłowym, edytując plik postgresql.config i ustawiając następujące parametry:

    • wal_level = logical
    • max_replication_slots = [liczba miejsc], zalecamy ustawienie pięciu miejsc
    • max_wal_senders = [liczba współbieżnych zadań] — parametr max_wal_senders ustawia liczbę współbieżnych zadań, które można uruchomić, przy czym zalecane ustawienie to 10 zadań

Migrowanie przykładowego schematu

Aby utworzyć wszystkie obiekty bazy danych, takie jak schematy tabel, indeksy oraz procedury składowane, należy wyodrębnić schemat ze źródłowej bazy danych i zastosować go w bazie danych.

  1. Użyj polecenia -s pg_dump, aby utworzyć plik zrzutu schematu dla bazy danych.

    pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
    

    Na przykład aby wykonać zrzut pliku schematu bazy danych dvdrental:

    pg_dump -O -h localhost -U postgres -d dvdrental -s  > dvdrentalSchema.sql
    

    Aby uzyskać więcej informacji na temat korzystania z narzędzia pg_dump, zobacz przykłady w samouczku narzędzia pg-dump.

  2. Utwórz pustą bazę danych w swoim środowisku docelowym, czyli w usłudze Azure Database for PostgreSQL.

    Aby uzyskać szczegółowe informacje na temat nawiązywania połączenia i tworzenia bazy danych, zobacz artykuł Tworzenie serwera usługi Azure Database for PostgreSQL w witrynie Azure Portal lub Tworzenie serwera usługi Azure Database for PostgreSQL — Hiperskala (Citus) w witrynie Azure Portal.

  3. Zaimportuj schemat do docelowej bazy danych utworzonej przez przywrócenie pliku zrzutu schematu.

    psql -h hostname -U db_username -d db_name < your_schema.sql 
    

    Na przykład:

    psql -h mypgserver-20170401.postgres.database.azure.com  -U postgres -d dvdrental < dvdrentalSchema.sql
    

Uwaga

Usługa migracji wewnętrznie obsługuje włączanie/wyłączanie kluczy obcych i wyzwalaczy w celu zapewnienia niezawodnej i niezawodnej migracji danych. W związku z tym nie musisz martwić się o wprowadzanie żadnych modyfikacji docelowego schematu bazy danych.

Aprowizowanie wystąpienia usługi DMS przy użyciu interfejsu wiersza polecenia platformy Azure

  1. Zainstaluj rozszerzenie synchronizacji usługi dms:

    • Uruchom następujące polecenia, aby zalogować się na platformie Azure:

      az login
      
    • Po wyświetleniu monitu otwórz przeglądarkę internetową i wprowadź kod w celu uwierzytelnienia swojego urządzenia. Wykonaj wyświetlone instrukcje.

    • Migracja online bazy danych PostgreSQL jest teraz dostępna w ramach zwykłego pakietu interfejsu wiersza polecenia (wersja 2.18.0 lub nowsza) bez konieczności używania dms-preview rozszerzenia. Jeśli rozszerzenie zostało zainstalowane w przeszłości, możesz go usunąć, wykonując następujące kroki:

      • Aby sprawdzić, czy masz dms-preview już zainstalowane rozszerzenie, uruchom następujące polecenie:

        az extension list -o table
        
      • Jeśli dms-preview rozszerzenie jest zainstalowane, uruchom następujące polecenie, aby go odinstalować:

        az extension remove --name dms-preview
        
      • Aby sprawdzić, czy rozszerzenie zostało odinstalowane dms-preview poprawnie, uruchom następujące polecenie i nie powinno być widoczne dms-preview rozszerzenie na liście:

        az extension list -o table
        

      Ważne

      dms-preview Rozszerzenie może być nadal potrzebne w przypadku innych ścieżek migracji obsługiwanych przez usługę Azure DMS. Zapoznaj się z dokumentacją określonej ścieżki migracji, aby określić, czy rozszerzenie jest potrzebne. Ta dokumentacja obejmuje wymaganie rozszerzenia specyficzne dla bazy danych PostgreSQL do usługi Azure Database for PostgreSQL w trybie online.

    • W dowolnym momencie wyświetl wszystkie polecenia obsługiwane w usłudze DMS, uruchamiając polecenie:

      az dms -h
      
    • Jeśli masz wiele subskrypcji platformy Azure, uruchom poniższe polecenie, aby ustawić subskrypcję, której chcesz użyć do aprowizacji wystąpienia usługi DMS.

      az account set -s 97181df2-909d-420b-ab93-1bff15acb6b7
      
  2. Rozpocznij aprowizację wystąpienia usługi DMS, uruchamiając następujące polecenie:

    az dms create -l <location> -n <newServiceName> -g <yourResourceGroupName> --sku-name Premium_4vCores --subnet/subscriptions/{vnet subscription id}/resourceGroups/{vnet resource group}/providers/Microsoft.Network/virtualNetworks/{vnet name}/subnets/{subnet name} –tags tagName1=tagValue1 tagWithNoValue
    

    Na przykład poniższe polecenie utworzy usługę w:

    • Lokalizacja: Wschodnie stany USA 2
    • Subskrypcja: 97181df2-909d-420b-ab93-1bff15acb6b7
    • Nazwa grupy zasobów: PostgresDemo
    • Nazwa usługi DMS: PostgresCLI
    az dms create -l eastus2 -g PostgresDemo -n PostgresCLI --subnet /subscriptions/97181df2-909d-420b-ab93-1bff15acb6b7/resourceGroups/ERNetwork/providers/Microsoft.Network/virtualNetworks/AzureDMS-CORP-USC-VNET-5044/subnets/Subnet-1 --sku-name Premium_4vCores
    

    Utworzenie wystąpienia usługi DMS trwa około 10–12 minut.

  3. W celu zidentyfikowania adresu IP agenta usługi DMS, aby można go było dodać do pliku pg_hba.conf Postgres, uruchom następujące polecenie:

    az network nic list -g <ResourceGroupName>--query '[].ipConfigurations | [].privateIpAddress'
    

    Na przykład:

    az network nic list -g PostgresDemo --query '[].ipConfigurations | [].privateIpAddress'
    

    Powinien zostać uzyskany wynik podobny do następującego adresu:

    [
      "172.16.136.18"
    ]
    
  4. Dodaj adres IP agenta usługi DMS do pliku Postgres pg_hba.conf.

    • Zwróć uwagę na adres IP usługi DMS po zakończeniu aprowizowania usługi DMS.

    • Dodaj adres IP do pliku pg_hba.conf dla źródła podobny do następującego wpisu:

      host     all            all        172.16.136.18/10    md5
      host     replication    postgres   172.16.136.18/10    md5
      
  5. Następnie utwórz projekt migracji PostgreSQL, uruchamiając następujące polecenie:

    az dms project create -l <location> -g <ResourceGroupName> --service-name <yourServiceName> --source-platform PostgreSQL --target-platform AzureDbforPostgreSQL -n <newProjectName>
    

    Na przykład następujące polecenie tworzy projekt przy użyciu tych parametrów:

    • Lokalizacja: Zachodnio-środkowe stany USA
    • Nazwa grupy zasobów: PostgresDemo
    • Nazwa usługi DMS: PostgresCLI
    • Nazwa projektu: PGMigration
    • Platforma źródłowa: PostgreSQL
    • Platforma docelowa: AzureDbForPostgreSql
    az dms project create -l westcentralus -n PGMigration -g PostgresDemo --service-name PostgresCLI --source-platform PostgreSQL --target-platform AzureDbForPostgreSql
    
  6. Utwórz zadanie migracji PostgreSQL, wykonując następujące kroki.

    Ten krok obejmuje wykorzystanie źródłowego adresu IP, identyfikatora użytkownika i hasła, docelowego adresu IP, identyfikatora użytkownika, hasła i typu zadania do ustanowienia połączenia.

    • Aby wyświetlić pełną listę opcji, uruchom polecenie:

      az dms project task create -h
      

      Zarówno dla połączenia elementu źródłowego, jak i docelowego parametr wejściowy odwołuje się do pliku json, który ma listę obiektów.

      Format obiektu JSON połączenia dla połączeń PostgreSQL.

      {
          // if this is missing or null, you will be prompted
          "userName": "user name",
          // if this is missing or null (highly recommended) you will  be prompted  
          "password": null,
          "serverName": "server name",
          // if this is missing, it will default to the 'postgres' database
          "databaseName": "database name",
          // if this is missing, it will default to 5432 
          "port": 5432                
      }
      

      Istnieje również plik json opcji bazy danych, który zawiera listę obiektów json. W przypadku PostgreSQL format obiektu JSON opcji bazy danych został pokazany poniżej:

      [
          {
              "name": "source database",
              "target_database_name": "target database",
              "selectedTables": [
                  "schemaName1.tableName1",
                  ...n
              ]
          },
          ...n
      ]
      
    • Aby utworzyć kod json połączenia źródłowego, otwórz Notatnik i skopiuj następujący kod json i wklej go do pliku. Zapisz plik w folderze C:\DMS\source.json po zmodyfikowaniu go zgodnie z serwerem źródłowym.

      {
          "userName": "postgres",    
          "password": null,
          "serverName": "13.51.14.222",
          "databaseName": "dvdrental", 
          "port": 5432                
      }
      
    • Aby utworzyć kod json połączenia docelowego, otwórz Notatnik i skopiuj następujący kod json i wklej go do pliku. Zapisz plik w folderze C:\DMS\target.json po zmodyfikowaniu go zgodnie z serwerem docelowym.

      {
          "userName": " dms@builddemotarget",    
          "password": null,           
          "serverName": " builddemotarget.postgres.database.azure.com",
          "databaseName": "inventory", 
          "port": 5432                
      }
      
    • Utwórz plik json opcji bazy danych zawierający listę spisu i mapowania baz danych do migracji:

      • Utwórz listę tabel do zmigrowania lub możesz użyć zapytania SQL do wygenerowania listy ze źródłowej bazy danych. Przykładowe zapytanie do wygenerowania listy tabel jest podane poniżej, podobnie jak na przykład. Jeśli używasz tego zapytania, pamiętaj, aby usunąć ostatni przecinek na końcu nazwy tabeli, aby uczynić ją prawidłową tablicą JSON.

        SELECT
            FORMAT('%s,', REPLACE(FORMAT('%I.%I', schemaname, tablename), '"', '\"')) AS SelectedTables
        FROM 
            pg_tables
        WHERE 
            schemaname NOT IN ('pg_catalog', 'information_schema');
        
      • Utwórz plik json opcji bazy danych z jednym wpisem dla każdej bazy danych z nazwami źródłowej i docelowej bazy danych oraz listą wybranych tabel do zmigrowania. Możesz użyć danych wyjściowych powyższego zapytania SQL, aby wypełnić tablicę "selectedTables". Należy pamiętać, że jeśli lista wybranych tabel jest pusta, usługa będzie zawierać wszystkie tabele migracji, które mają pasujące nazwy schematów i tabel.

        [
            {
                "name": "dvdrental",
                "target_database_name": "dvdrental",
                "selectedTables": [
                    "schemaName1.tableName1",
                    "schemaName1.tableName2",                    
                    ...
                    "schemaNameN.tableNameM"
                ]
            },
            ... n
        ]
        
    • Uruchom następujące polecenie, które przyjmuje połączenie źródłowe, połączenie docelowe i pliki json opcji bazy danych.

      az dms project task create -g PostgresDemo --project-name PGMigration --source-connection-json c:\DMS\source.json --database-options-json C:\DMS\option.json --service-name PostgresCLI --target-connection-json c:\DMS\target.json --task-type OnlineMigration -n runnowtask    
      

    W tym momencie zadanie migracji zostało pomyślnie przesłane.

  7. Aby wyświetlić postęp zadania, uruchom następujące polecenie:

    • Aby wyświetlić ogólny stan zadania w skrócie

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
      
    • Aby wyświetlić szczegółowy stan zadania, w tym informacje o postępie migracji

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask --expand output
      
    • Możesz również użyć formatu zapytania JMESPath , aby wyodrębnić tylko element migrationState z danych wyjściowych rozwijania:

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask --expand output --query 'properties.output[].migrationState'
      

      W danych wyjściowych istnieje kilka parametrów, które wskazują postęp różnych kroków migracji. Na przykład zapoznaj się z poniższymi danymi wyjściowymi:

      {
          "output": [
              // Database Level
              {
                  "appliedChanges": 0, // Total incremental sync applied after full load
                  "cdcDeleteCounter": 0, // Total delete operation  applied after full load
                  "cdcInsertCounter": 0, // Total insert operation applied after full load
                  "cdcUpdateCounter": 0, // Total update operation applied after full load
                  "databaseName": "inventory",
                  "endedOn": null,
                  "fullLoadCompletedTables": 2, //Number of tables completed full load
                  "fullLoadErroredTables": 0, //Number of tables that contain migration error
                  "fullLoadLoadingTables": 0, //Number of tables that are in loading status
                  "fullLoadQueuedTables": 0, //Number of tables that are in queued status
                  "id": "db|inventory",
                  "incomingChanges": 0, //Number of changes after full load
                  "initializationCompleted": true,
                  "latency": 0,
                  //Status of migration task
                  "migrationState": "READY_TO_COMPLETE", //READY_TO_COMPLETE => the database is ready for cutover
                  "resultType": "DatabaseLevelOutput",
                  "startedOn": "2018-07-05T23:36:02.27839+00:00"
              }, {
                  "databaseCount": 1,
                  "endedOn": null,
                  "id": "dd27aa3a-ed71-4bff-ab34-77db4261101c",
                  "resultType": "MigrationLevelOutput",
                  "sourceServer": "138.91.123.10",
                  "sourceVersion": "PostgreSQL",
                  "startedOn": "2018-07-05T23:36:02.27839+00:00",
                  "state": "PENDING",
                  "targetServer": "builddemotarget.postgres.database.azure.com",
                  "targetVersion": "Azure Database for PostgreSQL"
              },
              // Table 1
              {
                  "cdcDeleteCounter": 0,
                  "cdcInsertCounter": 0,
                  "cdcUpdateCounter": 0,
                  "dataErrorsCount": 0,
                  "databaseName": "inventory",
                  "fullLoadEndedOn": "2018-07-05T23:36:20.740701+00:00", //Full load completed time
                  "fullLoadEstFinishTime": "1970-01-01T00:00:00+00:00",
                  "fullLoadStartedOn": "2018-07-05T23:36:15.864552+00:00", //Full load started time
                  "fullLoadTotalRows": 10, //Number of rows loaded in full load
                  "fullLoadTotalVolumeBytes": 7056, //Volume in Bytes in full load
                  "id": "or|inventory|public|actor",
                  "lastModifiedTime": "2018-07-05T23:36:16.880174+00:00",
                  "resultType": "TableLevelOutput",
                  "state": "COMPLETED", //State of migration for this table
                  "tableName": "public.catalog", //Table name
                  "totalChangesApplied": 0 //Total sync changes that applied after full load
              },
              //Table 2
              {
                  "cdcDeleteCounter": 0,
                  "cdcInsertCounter": 50,
                  "cdcUpdateCounter": 0,
                  "dataErrorsCount": 0,
                  "databaseName": "inventory",
                  "fullLoadEndedOn": "2018-07-05T23:36:23.963138+00:00",
                  "fullLoadEstFinishTime": "1970-01-01T00:00:00+00:00",
                  "fullLoadStartedOn": "2018-07-05T23:36:19.302013+00:00",
                  "fullLoadTotalRows": 112,
                  "fullLoadTotalVolumeBytes": 46592,
                  "id": "or|inventory|public|address",
                  "lastModifiedTime": "2018-07-05T23:36:20.308646+00:00",
                  "resultType": "TableLevelOutput",
                  "state": "COMPLETED",
                  "tableName": "public.orders",
                  "totalChangesApplied": 0
              }
          ],
          // DMS migration task state
          "state": "Running", //Running => service is still listening to any changes that might come in
          "taskType": null
      }
      

Zadanie migracji uruchomienia produkcyjnego

Baza danych jest gotowa do uruchomienia produkcyjnego, gdy pełne ładowanie zostało zakończone. W zależności od zajętości serwera źródłowego nowymi przychodzącymi transakcjami zadanie usługi DMS może nadal stosować zmiany po zakończeniu pełnego ładowania.

Aby upewnić się, że wszystkie dane zostały przechwycone, przeprowadź weryfikację liczby wierszy między źródłową i docelową bazą danych. Na przykład możesz zweryfikować następujące szczegóły z danych wyjściowych stanu:

Database Level
"migrationState": "READY_TO_COMPLETE" => Status of migration task. READY_TO_COMPLETE means database is ready for cutover
"incomingChanges": 0 => Check for a period of 5-10 minutes to ensure no new incoming changes need to be applied to the target server

Table Level (for each table)
"fullLoadTotalRows": 10    => The row count matches the initial row count of the table
"cdcDeleteCounter": 0      => Number of deletes after the full load
"cdcInsertCounter": 50     => Number of inserts after the full load
"cdcUpdateCounter": 0      => Number of updates after the full load
  1. Wykonaj zadanie migracji bazy danych uruchomienia produkcyjnego, używając następującego polecenia:

    az dms project task cutover -h
    

    Na przykład następujące polecenie zainicjuje przecięcie dla bazy danych "Inventory":

    az dms project task cutover --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask  --object-name Inventory
    
  2. Aby monitorować postęp uruchomienia produkcyjnego, uruchom następujące polecenie:

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  3. Gdy stan migracji bazy danych to Ukończono, utwórz ponownie sekwencje (jeśli dotyczy) i połącz aplikacje z nowym docelowym wystąpieniem usługi Azure Database for PostgreSQL.

Usługa, projekt, oczyszczanie zadania

Jeśli potrzebujesz anulować lub usunąć jakiekolwiek zadanie usługi DMS, projekt lub usługę, przeprowadź anulowanie w następującej kolejności:

  • Anuluj wszelkie uruchomione zadania
  • Usuń zadanie
  • Usuń projekt
  • Usuń usługę DMS
  1. Aby anulować bieżące zadanie, użyj następującego polecenia:

    az dms project task cancel --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  2. Aby usunąć bieżące zadanie, użyj następującego polecenia:

    az dms project task delete --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  3. Aby usunąć projekt, użyj następującego polecenia:

    az dms project delete -n PGMigration -g PostgresDemo --service-name PostgresCLI
    
  4. Aby usunąć usługę DMS, użyj następującego polecenia:

    az dms delete -g ProgresDemo -n PostgresCLI
    

Następne kroki