Kurz: Online migrace PostgreSQL do služby Azure Database for PostgreSQL pomocí DMSTutorial: Migrate PostgreSQL to Azure Database for PostgreSQL online using DMS

Pomocí Azure Database Migration Service můžete migrovat databáze z místní instance PostgreSQL a Azure Database for PostgreSQL s minimálními výpadky.You can use Azure Database Migration Service to migrate the databases from an on-premises PostgreSQL instance to Azure Database for PostgreSQL with minimal downtime. Jinými slovy, migraci je možné dosáhnout s minimálními výpadky aplikace.In other words, migration can be achieved with minimal downtime to the application. V tomto kurzu migrujete ukázkovou databázi pro pronájem DVD z místní instance PostgreSQL 9,6 na Azure Database for PostgreSQL pomocí online aktivity migrace v Azure Database Migration Service.In this tutorial, you migrate the DVD Rental sample database from an on-premises instance of PostgreSQL 9.6 to Azure Database for PostgreSQL by using the online migration activity in Azure Database Migration Service.

V tomto kurzu se naučíte:In this tutorial, you learn how to:

  • Pomocí nástroje pg_dump migrujte vzorové schéma.Migrate the sample schema using pg_dump utility.
  • Vytvoření instance služby Azure Database Migration ServiceCreate an instance of the Azure Database Migration Service.
  • Vytvoření projektu migrace pomocí služby Azure Database Migration ServiceCreate a migration project by using the Azure Database Migration Service.
  • Spuštění migraceRun the migration.
  • Monitorování migraceMonitor the migration.

Poznámka

Použití Azure Database Migration Service k provedení online migrace vyžaduje vytvoření instance založené na cenové úrovni Premium.Using Azure Database Migration Service to perform an online migration requires creating an instance based on the Premium pricing tier.

Důležité

Pro optimální prostředí migrace doporučuje Microsoft vytvořit instanci Azure Database Migration Service ve stejné oblasti Azure jako cílová databáze.For an optimal migration experience, Microsoft recommends creating an instance of Azure Database Migration Service in the same Azure region as the target database. Přenášení dat mezi oblastmi geografickými lokalitami může zpomalit proces migrace a způsobit chyby.Moving data across regions or geographies can slow down the migration process and introduce errors.

PředpokladyPrerequisites

