Migrare i database PostgreSQL in AzureMigrate PostgreSQL databases to Azure

Questo articolo illustra come la società fittizia Contoso ha pianificato ed eseguito la migrazione della piattaforma di database open source PostgreSQL locale in Azure.This article demonstrates how the fictional company Contoso planned and migrated its on-premises PostgreSQL open-source database platform to Azure.

Driver di businessBusiness drivers

Il team di leadership IT ha collaborato con i partner aziendali per capire cosa vogliono ottenere con questa migrazione.The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration. Desidera:They want to:

  • Automatizzare Big Data.Automate big data. Contoso usa PostgreSQL per diverse iniziative Big Data e AI.Contoso uses PostgreSQL for several of its big data and AI initiatives. La società vuole creare pipeline ripetibili scalabili per automatizzare molti di questi carichi di lavoro analitici.The company wants to build scalable repeatable pipelines to automate many of these analytical workloads.
  • Aumentare l'efficienza.Increase efficiency. Contoso deve rimuovere le procedure non necessarie e semplificare i processi per sviluppatori e utenti.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. L'azienda deve essere veloce e non sprecare tempo o denaro per offrire più rapidamente i requisiti dei clienti.The business needs IT to be fast and not waste time or money to deliver quicker on customer requirements.
  • Aumenta l'agilità.Increase agility. il settore IT di Contoso deve essere più reattivo alle esigenze dell'azienda.Contoso IT needs to be more responsive to the needs of the business. Deve reagire più rapidamente rispetto alle modifiche nel Marketplace per consentire un successo in un'economia globale e non diventare un blocco aziendale.It must react faster than the changes in the marketplace to enable success in a global economy and to not become a business blocker.
  • Scala.Scale. Man mano che l'azienda cresce correttamente, Contoso deve fornire sistemi che possono crescere allo stesso ritmo.As the business grows successfully, Contoso IT must provide systems that can grow at the same pace.
  • Aumentare la sicurezza.Increase security. Contoso rende conto che i problemi normativi comportano la regolazione della strategia locale da parte della società in base ai requisiti di controllo, registrazione e conformità.Contoso realizes that regulatory issues will cause the company to adjust its on-premises strategy based on auditing, logging, and compliance requirements.

Obiettivi della migrazioneMigration goals

Il team di Contoso Cloud ha bloccato gli obiettivi per questa migrazione e li userà per determinare il metodo di migrazione migliore.The Contoso cloud team has pinned down goals for this migration and will use them to determine the best migration method.

RequisitiRequirements DettagliDetails
AggiornamentiUpgrades Contoso vuole verificare che siano installate le patch più recenti quando sono disponibili, ma la società non vuole gestire questi aggiornamenti.Contoso wants to ensure that it has the latest patches installed when they're available, but the company doesn't want to manage these updates.
IntegrazioniIntegrations Contoso vuole integrare i dati nel database con le pipeline di dati e intelligenza artificiale per Machine Learning.Contoso wants to integrate the data in the database with data and AI pipelines for machine learning.
Backup e ripristinoBackup and restore Contoso è alla ricerca della possibilità di eseguire ripristini temporizzati quando e se gli aggiornamenti dei dati hanno esito negativo o sono danneggiati per qualsiasi motivo.Contoso is looking for the ability to do point-in-time restores when and if data updates fail or are corrupted for any reason.
AzureAzure Contoso desidera monitorare il sistema e attivare gli avvisi in base alle prestazioni e alla sicurezza.Contoso wants to monitor system and fire alerts based on performance and security.
PrestazioniPerformance In alcuni casi, contoso avrà pipeline di elaborazione parallela dei dati in aree geografiche diverse ed è necessario leggere i dati da tali aree.In some cases, Contoso will have parallel data processing pipelines in different geographic regions and must read data from those regions.

Progettazione della soluzioneSolution design

Dopo l'aggiunta di obiettivi e requisiti, contoso progetta e esamina una soluzione di distribuzione e identifica il processo di migrazione.After pinning down goals and requirements, Contoso designs and reviews a deployment solution and identifies the migration process. Vengono inoltre identificati gli strumenti e i servizi che verranno utilizzati per la migrazione.The tools and services it will use for migration are also identified.

