Öğretici: Azure CLI aracılığıyla DMS (klasik) kullanarak PostgreSQL'i çevrimiçi PostgreSQL için Azure Veritabanı geçirme

Azure Veritabanı Geçiş Hizmeti kullanarak veritabanlarını en düşük kapalı kalma süresiyle şirket içi PostgreSQL örneğinden PostgreSQL için Azure Veritabanı geçirebilirsiniz. Başka bir deyişle, uygulamaya en az kapalı kalma süresiyle geçiş yapılabilir. Bu öğreticide, Azure Veritabanı Geçiş Hizmeti'deki çevrimiçi geçiş etkinliğini kullanarak DVD Kiralama örnek veritabanını PostgreSQL 9.6'nın şirket içi bir örneğinden PostgreSQL için Azure Veritabanı geçirebilirsiniz.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • pg_dump yardımcı programını kullanarak örnek şemayı geçirin.
  • 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 geçiş gerçekleştirmek için Azure Veritabanı Geçiş Hizmeti kullanmak için Premium fiyatlandırma katmanını temel alan bir örnek oluşturmanız 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 aynı Azure bölgesinde bir Azure Veritabanı Geçiş Hizmeti örneği oluşturmanızı önerir. 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 topluluk sürümü 9.4, 9.5, 9.6 veya 10'u indirin ve yükleyin. Kaynak PostgreSQL Sunucusu sürümü 9.4, 9.5, 9.6, 10, 11, 12 veya 13 olmalıdır. Daha fazla bilgi için, bkz. Desteklenen PostgreSQL Veritabanı Sürümleri.

    Ayrıca hedef PostgreSQL için Azure Veritabanı sürümünün şirket içi PostgreSQL sürümüne eşit veya bundan 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çirilebilir, ancak 9.5 PostgreSQL için Azure Veritabanı geçirilmez.

  • PostgreSQL için Azure Veritabanı'da bir örnek oluşturun veya PostgreSQL için Azure Veritabanı - Hiper Ölçek (Citus) sunucusu oluşturun.

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

    Not

    Sanal ağ kurulumu sırasında ExpressRoute'u Microsoft ile ağ eşlemesi ile kullanıyorsanız hizmetin sağlanacağı alt ağa aşağıdaki hizmet uç noktalarını ekleyin:

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

    Azure Veritabanı Geçiş Hizmeti'nin İnternet bağlantısı olmadığından bu yapılandırma gereklidir.

  • Sanal ağ Ağ Güvenlik Grubu (NSG) kurallarınızın ServiceBus, Depolama ve AzureMonitor için ServiceTag'in 443 numaralı giden bağlantı noktasını engellemediğinden emin olun. Sanal ağ NSG trafiğini filtreleme hakkında ayrıntılı bilgi için Ağ güvenlik grupları ile ağ trafiğini filtreleme makalesine bakın.

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

  • Azure Veritabanı Geçiş Hizmeti'ne kaynak PostgreSQL Server erişimi sağlamak için Windows güvenlik duvarınızı açın. Varsayılan ayarlarda 5432 numaralı TCP bağlantı noktası kullanılır.

  • 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.

  • Azure Veritabanı Geçiş Hizmeti'nin hedef veritabanlarına erişmesini sağlama amacıyla PostgreSQL için Azure Veritabanı'na yönelik olarak sunucu düzeyinde güvenlik duvarı kuralı oluşturun. Azure Veritabanı Geçiş Hizmeti için kullanılan sanal ağın alt ağ aralığını belirtin.

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

    • Azure portalının sağ üst köşesinde Cloud Shell düğmesini 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'yı indirmek için Azure CLI'yı yükleme makalesindeki yönergeleri izleyin. Makalede Azure CLI'yi destekleyen platformlar da listelenir.

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

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

    • wal_level = logical
    • max_replication_slots = [yuva sayısı], beş yuvaya ayarlamanızı öneririz
    • 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ı bağlama ve oluşturma hakkında ayrıntılı bilgi için Azure portalında PostgreSQL için Azure Veritabanı sunucusu oluşturma veya Azure portalında PostgreSQL için Azure Veritabanı - Hiper Ölçek (Citus) sunucusu oluşturma makalesine bakın.

  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ı etkinleştirme/devre dışı bırakma işlemlerini dahili olarak işler ve tetikler. Sonuç olarak, hedef veritabanı şemasında herhangi bir değişiklik yapma konusunda endişelenmeniz gerekmez.

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 dms-preview kalmadan normal CLI paketinde (sürüm 2.18.0 ve üzeri) kullanılabilir. Uzantıyı geçmişte yüklediyseniz, aşağıdaki adımları kullanarak uzantıyı kaldırabilirsiniz:

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

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

        az extension remove --name dms-preview
        
      • Uzantıyı dms-preview doğru bir şekilde kaldırdığınızdan emin olmak için aşağıdaki komutu çalıştırın ve uzantıyı dms-preview listede görmemeniz gerekir:

        az extension list -o table
        

      Önemli

      dms-preview uzantısı, Azure DMS tarafından desteklenen diğer geçiş yolları için hala gerekli olabilir. Uzantının gerekli olup olmadığını belirlemek için lütfen belirli geçiş yolunun belgelerine bakın. Bu belge, PostgreSQL'e özel olarak çevrimiçi PostgreSQL için Azure Veritabanı için uzantı gereksinimini 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                
      }
      

      Ayrıca 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ı json'unu oluşturmak için Not Defteri açın ve aşağıdaki json dosyasını kopyalayıp dosyaya yapıştırın. Dosyayı kaynak sunucunuza göre değiştirdikten sonra C:\DMS\source.json kaydedin.

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

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

      • Geçirilecek tabloların listesini oluşturun veya bir SQL sorgusu kullanarak listeyi kaynak veritabanından oluşturabilirsiniz. Tablo listesini oluşturmak için örnek bir sorgu, örnek olarak aşağıda verilmiştir. Bu sorguyu kullanıyorsanız, geçerli bir JSON dizisi haline getirmek için lütfen son tablo adının sonundaki son virgülleri 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');
        
      • Kaynak ve hedef veritabanı adları ile geçirilecek seçili tabloların listesini içeren her veritabanı için bir giriş içeren veritabanı seçenekleri json dosyasını oluşturun. Yukarıdaki SQL sorgusunun çıkışını kullanarak "selectedTables" dizisini doldurabilirsiniz. Seçili tablolar listesi boşsa, hizmetin geçiş için eşleşen şema ve tablo adlarına sahip tüm tabloları içereceğini lütfen unutmayın..

        [
            {
                "name": "dvdrental",
                "target_database_name": "dvdrental",
                "selectedTables": [
                    "schemaName1.tableName1",
                    "schemaName1.tableName2",                    
                    ...
                    "schemaNameN.tableNameM"
                ]
            },
            ... n
        ]
        
    • Kaynak bağlantı, 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ısaca görmek için

      az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name runnowtask
      
    • Geçiş ilerleme durumu 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
      
    • JMESPath sorgu biçimini yalnızca genişletme çıkışından migrationState değerini ayıklamak için 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 ilerleme durumunu gösteren çeşitli parametreler vardır. Örneğin, aşağıdaki çıkışa bakın:

      {
          "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 çıkışı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 kesme işlemini 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österildiğinde dizileri yeniden oluşturun (varsa) ve uygulamalarınızı yeni hedef PostgreSQL için Azure Veritabanı ö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. Bir projeyi silmek için aşağıdaki komutu kullanın:

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

    az dms delete -g ProgresDemo -n PostgresCLI
    

Sonraki adımlar