Pro absolvování tohoto kurzu je potřeba provést následující:To complete this tutorial, you need to:

  • Stáhněte a nainstalujte si PostgreSQL community edition 9,5, 9,6 nebo 10.Download and install PostgreSQL community edition 9.5, 9.6, or 10. Verze zdrojového PostgreSQL serveru musí být 9.5.11, 9.6.7, 10 nebo novější.The source PostgreSQL Server version must be 9.5.11, 9.6.7, 10, or later. Další informace najdete v článku podporované verze databáze PostgreSQL.For more information, see the article Supported PostgreSQL Database Versions.

    Kromě toho místní verze PostgreSQL musí odpovídat Azure Database for PostgreSQL.In addition, the on-premises PostgreSQL version must match the Azure Database for PostgreSQL version. Například PostgreSQL verze 9.5.11.5 je možné migrovat pouze do služby Azure Database for PostgreSQL verze 9.5.11 a ne verze 9.6.7.For example, PostgreSQL 9.5.11.5 can only migrate to Azure Database for PostgreSQL 9.5.11 and not to version 9.6.7.

  • Vytvořte instanci v Azure Database for PostgreSQL.Create an instance in Azure Database for PostgreSQL.

  • Vytvořte Azure Virtual Network (VNet) pro Azure Database Migration Service pomocí modelu nasazení Azure Resource Manager, který zajišťuje připojení typu Site-to-site k místním zdrojovým serverům pomocí ExpressRoute nebo VPN. .Create an Azure Virtual Network (VNet) for Azure Database Migration Service by using the Azure Resource Manager deployment model, which provides site-to-site connectivity to your on-premises source servers by using either ExpressRoute or VPN. Další informace o vytvoření virtuální sítě najdete v dokumentaci k Virtual Networka zejména v článcích rychlý Start s podrobnými údaji.For more information about creating a VNet, see the Virtual Network Documentation, and especially the quickstart articles with step-by-step details.

    Poznámka

    Pokud při instalaci virtuální sítě používáte ExpressRoute s partnerským vztahem k síti Microsoftu, přidejte do podsítě, ve které se služba zřídí, tyto koncové body služby:During VNet setup, if you use ExpressRoute with network peering to Microsoft, add the following service endpoints to the subnet in which the service will be provisioned:

    • Koncový bod cílové databáze (například koncový bod SQL, Cosmos DB koncový bod atd.)Target database endpoint (for example, SQL endpoint, Cosmos DB endpoint, and so on)
    • Koncový bod úložištěStorage endpoint
    • Koncový bod služby Service BusService bus endpoint

    Tato konfigurace je nezbytná, protože Azure Database Migration Service nemá připojení k Internetu.This configuration is necessary because the Azure Database Migration Service lacks internet connectivity.

  • Zajistěte, aby pravidla skupiny zabezpečení sítě (NSG) ve vaší virtuální síti neblokovala následující příchozí komunikační porty Azure Database Migration Service: 443, 53, 9354, 445, 12000.Ensure that your VNet Network Security Group (NSG) rules don't block the following inbound communication ports to Azure Database Migration Service: 443, 53, 9354, 445, 12000. Další podrobnosti o filtrování přenosů Azure VNet NSG najdete v článku filtrování provozu sítě pomocí skupin zabezpečení sítě.For more detail on Azure VNet NSG traffic filtering, see the article Filter network traffic with network security groups.

  • Nakonfigurujte bránu Windows Firewall pro přístup k databázovému stroji.Configure your Windows Firewall for database engine access.

  • Otevřete bránu Windows Firewall, abyste povolili Azure Database Migration Service přístup ke zdrojovému serveru PostgreSQL, který je ve výchozím nastavení port TCP 5432.Open your Windows firewall to allow Azure Database Migration Service to access the source PostgreSQL Server, which by default is TCP port 5432.

  • Pokud před zdrojovými databázemi používáte zařízení brány firewall, možná bude potřeba přidat pravidla brány firewall, která službě Azure Database Migration Service povolí přístup ke zdrojovým databázím za účelem migrace.When using a firewall appliance in front of your source database(s), you may need to add firewall rules to allow the Azure Database Migration Service to access the source database(s) for migration.

  • Vytvořte pravidlo brány firewall na úrovni serveru pro Azure Database for PostgreSQL, které povolí Azure Database Migration Service přístup k cílovým databázím.Create a server-level firewall rule for Azure Database for PostgreSQL to allow Azure Database Migration Service to access to the target databases. Zadejte rozsah podsítě virtuální sítě, která se používá pro Azure Database Migration Service.Provide the subnet range of the VNet used for Azure Database Migration Service.

  • Existují dvě metody pro vyvolání rozhraní příkazového řádku:There are two methods for invoking the CLI:

    • V pravém horním rohu Azure Portal vyberte tlačítko Cloud Shell:In the upper-right corner of the Azure portal, select the Cloud Shell button:

      Tlačítko Cloud Shell na webu Azure Portal

    • Nainstalujte a spusťte místně rozhraní příkazového řádku.Install and run the CLI locally. CLI 2.0 je nástroj příkazového řádku pro správu prostředků Azure.CLI 2.0 is the command-line tool for managing Azure resources.

      Pokyny ke stažení CLI najdete v článku Instalace Azure CLI 2.0.To download the CLI, follow the instructions in the article Install Azure CLI 2.0. Tento článek také uvádí platformy, které podporují CLI 2.0.The article also lists the platforms that support CLI 2.0.

      Pokud chcete nastavit subsystém Windows pro Linux (WSL), postupujte podle pokynů Průvodce instalací systému Windows 10.To set up Windows Subsystem for Linux (WSL), follow the instructions in the Windows 10 Installation Guide

  • Povolte logickou repliku v souboru postgresql.config a nastavte následující parametry:Enable logical replication in the postgresql.config file, and set the following parameters:

    • wal_level = logicalwal_level = logical
    • max_replication_slots = [počet slotů], doporučuje se nastavit na pět slotůmax_replication_slots = [number of slots], recommend setting to five slots
    • max_wal_senders = [počet souběžných úloh] - parametr max_wal_senders nastaví počet souběžných úloh, které můžete spustit, doporučujeme nastavení na 10 úlohmax_wal_senders =[number of concurrent tasks] - The max_wal_senders parameter sets the number of concurrent tasks that can run, recommend setting to 10 tasks