Ambiente correnteCurrent environment

PostgreSQL 9.6.7 è in esecuzione in un computer Linux fisico ( sql-pg-01.contoso.com ) nel Data Center di contoso.PostgreSQL 9.6.7 is running on a physical Linux machine (sql-pg-01.contoso.com) in the Contoso datacenter. Contoso ha già una sottoscrizione di Azure con un gateway VPN da sito a sito a una rete di Data Center locale.Contoso already has an Azure subscription with a Site-to-Site VPN gateway to an on-premises datacenter network.

Soluzione propostaProposed solution

  • Usare il servizio migrazione del database di Azure per eseguire la migrazione del database a un'istanza di database di Azure per PostgreSQL.Use Azure Database Migration Service to migrate the database to an Azure Database for PostgreSQL instance.
  • Modificare tutte le applicazioni e i processi per usare la nuova istanza di database di Azure per PostgreSQL.Modify all applications and processes to use the new Azure Database for PostgreSQL instance.
  • Creare una nuova pipeline di elaborazione dati usando Azure Data Factory che si connette all'istanza del database di Azure per PostgreSQL.Build a new data processing pipeline using Azure Data Factory that connects to the Azure Database for PostgreSQL instance.

Considerazioni sul databaseDatabase considerations

Come parte del processo di progettazione della soluzione, Contoso ha esaminato le funzionalità di Azure per l'hosting dei dati PostgreSQL.As part of the solution design process, Contoso reviewed the features in Azure for hosting its PostgreSQL data. Le considerazioni seguenti hanno permesso all'azienda di decidere di usare Azure:The following considerations helped the company decide to use Azure:

  • Analogamente al database SQL di Azure, database di Azure per PostgreSQL supporta le regole del firewall.Similar to Azure SQL Database, Azure Database for PostgreSQL supports firewall rules.
  • È possibile usare database di Azure per PostgreSQL con reti virtuali per impedire che l'istanza sia accessibile pubblicamente.Azure Database for PostgreSQL can be used with virtual networks to prevent the instance from being publicly accessible.
  • Il database di Azure per PostgreSQL dispone delle certificazioni di conformità richieste che Contoso deve soddisfare.Azure Database for PostgreSQL has the required compliance certifications that Contoso must meet.
  • L'integrazione con DevOps e Azure Data Factory consentirà di compilare pipeline di elaborazione dati automatizzate.Integration with DevOps and Azure Data Factory will allow for automated data processing pipelines to be built.
  • Le prestazioni di elaborazione possono essere migliorate tramite le repliche di lettura.Processing performance can be enhanced by using read replicas.
  • Supporto per BYOK (Bring your own key) per la crittografia dei dati.Support for bring your own key (BYOK) for data encryption.
  • Possibilità di esporre il servizio solo al traffico di rete interno (accesso non pubblico) tramite il collegamento privato di Azure.Ability to expose the service to internal network traffic only (no-public access) by using Azure Private Link.
  • La larghezza di banda e la latenza dell'applicazione al database saranno sufficienti in base al gateway scelto (Azure EXPRESSROUTE o VPN da sito a sito).The bandwidth and latency from the application to the database will be sufficient enough based on the chosen gateway (either Azure ExpressRoute or Site-to-Site VPN).

Revisione della soluzioneSolution review

Contoso valuta il progetto proposto mettendo insieme un elenco di vantaggi e svantaggi.Contoso evaluates its proposed design by putting together a list of pros and cons.

ConsiderazioniConsideration DettagliDetails
VantaggiPros Tutte le funzionalità attualmente obbligatorie e in uso sono disponibili nel database di Azure per PostgreSQL.All currently required and in-use features are available in Azure Database for PostgreSQL.

SvantaggiCons Contoso deve comunque eseguire la migrazione manuale da una versione principale di PostgreSQL.Contoso will still need to do manual migration from a major version of PostgreSQL.

Architettura propostaProposed architecture

