Öğretici: Azure CLI aracılığıyla DMS'PostgreSQL için Azure DB PostgreSQL'i çevrimiçine geçirme

Veritabanlarını şirket Azure Veritabanı Geçiş Hizmeti PostgreSQL örneğinden minimum kapalı kalma süresiyle PostgreSQL için Azure Veritabanı için PostgreSQL için Azure Veritabanı kullanabilirsiniz. Başka bir deyişle, uygulamaya en az kapalı kalma süresiyle geçiş elde edilebilir. Bu öğreticide, şirket içi PostgreSQL 9.6 örneğinden DVD Rental örnek veritabanını PostgreSQL için Azure Veritabanı'deki çevrimiçi geçiş etkinliğini kullanarak Azure Veritabanı Geçiş Hizmeti.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Pg_dump yardımcı programını kullanarak örnek şemayı geçirme.
  • Azure Veritabanı Geçiş Hizmeti örneği oluşturma.
  • Azure Veritabanı Geçiş Hizmeti'ni kullanarak geçiş projesi oluşturma.
  • Geçişi çalıştırma.
  • Geçişi izleme.

Not

Çevrimiçi Azure Veritabanı Geçiş Hizmeti gerçekleştirmek için premium fiyatlandırma katmanını temel alan bir örnek oluşturmak gerekir. Geçiş işlemi sırasında veri hırsızlığını önlemek için diski şifreleriz.

Önemli

En iyi geçiş deneyimi için Microsoft, hedef veritabanıyla Azure Veritabanı Geçiş Hizmeti Azure bölgesinde bir sanal ağ örneği oluşturulmasını önerer. Verileri bölgeler veya coğrafyalar arasında taşımak, geçiş sürecini yavaşlatabilir ve hatalara neden olabilir.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakileri yapmanız gerekir:

  • PostgreSQL community edition 9.5, 9.6 veya 10'ı indirip yükleyin. Kaynak PostgreSQL Server sürümü 9.5.11, 9.6.7, 10 veya sonraki bir sürüme sahip olması gerekir. Daha fazla bilgi için Desteklenen PostgreSQL Veritabanı Sürümleri makalesine bakın.

    Ayrıca hedef PostgreSQL için Azure Veritabanı sürümünün şirket içi PostgreSQL sürümüne eşit veya daha sonraki bir sürümü olması gerektiğini unutmayın. Örneğin, PostgreSQL 9.6 yalnızca PostgreSQL için Azure Veritabanı 9.6, 10 veya 11'e geçirilir, ancak 9.5'PostgreSQL için Azure Veritabanı geçirilmez.

  • PostgreSQL için Azure Veritabanı - PostgreSQL için Azure Veritabanı sunucusunda bir Hiper Ölçek (Citus) oluşturun.

  • ExpressRoute Microsoft Azure Sanal Ağ Azure Veritabanı Geçiş Hizmeti Azure Veritabanı Geçiş Hizmeti şirket içi kaynak sunucularınıza siteden siteye bağlantı sağlayan Azure Resource Manager dağıtım modelini kullanarak bir ağ oluşturma. Sanal ağ oluşturma hakkında daha fazla bilgi için Sanal Ağ Belgeleri'ne ve özellikle adım adım ayrıntıların yer alan hızlı başlangıç makalesine bakın.

    Not

    Sanal ağ kurulumu sırasında ExpressRoute'u Microsoft'a ağ eşleme ile kullanırsanız, hizmetin sağlandırılı alt ağa aşağıdaki hizmet uç noktalarını ekleyin:

    • Hedef veritabanı uç noktası (örneğin SQL uç noktası, Cosmos DB uç noktası gibi)
    • Depolama uç noktası
    • Service Bus uç noktası

    Bu yapılandırma gereklidir çünkü Azure Veritabanı Geçiş Hizmeti bağlantısı yoktur.

  • Sanal ağ Ağ Güvenlik Grubu (NSG) kurallarınız ServiceBus, Depolama ve AzureMonitor için ServiceTag 443 giden bağlantı noktasını engellemez. Sanal ağ NSG trafiği filtreleme hakkında daha fazla ayrıntı için Ağ güvenlik gruplarıyla ağ trafiğini filtreleme makalesine bakın.

  • Windows Güvenlik Duvarınızı veritabanı altyapısı erişimi için yapılandırın.

  • Varsayılan olarak 5432 tcp Azure Veritabanı Geçiş Hizmeti PostgreSQL Sunucusuna erişmesine izin vermek için Windows güvenlik duvarınızı açın.

  • Kaynak veritabanlarınızın önünde bir güvenlik duvarı cihazı kullanıyorsanız, Azure Veritabanı Geçiş Hizmeti'nin geçiş amacıyla kaynak veritabanlarına erişmesi için güvenlik duvarı kuralları eklemeniz gerekebilir.

  • Kullanıcıların hedef veritabanlarına erişmesine izin vermek PostgreSQL için Azure Veritabanı sunucu Azure Veritabanı Geçiş Hizmeti güvenlik duvarı kuralı oluşturun. Sanal ağ için kullanılan sanal ağın alt ağ aralığını Azure Veritabanı Geçiş Hizmeti.

  • CLI’yi çağırmak için iki yöntem vardır:

    • Dosyanın sağ üst köşesindeki Azure portal düğmesini Cloud Shell seçin:

      Azure portaldaki Cloud Shell düğmesi

    • CLI’yi yerel olarak yükleyip çalıştırın. Bu geçiş için gereken Azure kaynaklarını yönetmek için komut satırı aracının CLI 2.18 veya üzeri sürümü gereklidir.

      CLI'sini indirmek için Azure CLI'sini yükleme makalesinde verilen yönergeleri izleyin. Makalede Ayrıca Azure CLI'sini destekleyen platformlar da listelanmıştır.

      Linux için Windows Alt Sistemi’ni (WSL) ayarlamak istiyorsanız Windows 10 Yükleme Kılavuzu içindeki yönergeleri izleyin

  • Mantıksal çoğaltma dosyasını düzenleyerek ve aşağıdaki parametreleri postgresql.config kaynak sunucuda mantıksal çoğaltmayı etkinleştirin:

    • wal_level = logical
    • max_replication_slots = [yuva sayısı], beş yuvaya ayarlamayı önerin
    • max_wal_senders =[eşzamanlı görev sayısı] - max_wal_senders parametresi, çalışabilecek eşzamanlı görevlerin sayısını ayarlar; önerilen ayar 10 görevdir