Migrace ukázkového schématuMigrate the sample schema

K dokončení všech databázových objektů, jako jsou schémata tabulek, indexy a uložené procedury, potřebujeme extrahovat schéma ze zdrojové databáze a použít ho na databázi.To complete all the database objects like table schemas, indexes and stored procedures, we need to extract schema from the source database and apply to the database.

  1. Pomocí příkazu pg_dump -s můžete vytvořit soubor schématu s výpisem paměti pro databázi.Use pg_dump -s command to create a schema dump file for a database.

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

    Chcete-li například vypsat schéma souboru databáze dvdrental:For example, to dump a schema file dvdrental database:

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

    Další informace o používání nástroje pg_dump, viz příklady v kurzu pg-dump.For more information about using the pg_dump utility, see the examples in the pg-dump tutorial.

  2. Vytvořte prázdnou databázi v cílovém prostředí, což je Azure Database for PostgreSQL.Create an empty database in your target environment, which is Azure Database for PostgreSQL.

    Podrobnosti o tom, jak se připojit a vytvořit databázi, najdete v článku Vytvoření serveru Azure Database for PostgreSQL na webu Azure Portal.Refer to the article Create an Azure Database for PostgreSQL server in the Azure portal for details on how to connect and create a database.

  3. Importujte schéma do cílové databáze, kterou jste vytvořili pomocí obnovení souboru se schématem výpisu paměti.Import the schema into the target database you created by restoring the schema dump file.

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

    Například:For example:

    psql -h mypgserver-20170401.postgres.database.azure.com  -U postgres -d dvdrental < dvdrentalSchema.sql
    
  4. Pokud vaše schéma obsahuje cizí klíče, počáteční načtení a průběžná synchronizace migrace selžou.If you have foreign keys in your schema, the initial load and continuous sync of the migration will fail. Spusťte následující skript v nástroji PgAdmin nebo psql, abyste extrahovali odstraněný skript cizího klíče a přidali skript cizí klíče do cílového umístění (Azure Database for PostgreSQL).Execute the following script in PgAdmin or in psql to extract the drop foreign key script and add foreign key script at the destination (Azure Database for PostgreSQL).

    SELECT Queries.tablename
           ,concat('alter table ', Queries.tablename, ' ', STRING_AGG(concat('DROP CONSTRAINT ', Queries.foreignkey), ',')) as DropQuery
                ,concat('alter table ', Queries.tablename, ' ',
                                                STRING_AGG(concat('ADD CONSTRAINT ', Queries.foreignkey, ' FOREIGN KEY (', column_name, ')', 'REFERENCES ', foreign_table_name, '(', foreign_column_name, ')' ), ',')) as AddQuery
        FROM
        (SELECT
        tc.table_schema,
        tc.constraint_name as foreignkey,
        tc.table_name as tableName,
        kcu.column_name,
        ccu.table_schema AS foreign_table_schema,
        ccu.table_name AS foreign_table_name,
        ccu.column_name AS foreign_column_name
    FROM
        information_schema.table_constraints AS tc
        JOIN information_schema.key_column_usage AS kcu
          ON tc.constraint_name = kcu.constraint_name
          AND tc.table_schema = kcu.table_schema
        JOIN information_schema.constraint_column_usage AS ccu
          ON ccu.constraint_name = tc.constraint_name
          AND ccu.table_schema = tc.table_schema
    WHERE constraint_type = 'FOREIGN KEY') Queries
      GROUP BY Queries.tablename;
    

    Spusťte skript pro odstranění cizího klíče (druhý sloupec) ve výsledku dotazu odstraňte cizí klíč.Run the drop foreign key (which is the second column) in the query result.

  5. Triggery v datech (trigger vložení nebo aktualizace) budou dříve než u replikovaných dat ze zdroje vynucovat integritu dat v cíli.Triggers in the data (insert or update triggers) will enforce data integrity in the target ahead of the replicated data from the source. Doporučuje se zakázat aktivační události ve všech tabulkách v cíli během migrace a poté znovu povolit triggery po dokončení migrace.It's recommended that you disable triggers in all the tables at the target during migration and then re-enable the triggers after migration is complete.

    Pokud chcete zakázat triggery v cílové databázi, použijte následující příkaz:To disable triggers in target database, use the following command:

    select concat ('alter table ', event_object_table, ' disable trigger ', trigger_name)
    from information_schema.triggers;
    
  6. Pokud v některých tabulkách existují datový typ ENUM, doporučujeme ji dočasně aktualizovat na datový typ "Character varyed" v cílové tabulce.If there are ENUM data type in any tables, it's recommended that you temporarily update it to a ‘character varying’ datatype in the target table. Po dokončení replikace dat vraťte datový typ na ENUM.After data replication is done, revert the datatype to ENUM.