Diagramma dell'architettura dello scenario.

Figura 1: architettura dello scenario.Figure 1: Scenario architecture.

Processo di migrazioneMigration process

PreparazionePreparation

Prima di poter eseguire la migrazione dei database PostgreSQL, contoso garantisce che le istanze di Contoso soddisfino tutti i prerequisiti di Azure per una migrazione corretta.Before Contoso can migrate its PostgreSQL databases, it ensures that Contoso's instances meet all the Azure prerequisites for a successful migration.

Versioni supportateSupported versions

Sono supportate solo le migrazioni con la stessa versione o una versione successiva.Only migrations to the same or a higher version are supported. La migrazione da PostgreSQL 9,5 al database di Azure per PostgreSQL 9,6 o 10 è supportata, ma la migrazione da PostgreSQL 11 a PostgreSQL 9,6 non è supportata.Migrating PostgreSQL 9.5 to Azure Database for PostgreSQL 9.6 or 10 is supported, but migrating from PostgreSQL 11 to PostgreSQL 9.6 isn't supported.

Microsoft mira a supportare le versioni n-2 del motore PostgreSQL nel database di Azure per PostgreSQL: singolo server.Microsoft aims to support n-2 versions of the PostgreSQL engine in Azure Database for PostgreSQL - Single Server. Le versioni sono la versione principale corrente in Azure (n) e le due versioni precedenti principali (-2).The versions would be the current major version on Azure (n) and the two prior major versions (-2).

Per gli aggiornamenti più recenti sulle versioni supportate, vedere versioni principali di PostgreSQL supportate.For the latest updates on supported versions, see Supported PostgreSQL major versions.

Nota

L'aggiornamento automatico della versione principale non è supportato.Automatic major version upgrade isn't supported. Ad esempio, non è disponibile un aggiornamento automatico da PostgreSQL 9,5 a PostgreSQL 9,6.For example, there isn't an automatic upgrade from PostgreSQL 9.5 to PostgreSQL 9.6. Per eseguire l'aggiornamento alla versione principale successiva, eseguire il dump del database e ripristinarlo in un server creato con la versione del motore di destinazione.To upgrade to the next major version, dump the database and restore it to a server created with the target engine version.

ReteNetwork

Contoso dovrà configurare una connessione del gateway di rete virtuale dall'ambiente locale alla rete virtuale in cui si trova il database di Azure per PostgreSQL.Contoso will need to set up a virtual network gateway connection from its on-premises environment to the virtual network where its Azure Database for PostgreSQL database is located. Questa connessione consente all'applicazione locale di accedere al database, ma non di eseguirne la migrazione nel cloud.This connection allows the on-premises application to access the database but not be migrated to the cloud.

ValutazioneAssessment

Contoso dovrà valutare il database corrente per i problemi di replica.Contoso will need to assess the current database for replication issues. Questi problemi includono:These issues include:

  • La versione del database di origine è compatibile per la migrazione alla versione del database di destinazione.The source database version is compatible for migration to the target database version.

  • Le chiavi primarie devono essere presenti in tutte le tabelle da replicare.Primary keys must exist on all tables to be replicated.

  • I nomi di database non possono includere un punto e virgola ( ; ).Database names can't include a semicolon (;).

  • La migrazione di più tabelle con lo stesso nome, ma un caso diverso potrebbe causare un comportamento imprevedibile.Migration of multiple tables with the same name, but a different case might cause unpredictable behavior.

    Diagramma del processo di migrazione. Figura 2: processo di migrazione.Diagram of the migration process. Figure 2: The migration process.

MigrazioneMigration

Contoso è in grado di eseguire la migrazione in diversi modi:Contoso can perform the migration in several ways:

Contoso ha selezionato il servizio migrazione del database di Azure per consentire all'azienda di riutilizzare il progetto di migrazione ogni volta che è necessario eseguire gli aggiornamenti principali.Contoso has selected Azure Database Migration Service to allow the company to reuse the migration project whenever it needs to perform major-to-major upgrades. Poiché una singola attività del servizio migrazione del database supporta solo quattro database, Contoso configura diversi processi attenendosi alla procedura seguente.Because a single Database Migration Service activity only accommodates up to four databases, Contoso sets up several jobs by using the following steps.