Örnek şemayı geçirme

Tablo şemaları, dizinler ve saklı yordamlar gibi tüm veritabanı nesnelerini tamamlamak için kaynak veritabanındaki şemayı ayıklamamız ve veritabanına uygulamamız gerekir.

  1. Bir veritabanına yönelik şema döküm dosyası oluşturmak için pg_dump -s komutunu kullanın.

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

    Örneğin, dvdrental veritabanındaki bir şema dosyasının dökümünü çıkarmak için:

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

    pg_dump yardımcı programını kullanma hakkında daha fazla bilgi için pg-dump öğreticisindeki örneklere bakın.

  2. Hedef ortamınız olan PostgreSQL için Azure Veritabanı içinde boş bir veritabanı oluşturun.

    Veritabanına bağlanma ve veritabanı oluşturma hakkında ayrıntılı bilgi için Azure portal'de bir PostgreSQL için Azure Veritabanı sunucusu oluşturma veya PostgreSQL için Azure Veritabanı - Hiper Ölçek (Citus) sunucusuoluşturma Azure portal.

  3. Şema döküm dosyasını geri yükleyerek, şemayı oluşturduğunuz hedef veritabanına aktarın.

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

    Örneğin:

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

Not

Geçiş hizmeti, güvenilir ve sağlam bir veri geçişi sağlamak için yabancı anahtarların ve tetikleyicilerin etkinleştirme/devre dışı bırakma işlemini dahili olarak ele almaktadır. Sonuç olarak, hedef veritabanı şemasında herhangi bir değişiklik yapma konusunda endişelenmeniz gerekli değildir.