Zřízení instance DMS pomocí rozhraní příkazového řádkuProvisioning an instance of DMS using the CLI

  1. Nainstalujte rozšíření synchronizace dms:Install the dms sync extension:

    • K Azure se přihlásíte spuštěním následujícího příkazu:Sign in to Azure by running the following command:

      az login
      
    • Po zobrazení výzvy otevřete webový prohlížeč a zadejte kód pro ověření vašeho zařízení.When prompted, open a web browser and enter a code to authenticate your device. Postupujte podle uvedených pokynů.Follow the instructions as listed.

    • Přidání rozšíření dms:Add the dms extension:

      • K zobrazení seznamu dostupných rozšíření spusťte následující příkaz:To list the available extensions, run the following command:

        az extension list-available –otable
        
      • Rozšíření nainstalujete spuštěním tohoto příkazu:To install the extension, run the following command:

        az extension add –n dms-preview
        
    • Chcete-li ověřit, že máte správně nainstalované rozšíření dms, spusťte následující příkaz:To verify you have dms extension installed correct, run the following command:

      az extension list -otable
      

      Měl by se zobrazit následující výstup:You should see the following output:

      ExtensionType    Name
      ---------------  ------
      whl              dms
      
    • Kdykoli spuštěním zobrazíte všechny příkazy podporované v DMS:At any time, view all commands supported in DMS by running:

      az dms -h
      
    • Pokud máte několik předplatných Azure, spuštěním následujícího příkazu nastavíte předplatné, které chcete použít k zřízení instance služby DMS.If you have multiple Azure subscriptions, run the following command to set the subscription that you want to use to provision an instance of the DMS service.

      az account set -s 97181df2-909d-420b-ab93-1bff15acb6b7
      
  2. Zřízení instance DMS spuštěním následujícího příkazu:Provision an instance of DMS by running the following command:

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

    Například následující příkaz vytvoří službu v:For example the following command will create a service in:

    • Umístění: USA – východ 2Location: East US2
    • Předplatné: 97181df2-909d-420b-ab93-1bff15acb6b7Subscription: 97181df2-909d-420b-ab93-1bff15acb6b7
    • Název skupina prostředků: PostgresDemoResource Group Name: PostgresDemo
    • Název služby DMS: PostgresCLIDMS Service Name: 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 BusinessCritical_4vCores
    

    Vytvoření instance služby DMS trvá asi 10 až 12 minut.It takes about 10-12 minutes to create the instance of the DMS service.

  3. Pokud chcete zjistit IP adresu DMS agenta tak, že ho přidáte do souboru Postgres pg_hba.conf, spusťte následující příkaz:To identify the IP address of the DMS agent so that you can add it to the Postgres pg_hba.conf file, run the following command:

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

    Například:For example:

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

    Zobrazený výsledek by měl vypadat přibližně jako tato adresa:You should get a result similar to the following address:

    [
      "172.16.136.18"
    ]
    
  4. Přidejte IP adresu agenta DMS do souboru Postgres pg_hba.conf.Add the IP address of the DMS agent to the Postgres pg_hba.conf file.

    • Po dokončení zřízení v DMS si poznamenejte IP adresu DMS.Take note of the DMS IP address after you finish provisioning in DMS.

    • Přidejte ke zdroji IP adresu do souboru pg_hba.conf podobně jako následující položky:Add the IP address to pg_hba.conf file on the source, similar to the following entry:

      host    all     all     172.16.136.18/10    md5
      host    replication     postgres    172.16.136.18/10    md5
      
  5. Dále spuštěním následujícího příkazu vytvořte projekt migrace PostgreSQL:Next, create a PostgreSQL migration project by running the following command:

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

    Například následující příkaz vytvoří projekt s použitím těchto parametrů:For example, the following command creates a project using these parameters:

    • Umístění: USA – středozápadLocation: West Central US

    • Název skupina prostředků: PostgresDemoResource Group Name: PostgresDemo

    • Název služby: PostgresCLIService Name: PostgresCLI

    • Název projektu: PGMigrationProject name: PGMigration

    • Zdrojová platforma: PostgreSQLSource platform: PostgreSQL

    • Cílová platforma: AzureDbForPostgreSqlTarget platform: AzureDbForPostgreSql

      az dms project create -l westcentralus -n PGMigration -g PostgresDemo --service-name PostgresCLI --source-platform PostgreSQL --target-platform AzureDbForPostgreSql
      
  6. Vytvoření úlohy migrace PostgreSQL pomocí následujících kroků.Create a PostgreSQL migration task using the following steps.

    Tento krok zahrnuje použití zdrojové IP adresy, ID uživatele a hesla, cílové IP adresy, ID uživatele, hesla a typ úlohy k navázání možnosti připojení.This step includes using the source IP, UserID and password, destination IP, UserID, password, and task type to establish connectivity.

    • Pokud chcete zobrazit úplný seznam možností, spusťte příkaz:To see a full list of options, run the command:

      az dms project task create -h
      

      Jak u zdroje, tak u cíle připojení vstupní parametr odkazuje na soubor json, který má seznam objektů.For both source and target connection, the input parameter is referring to a json file that has the object list.

      Formát objektu připojení JSON pro připojení PostgreSQL.The format of the connection JSON object for PostgreSQL connections.

      {
                  "userName": "user name",    // if this is missing or null, you will be prompted
                  "password": null,           // if this is missing or null (highly recommended) you will
              be prompted
                  "serverName": "server name",
                  "databaseName": "database name", // if this is missing, it will default to the 'postgres'
              server
                  "port": 5432                // if this is missing, it will default to 5432
              }
      
    • K dispozici je také soubor JSON možnosti databáze, ve kterém jsou uvedeny objekty JSON.There's also a database option json file that lists the json objects. Pro PostgreSQL formát objektu JSON možností databáze je zobrazen níže:For PostgreSQL, the format of the database options JSON object is shown below:

      [
          {
              "name": "source database",
              "target_database_name": "target database",
          },
          ...n
      ]
      
    • Vytvořte soubor json v aplikaci Poznámkový blok, zkopírujte následující příkazy a vložte je do souboru a pak soubor uložte v umístění C:\DMS\source.json.Create a json file with Notepad, copy the following commands and paste them into the file, and then save the file in C:\DMS\source.json.

      {
                 "userName": "postgres",    
                 "password": null,           
             be prompted
                 "serverName": "13.51.14.222",
                 "databaseName": "dvdrental", 
                 "port": 5432                
             }
      
    • Vytvořte jiný soubor s názvem target.json a uložte ho jako C:\DMS\target.json.Create another file named target.json and save as C:\DMS\target.json. Zahrňte následující příkazy:Include the following commands:

      {
              "userName": " dms@builddemotarget",    
              "password": null,           
              "serverName": " builddemotarget.postgres.database.azure.com",
              "databaseName": "inventory", 
              "port": 5432                
          }
      
    • Vytvořte soubor json možností databáze, který obsahuje seznam inventáře jako databázi, kterou chcete migrovat:Create a database options json file that lists inventory as the database to migrate:

      [
          {
              "name": "dvdrental",
              "target_database_name": "dvdrental",
          }
      ]
      
    • Spusťte následující příkaz, který přijímá zdroj, cíl a soubory json možností databáze.Run the following command, which takes in the source, destination, and the DB option json files.

      az dms project task create -g PostgresDemo --project-name PGMigration --source-platform postgresql --target-platform azuredbforpostgresql --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    
      

      V tomto okamžiku jste úspěšně odeslali úlohu migrace.At this point, you've successfully submitted a migration task.

  7. Chcete-li zobrazit průběh úlohy, spusťte následující příkaz:To show progress of the task, run the following command:

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name Runnowtask
    

    NEBOOR

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name Runnowtask --expand output
    
  8. Můžete také dotázat stav migrace z výstupu rozbalení:You can also query for the migrationState from the expand output:

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name Runnowtask --expand output --query 'properties.output[].migrationState | [0]' "READY_TO_COMPLETE"
    