Per preparare, configurare una rete virtuale per accedere al database.To prepare, set up a virtual network to access the database. Creare una connessione di rete virtuale usando gateway VPN in diversi modi.Create a virtual network connection by using VPN gateways in various ways.

Creare un'istanza del Servizio Migrazione del database di AzureCreate an Azure Database Migration Service instance

  1. Nella portale di Azureselezionare Aggiungi una risorsa.In the Azure portal, select Add a resource.

  2. Cercare i Servizi migrazione del database di Azuree selezionarlo.Search for Azure Database Migration Services, and select it.

  3. Selezionare + Aggiungi.Select + Add.

  4. Selezionare la sottoscrizione e il gruppo di risorse per il servizio.Select the subscription and resource group for the service.

  5. Immettere un nome per l'istanza.Enter a name for the instance.

  6. Selezionare la posizione più vicina al Data Center di contoso o al gateway VPN.Select the closest location to the Contoso datacenter or VPN gateway.

  7. Selezionare Azure per la modalità del servizio.Select Azure for the service mode.

  8. Selezione di un piano tariffario.Select a pricing tier.

  9. Selezionare Rivedi e crea.Select Review + create.

    Screenshot della schermata Crea servizio di migrazione.Screenshot of the Create Migration Service screen. Figura 3: esaminare e creare.Figure 3: Review and create.

  10. Selezionare Create (Crea).Select Create.

Creare un'istanza di Database di Azure per PostgreSQLCreate an Azure Database for PostgreSQL instance

  1. Configurare il file nel server locale postgresql.conf .On the on-premises server, configure the postgresql.conf file.

  2. Impostare il server in modo che sia in ascolto sull'indirizzo IP appropriato che il servizio migrazione del database di Azure utilizzerà per accedere al server e ai database.Set the server to listen on the proper IP address that Azure Database Migration Service will use to access the server and databases.

    • Impostare la listen_addresses variabile.Set the listen_addresses variable.
  3. Abilitare SSL.Enable SSL.

    1. Impostare la ssl=on variabile.Set the ssl=on variable.
    2. Verificare che contoso usi un certificato SSL firmato pubblicamente per il server che supporta TLS 1,2.Verify that Contoso is using a publicly signed SSL certificate for the server that supports TLS 1.2. In caso contrario, lo strumento del servizio migrazione del database genererà un errore.Otherwise, the Database Migration Service tool will raise an error.
  4. Aggiornare il pg_hba.conf file.Update the pg_hba.conf file.

    • Aggiungere voci specifiche per l'istanza del servizio migrazione del database.Add entries that are specific to the Database Migration Service instance.
  5. Per abilitare la replica logica nel server di origine, è necessario modificare i valori nel postgresql.conf file per ogni server.Logical replication must be enabled on the source server by modifying the values in the postgresql.conf file for each server.

    1. wal_level = logical
    2. max_replication_slots = [almeno il numero massimo di database per la migrazione]max_replication_slots = [at least the maximum number of databases for migration]
      • Ad esempio, se contoso vuole eseguire la migrazione di quattro database, imposta il valore su 4.For example, if Contoso wants to migrate four databases, it sets the value to 4.
    3. max_wal_senders = [numero di database in esecuzione contemporaneamente]max_wal_senders = [number of databases running concurrently]
      • Il valore consigliato è 10.The recommended value is 10.
  6. UserLa migrazione deve avere il REPLICATION ruolo nel database di origine.Migration User must have the REPLICATION role on the source database.

  7. Aggiungere l'indirizzo IP dell'istanza del servizio migrazione del database al PostgreSQLpg_hba.conf file.Add the Database Migration Service instance IP address to the PostgreSQLpg_hba.conf file.

  8. Per esportare gli schemi di database, eseguire i comandi seguenti:To export the database schemas, run the following commands:

    pg_dump -U postgres -s dvdrental > dvdrental_schema.sql
    
  9. Copiare il file, denominare la copia dvdrental_schema_foreign.sql e rimuovere tutti gli elementi correlati alla chiave non esterna e al trigger.Copy the file, name the copy dvdrental_schema_foreign.sql, and remove all non-foreign key and trigger-related items.

  10. Rimuovere tutti gli elementi relativi alla chiave esterna e al trigger dal dvdrental_schema.sql file.Remove all foreign key and trigger-related items from the dvdrental_schema.sql file.

  11. Importare lo schema del database (passaggio 1):Import the database schema (step 1):

      psql -h {host}.postgres.database.azure.com -d dvdrental -U username -f dvdrental_schema.sql
    