Azure CLI kullanarak DMS örneği sağlama

  1. Dms eşitleme uzantısını yükleyin:

    • Aşağıdaki komutu çalıştırarak Azure'da oturum açın:

      az login
      
    • Sorulduğunda bir web tarayıcısı açın ve cihazınızın kimliğini doğrulamak için bir kod girin. Listelenen yönergeleri uygulayın.

    • PostgreSQL çevrimiçi geçişi artık uzantıya gerek kalmadan normal CLI paketi (sürüm 2.18.0 ve üzeri) içinde dms-preview kullanılabilir. Uzantıyı daha önce yüklemiş olduysanız, aşağıdaki adımları kullanarak uzantıyı kaldırabilirsiniz:

      • Uzantının zaten yüklü dms-preview olup olduğunu kontrol etmek için aşağıdaki komutu çalıştırın:

        az extension list -o table
        
      • Uzantı dms-preview yüklüyse kaldırmak için aşağıdaki komutu çalıştırın:

        az extension remove --name dms-preview
        
      • Uzantıyı doğru şekilde kaldırdığınız doğrulamak için aşağıdaki komutu çalıştırın dms-preview ve uzantıyı dms-preview listede görmeyebilirsiniz:

        az extension list -o table
        

      Önemli

      dms-preview uzantı, Azure DMS tarafından desteklenen diğer geçiş yolları için yine de gerekli olabilir. Uzantının gerekli olup olmadığını belirlemek için lütfen belirli geçiş yolunun belgelerini inceleyin. Bu belge, postgreSQL'e özgü uzantı gereksinimini PostgreSQL için Azure Veritabanı kapsar.

    • Dilediğiniz zaman aşağıdaki komutu çalıştırarak desteklenen tüm komutları görüntüleyin:

      az dms -h
      
    • Birden çok Azure aboneliğiniz varsa, DMS hizmetinin bir örneğini sağlamak için kullanmak istediğiniz aboneliği ayarlamak üzere aşağıdaki komutu çalıştırın.

      az account set -s 97181df2-909d-420b-ab93-1bff15acb6b7
      
  2. Aşağıdaki komutu çalıştırarak bir DMS örneğini sağlayın:

    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
    

    Örneğin, aşağıdaki komut şurada bir hizmet oluşturur:

    • Konum: Doğu ABD2
    • Abonelik: 97181df2-909d-420b-ab93-1bff15acb6b7
    • Kaynak Grubu Adı: PostgresDemo
    • DMS Hizmet Adı: 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
    

    DMS hizmeti örneğini oluşturmak yaklaşık 10-12 dakika sürer.

  3. Postgres pg_hba.conf dosyasına eklemek üzere DMS aracısının IP adresini tanımlamak için aşağıdaki komutu çalıştırın:

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

    Örneğin:

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

    Aşağıdaki adrese benzer bir sonuç almalısınız:

    [
      "172.16.136.18"
    ]
    
  4. DMS aracısının IP adresini Postgres pg_hba.conf dosyasına ekleyin.

    • DMS içinde sağlamayı bitirdikten sonra DMS IP adresini not alın.

    • IP adresini aşağıdaki girişe benzer şekilde kaynaktaki pg_hba.conf dosyasına ekleyin:

      host     all            all        172.16.136.18/10    md5
      host     replication    postgres   172.16.136.18/10    md5
      
  5. Ardından, aşağıdaki komutu çalıştırarak bir PostgreSQL geçiş projesi oluşturun:

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

    Örneğin, aşağıdaki komut bu parametreleri kullanarak bir proje oluşturur:

    • Konum: Orta Batı ABD
    • Kaynak Grubu Adı: PostgresDemo
    • Hizmet Adı: PostgresCLI
    • Proje adı: PGMigration
    • Kaynak platform: PostgreSQL
    • Hedef platform: AzureDbForPostgreSql
    az dms project create -l westcentralus -n PGMigration -g PostgresDemo --service-name PostgresCLI --source-platform PostgreSQL --target-platform AzureDbForPostgreSql
    
  6. Aşağıdaki adımları kullanarak bir PostgreSQL geçiş görevi oluşturun.

    Bu adım, bağlantı kurmak için kaynak IP, UserID ve parola, hedef IP, UserID, parola ve görev türünü kullanmayı içerir.

    • Seçeneklerin tam listesini görmek için komutu çalıştırın:

      az dms project task create -h
      

      Hem kaynak hem de hedef bağlantı için giriş parametresi, nesne listesini içeren bir json dosyasına başvurur.

      PostgreSQL bağlantıları için bağlantı JSON nesnesinin biçimi.

      {
          // 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                
      }
      

      JSON nesnelerini listeleyen bir veritabanı seçeneği JSON dosyası da vardır. PostgreSQL için veri tabanı seçeneği JSON nesnesinin biçimi aşağıda gösterilmiştir:

      [
          {
              "name": "source database",
              "target_database_name": "target database",
              "selectedTables": [
                  "schemaName1.tableName1",
                  ...n
              ]
          },
          ...n
      ]
      
    • Kaynak bağlantısı JSON 'u oluşturmak için, Not defteri 'Ni açın ve aşağıdaki JSON 'ı kopyalayıp dosyaya yapıştırın. Dosyayı kaynak sunucunuza göre değiştirdikten sonra C:\DMS\source.jsdosyasına kaydedin.

      {
          "userName": "postgres",    
          "password": null,
          "serverName": "13.51.14.222",
          "databaseName": "dvdrental", 
          "port": 5432                
      }
      
    • Hedef bağlantı JSON 'u oluşturmak için, Not defteri 'Ni açın ve aşağıdaki JSON 'ı kopyalayıp dosyaya yapıştırın. Dosyayı hedef sunucunuza göre değiştirdikten sonra C:\DMS\target.jsdosyasına kaydedin.

      {
          "userName": " dms@builddemotarget",    
          "password": null,           
          "serverName": " builddemotarget.postgres.database.azure.com",
          "databaseName": "inventory", 
          "port": 5432                
      }
      
    • Geçirilecek veritabanlarının envanterini ve eşlenmesini listeleyen bir veritabanı seçenekleri JSON dosyası oluşturun:

      • Geçirilecek tabloların bir listesini oluşturun veya kaynak veritabanından listeyi oluşturmak için bir SQL sorgusu kullanabilirsiniz. Tablo listesini oluşturmak için örnek bir sorgu aşağıda bir örnek olarak verilmiştir. Bu sorgu kullanılıyorsa, geçerli bir JSON dizisi yapmak için lütfen son tablo adının sonundaki son virgülü kaldırmayı unutmayın.

        SELECT
            FORMAT('%s,', REPLACE(FORMAT('%I.%I', schemaname, tablename), '"', '\"')) AS SelectedTables
        FROM 
            pg_tables
        WHERE 
            schemaname NOT IN ('pg_catalog', 'information_schema');
        
      • Veritabanı seçenekleri JSON dosyasını, kaynak ve hedef veritabanı adları ve geçirilecek seçili tabloların listesi ile birlikte her bir veritabanı için tek bir girdiyle oluşturun. Yukarıdaki SQL sorgusunun çıkışını "Selectedtables" dizisini doldurmak için kullanabilirsiniz. Seçili tablolar listesi boşsa, hizmet, eşleşen şema ve tablo adlarına sahip olan geçiş için tüm tabloları dahil eder.

        [
            {
                "name": "dvdrental",
                "target_database_name": "dvdrental",
                "selectedTables": [
                    "schemaName1.tableName1",
                    "schemaName1.tableName2",                    
                    ...
                    "schemaNameN.tableNameM"
                ]
            },
            ... n
        ]
        
    • Kaynak bağlantısı, hedef bağlantı ve veritabanı seçenekleri JSON dosyalarını alan aşağıdaki komutu çalıştırın.

      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    
      

    Bu noktada, bir geçiş görevini başarıyla gönderdiniz.

  7. Görevin ilerleme durumunu göstermek için aşağıdaki komutu çalıştırın:

    • Genel görev durumunu kısa olarak görmek için

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
      
    • Geçiş ilerleme bilgileri de dahil olmak üzere ayrıntılı görev durumunu görmek için

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask --expand output
      
    • Yalnızca genişletme çıktısından migrationState 'i ayıklamak için Jmespath sorgu biçimini de kullanabilirsiniz:

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

      Çıktıda, farklı geçiş adımlarının ilerlemesini gösteren birkaç parametre vardır. Örneğin, aşağıdaki çıktıyı inceleyin:

      {
          "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
      }
      