Porozumění stavu úlohy migraceUnderstanding migration task status

Ve výstupním souboru existuje několik parametrů, které označují průběh migrace.In the output file, there are several parameters that indicate progress of migration. Viz například následující výstupní soubor:For example, see the output file below:

```
"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,
        "migrationState": "READY_TO_COMPLETE",  //Status of migration task. READY_TO_COMPLETE means 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", //Migration task state – Running means it is still listening to any changes that might come in                  
    "taskType": null
  },
  "resourceGroup": "PostgresDemo",
  "type": "Microsoft.DataMigration/services/projects/tasks"
```

Úloha přímé migraceCutover migration task

Databáze je připravená k přímé migraci po úplném načtení.The database is ready for cutover when full load is complete. V závislosti na tom, jak vytížený je zdrojový server s novými příchozími transakcemi, může být úloha DMS stále provedena po dokončení úplného načtení.Depending on how busy the source server is with new transactions is coming in, the DMS task might be still applying changes after the full load is complete.

Aby byla všechna data zachycena, ověřte počet řádků mezi zdrojovými a cílovými databázemi.To ensure all data is caught up, validate row counts between the source and target databases. Můžete například použít následující příkaz:For example, you can use the following command:

"migrationState": "READY_TO_COMPLETE", //Status of migration task. READY_TO_COMPLETE means database is ready for cutover
 "incomingChanges": 0,  //continue to check for a period of 5-10 minutes to make sure no new incoming changes that need to be applied to the target server
   "fullLoadTotalRows": 10, //full load for table 1
    "cdcDeleteCounter": 0,  //delete, insert and update counter on incremental sync after full load
    "cdcInsertCounter": 50,
    "cdcUpdateCounter": 0,
     "fullLoadTotalRows": 112,  //full load for table 2
  1. Pomocí následujícího příkazu proveďte úlohu přímé migrace databáze:Perform the cutover database migration task by using the following command:

    az dms project task cutover -h
    

    Například:For example:

    az dms project task cutover --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name Runnowtask  --database-name Inventory
    
  2. Chcete-li sledovat průběh přímé migrace, spusťte následující příkaz:To monitor the cutover progress, run the following command:

    az dms project task show --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name Runnowtask
    