MigrazioneMigration

  1. Nel portale di Azure, contoso passa alla risorsa del servizio migrazione del database.In the Azure portal, Contoso goes to its Database Migration Service resource.

  2. Se il servizio non è avviato, selezionare Avvia servizio.If the service isn't started, select Start Service.

  3. Selezionare Nuovo progetto di migrazione.Select New Migration Project.

    Screenshot che mostra l'opzione nuovo progetto di migrazione evidenziato.

    Figura 4: avvio di una nuova migrazione.Figure 4: Starting a new migration.

  4. Selezionare nuova attività > migrazione dati online.Select New Activity > Online data migration.

  5. Immettere un nome.Enter a name.

  6. Selezionare PostgreSQL come origine.Select PostgreSQL as the source.

  7. Per la destinazione selezionare database di Azure per PostgreSQL e quindi fare clic su Salva.For the target, select Azure Database for PostgreSQL and then select Save.

    Screenshot che mostra il nuovo riquadro progetto di migrazione.

    Figura 5: viene evidenziato un nuovo progetto di migrazione.Figure 5: A new migration project is highlighted.

  8. Immettere le informazioni sull'origine e selezionare Salva.Enter the source information, and select Save.

    Screenshot che mostra l'immissione di informazioni sull'origine.Screenshot that shows entering source information. Figura 6: immissione di informazioni sull'origine.Figure 6: Entering source information.

  9. Immettere le informazioni di destinazione e selezionare Salva.Enter the target information, and select Save.

    Screenshot che mostra la selezione delle informazioni di destinazione.Screenshot that shows selecting target information. Figura 7: selezione delle informazioni di destinazione.Figure 7: Selecting target information.

  10. Selezionare i database di cui eseguire la migrazione.Select the databases to migrate. È necessario eseguire la migrazione in precedenza dello schema per ogni database.The schema for each database should have been migrated previously. Selezionare quindi Salva.Then select Save.

    Screenshot che mostra la selezione dei database.Screenshot that shows selecting databases. Figura 8: selezione dei database.Figure 8: Selecting databases.

  11. Configurare le impostazioni avanzate e selezionare Salva.Configure the advanced settings, and select Save.

    Screenshot che mostra la configurazione delle impostazioni avanzate.Screenshot that shows configuring advanced settings. Figura 9: configurazione delle impostazioni avanzate.Figure 9: Configuring advanced settings.

  12. Assegnare un nome all'attività e selezionare Run (Esegui).Give the activity a name, and select Run.

    Screenshot che mostra la denominazione e l'esecuzione dell'attività.Screenshot that shows naming and running the activity. Figura 10: denominazione ed esecuzione dell'attività.Figure 10: Naming and running the activity.

  13. Monitorare la migrazione.Monitor the migration. Ripetere l'operazione se si verifica un errore.Retry it if anything fails. Un esempio è se mancano i riferimenti alla chiave esterna.An example is if foreign key references were missing.

  14. Dopo che Full load completed corrisponde al numero di tabelle, selezionare Start cutover.After Full load completed matches the table count, select Start Cutover.

    Screenshot che mostra il monitoraggio della migrazione per avviare il cutover.Screenshot that shows monitoring the migration to start the cutover. Figura 11: monitoraggio della migrazione per avviare il cutover.Figure 11: Monitoring the migration to start the cutover.

  15. Arrestare tutte le transazioni dal server di origine.Stop all transactions from the source server.

  16. Selezionare la casella di controllo conferma e quindi fare clic su applica.Select the Confirm check box, and then select Apply.

    Screenshot che mostra l'esecuzione del cutover.Screenshot that shows running the cutover. Figura 12: esecuzione del cutover.Figure 12: Running the cutover.

  17. Attendere il completamento del cutover.Wait for the cutover to complete.

    Screenshot che mostra il completamento del cutover.Screenshot that shows completing the cutover. Figura 13: completamento del cutover.Figure 13: Completing the cutover.

    Nota

    I passaggi precedenti del servizio migrazione del database possono essere eseguiti anche tramite l'interfaccia della riga di comando di Azure.The previous Database Migration Service steps can also be performed via the Azure CLI.

  18. Importare lo schema del database (passaggio 2):Import the database schema (step 2):

      psql -h {host}.postgres.database.azure.com -d dvdrental -U username -f dvdrental_schema_foreign.sql
    
  19. Riconfigurare le applicazioni o i processi che usano il database locale per puntare alla nuova istanza di database di database di Azure per PostgreSQL.Reconfigure any applications or processes that use the on-premises database to point to the new Azure Database for PostgreSQL database instance.

  20. Per la post-migrazione, contoso garantirà anche la configurazione delle repliche di lettura tra aree, se necessario, al termine della migrazione.For post-migration, Contoso will ensure that it also set up cross-region read replicas, if necessary, after the migration is finished.