Tam geçiş görevi

Tam yükleme tamamlandığında veritabanı tam geçiş için hazırdır. Kaynak sunucunun gelen yeni işlemlerle ne kadar meşgul olduğuna bağlı olarak, tam yükleme tamamlandıktan sonra DMS görevi hala değişiklikleri uyguluyor olabilir.

Tüm verilerin yakalandığından emin olmak için kaynak ve hedef veritabanları arasındaki satır sayılarını doğrulayın. Örneğin, durum çıktısından aşağıdaki ayrıntıları doğrulayabilirsiniz:

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. Aşağıdaki komutu kullanarak tam veritabanı geçiş görevini gerçekleştirin:

    az dms project task cutover -h
    

    Örneğin, aşağıdaki komut ' Inventory ' veritabanı için kesmeyi başlatır:

    az dms project task cutover --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask  --object-name Inventory
    
  2. Tam geçişin ilerleme durumunu izlemek için aşağıdaki komutu çalıştırın:

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  3. Veritabanı geçiş durumu tamamlandı olarak görüntülendiğinde, dizileri yeniden oluşturun (varsa) ve uygulamalarınızı PostgreSQL için Azure veritabanı 'nın yeni hedef örneğine bağlayın.

Hizmet, proje, görev temizleme

Herhangi bir DMS görevini, projesini veya hizmetini iptal etmeniz ya da silmeniz gerekirse iptal işlemini aşağıdaki sırayla gerçekleştirin:

  • Çalışan tüm görevleri iptal edin
  • Görevi silin
  • Projeyi silin
  • DMS hizmetini silin
  1. Çalışan bir görevi iptal etmek için aşağıdaki komutu kullanın:

    az dms project task cancel --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  2. Çalışan bir görevi silmek için aşağıdaki komutu kullanın:

    az dms project task delete --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
    
  3. Çalışan bir projeyi iptal etmek için aşağıdaki komutu kullanın:

    az dms project task cancel -n runnowtask --project-name PGMigration -g PostgresDemo --service-name PostgresCLI
    
  4. Çalışan bir projeyi silmek için aşağıdaki komutu kullanın:

    az dms project task delete -n runnowtask --project-name PGMigration -g PostgresDemo --service-name PostgresCLI
    
  5. DMS hizmetini silmek için aşağıdaki komutu kullanın:

    az dms delete -g ProgresDemo -n PostgresCLI
    

Sonraki adımlar