Služba projekt, úloha vyčištěníService, project, task cleanup

Pokud potřebujete zrušit nebo odstranit všechny úlohy, projekt nebo služby DMS, proveďte zrušení v následujícím pořadí:If you need to cancel or delete any DMS task, project, or service, perform the cancellation in the following sequence:

  • Zrušte jakoukoli běžící úlohu.Cancel any running task
  • Odstraňte úlohu.Delete the task
  • Odstraňte projekt.Delete the project
  • Odstraňte službu DMS.Delete DMS service
  1. Chcete-li zrušit běžící úlohu, použijte následující příkaz:To cancel a running task, use the following command:

    az dms project task cancel --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name Runnowtask
    
  2. Chcete-li odstranit běžící úlohu, použijte následující příkaz:To delete a running task, use the following command:

    az dms project task delete --service-name PostgresCLI --project-name PGMigration --resource-group PostgresDemo --name Runnowtask
    
  3. Chcete-li zrušit běžící projekt, použijte následující příkaz:To cancel a running project, use the following command:

    az dms project task cancel -n runnowtask --project-name PGMigration -g PostgresDemo --service-name PostgresCLI
    
  4. Chcete-li odstranit běžící projekt, použijte následující příkaz:To delete a running project, use the following command:

    az dms project task delete -n runnowtask --project-name PGMigration -g PostgresDemo --service-name PostgresCLI
    
  5. Chcete-li odstranit službu DMS, použijte následující příkaz:To delete DMS service, use the following command:

    az dms delete -g ProgresDemo -n PostgresCLI
    

Další krokyNext steps