Eseguire la pulizia dopo la migrazioneClean up after migration

Dopo la migrazione, Contoso deve eseguire il backup del database locale per finalità di conservazione e ritirare il server PostgreSQL precedente come parte del processo di pulizia.After migration, Contoso needs to back up the on-premises database for retention purposes and retire the old PostgreSQL server as part of the cleanup process.

Esaminare la distribuzioneReview the deployment

Al termine della migrazione delle risorse in Azure, Contoso deve rendere pienamente operativa la nuova infrastruttura e proteggerla.With the migrated resources in Azure, Contoso needs to fully operationalize and secure its new infrastructure.

SecuritySecurity

Contoso deve:Contoso needs to:

BackupBackups

Assicurarsi che venga eseguito il backup dei database di Azure per PostgreSQL usando il ripristino geografico.Ensure that the Azure Database for PostgreSQL databases is backed up by using geo-restore. In questo modo, i backup possono essere usati in un'area abbinata se si verifica un'interruzione a livello di area.In this way, backups can be used in a paired region if a regional outage occurs.

Importante

Assicurarsi che la risorsa database di Azure per PostgreSQL disponga di un blocco di risorsa per impedirne l'eliminazione.Make sure that the Azure Database for PostgreSQL resource has a resource lock to prevent it from being deleted. Non è possibile ripristinare i server eliminati.Deleted servers can't be restored.

Licenze e ottimizzazione dei costiLicensing and cost optimization

  • È possibile aumentare o ridurre il database di Azure per PostgreSQL.Azure Database for PostgreSQL can be scaled up or down. Il monitoraggio delle prestazioni del server e dei database è importante per garantire che vengano soddisfatte le esigenze mantenendo al minimo i costi.Performance monitoring of the server and databases is important to ensure that needs are met while keeping costs at a minimum.
  • Sia la CPU che l'archiviazione hanno costi associati.Both CPU and storage have costs associated. Sono disponibili diversi piani tariffari per la selezione.There are several pricing tiers to select from. Assicurarsi che sia selezionato il piano tariffario appropriato per i carichi di lavoro dei dati.Be sure the appropriate pricing plan is selected for the data workloads.
  • Ogni replica di lettura viene fatturata in base alle risorse di calcolo e di archiviazione selezionate.Each read replica is billed based on the compute and storage selected.

ConclusioneConclusion

In questo articolo Contoso ha eseguito la migrazione dei database PostgreSQL a un'istanza di database di Azure per PostgreSQL.In this article, Contoso migrated its PostgreSQL databases to an Azure Database for PostgreSQL instance.