Migrar bases de dados PostgreSQL para AzureMigrate PostgreSQL databases to Azure

Este artigo demonstra como a empresa fictícia Contoso planeou e emigrou a sua plataforma de base de dados de código aberto PostgreSQL para Azure.This article demonstrates how the fictional company Contoso planned and migrated its on-premises PostgreSQL open-source database platform to Azure.

Impulsionadores de negóciosBusiness drivers

A equipa de liderança de TI tem trabalhado em estreita colaboração com parceiros de negócios para entender o que querem alcançar com esta migração.The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration. Querem:They want to:

  • Automatize grandes dados.Automate big data. A Contoso utiliza o PostgreSQL para várias das suas iniciativas de big data e IA.Contoso uses PostgreSQL for several of its big data and AI initiatives. A empresa quer construir oleodutos repetíveis escaláveis para automatizar muitas destas cargas de trabalho analíticas.The company wants to build scalable repeatable pipelines to automate many of these analytical workloads.
  • Aumentar a eficiência.Increase efficiency. A Contoso precisa de remover procedimentos desnecessários e simplificar processos para desenvolvedores e utilizadores.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. O negócio precisa que a TI seja rápida e não perca tempo ou dinheiro para entregar mais rapidamente às necessidades do cliente.The business needs IT to be fast and not waste time or money to deliver quicker on customer requirements.
  • Aumentar a agilidade.Increase agility. As equipas de TI da Contoso precisam de ser mais reativas às necessidades da empresa.Contoso IT needs to be more responsive to the needs of the business. Deve reagir mais rapidamente do que as mudanças no mercado para permitir o sucesso numa economia global e não se tornar um bloqueador de negócios.It must react faster than the changes in the marketplace to enable success in a global economy and to not become a business blocker.
  • A escala.Scale. À medida que o negócio cresce com sucesso, a Contoso IT deve fornecer sistemas que possam crescer ao mesmo ritmo.As the business grows successfully, Contoso IT must provide systems that can grow at the same pace.
  • Aumentar a segurança.Increase security. A Contoso dá conta de que as questões regulamentares farão com que a empresa ajuste a sua estratégia no local com base nos requisitos de auditoria, registo e conformidade.Contoso realizes that regulatory issues will cause the company to adjust its on-premises strategy based on auditing, logging, and compliance requirements.

Objetivos de migraçãoMigration goals

A equipa de nuvem contoso estabeleceu objetivos para esta migração e vai usá-los para determinar o melhor método de migração.The Contoso cloud team has pinned down goals for this migration and will use them to determine the best migration method.

RequisitosRequirements DetalhesDetails
AtualizaçõesUpgrades A Contoso quer garantir que tem as mais recentes correções instaladas quando estão disponíveis, mas a empresa não quer gerir estas atualizações.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.
IntegraçõesIntegrations A Contoso quer integrar os dados na base de dados com dados e oleodutos de IA para machine learning.Contoso wants to integrate the data in the database with data and AI pipelines for machine learning.
Backup e restauroBackup and restore Contoso está à procura da capacidade de fazer restauros pontuais quando e se as atualizações de dados falham ou são corrompidas por qualquer 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 O Contoso quer monitorizar o sistema e alertas de incêndio baseados no desempenho e segurança.Contoso wants to monitor system and fire alerts based on performance and security.
DesempenhoPerformance Em alguns casos, a Contoso terá oleodutos paralelos de processamento de dados em diferentes regiões geográficas e deve ler dados dessas regiões.In some cases, Contoso will have parallel data processing pipelines in different geographic regions and must read data from those regions.

Design de soluçãoSolution design

Depois de fixar objetivos e requisitos, a Contoso projeta e analisa uma solução de implantação e identifica o processo de migração.After pinning down goals and requirements, Contoso designs and reviews a deployment solution and identifies the migration process. As ferramentas e serviços que utilizará para a migração também estão identificados.The tools and services it will use for migration are also identified.

Ambiente atualCurrent environment

PostgreSQL 9.6.7 está a funcionar numa máquina física de Linux sql-pg-01.contoso.com no centro de dados Contoso.PostgreSQL 9.6.7 is running on a physical Linux machine (sql-pg-01.contoso.com) in the Contoso datacenter. A Contoso já tem uma subscrição do Azure com uma porta de entrada VPN site-to-site para uma rede de datacenter no local.Contoso already has an Azure subscription with a Site-to-Site VPN gateway to an on-premises datacenter network.

Solução propostaProposed solution

  • Utilize o Serviço de Migração da Base de Dados Azure para migrar a base de dados para uma base de dados Azure para o caso PostgreSQL.Use Azure Database Migration Service to migrate the database to an Azure Database for PostgreSQL instance.
  • Modifique todas as aplicações e processos para utilizar a nova Base de Dados Azure para a instância PostgreSQL.Modify all applications and processes to use the new Azure Database for PostgreSQL instance.
  • Construa um novo oleoduto de processamento de dados utilizando a Azure Data Factory que se conecta à Base de Dados Azure para a instância PostgreSQL.Build a new data processing pipeline using Azure Data Factory that connects to the Azure Database for PostgreSQL instance.

Considerações sobre a base de dadosDatabase considerations

Como parte do processo de design de solução, a Contoso reviu as funcionalidades em Azure para hospedar os seus dados PostgreSQL.As part of the solution design process, Contoso reviewed the features in Azure for hosting its PostgreSQL data. As seguintes considerações ajudaram a empresa a decidir utilizar a Azure:The following considerations helped the company decide to use Azure:

  • Semelhante à Base de Dados Azure SQL, a Base de Dados Azure para PostgreSQL suporta regras de firewall.Similar to Azure SQL Database, Azure Database for PostgreSQL supports firewall rules.
  • A Azure Database for PostgreSQL pode ser usada com redes virtuais para evitar que o caso seja acessível ao público.Azure Database for PostgreSQL can be used with virtual networks to prevent the instance from being publicly accessible.
  • A Azure Database for PostgreSQL tem as certificações de conformidade necessárias que a Contoso deve cumprir.Azure Database for PostgreSQL has the required compliance certifications that Contoso must meet.
  • A integração com a DevOps e a Azure Data Factory permitirá a construção de oleodutos automatizados de processamento de dados.Integration with DevOps and Azure Data Factory will allow for automated data processing pipelines to be built.
  • O desempenho do processamento pode ser melhorado utilizando réplicas de leitura.Processing performance can be enhanced by using read replicas.
  • Suporte para trazer a sua própria chave (BYOK) para encriptação de dados.Support for bring your own key (BYOK) for data encryption.
  • Capacidade de expor o serviço apenas ao tráfego de rede interna (acesso não público) utilizando o Azure Private Link.Ability to expose the service to internal network traffic only (no-public access) by using Azure Private Link.
  • A largura de banda e a latência da aplicação para a base de dados serão suficientes com base no gateway escolhido (ou Azure ExpressRoute ou VPN site-to-site).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).

Análise da soluçãoSolution review

A Contoso avalia o seu projeto proposto através da elaboração de uma lista de prós e contras.Contoso evaluates its proposed design by putting together a list of pros and cons.

ConsideraçãoConsideration DetalhesDetails
VantagensPros Todas as funcionalidades atualmente necessárias e em uso estão disponíveis na Base de Dados Azure para PostgreSQL.All currently required and in-use features are available in Azure Database for PostgreSQL.

DesvantagensCons Contoso ainda terá de fazer migração manual a partir de uma versão principal do PostgreSQL.Contoso will still need to do manual migration from a major version of PostgreSQL.

Arquitetura propostaProposed architecture

Diagrama da arquitetura do cenário.

Figura 1: Arquitetura de cenário.Figure 1: Scenario architecture.

Processo de migraçãoMigration process

PreparaçãoPreparation

Antes de Contoso poder migrar as suas bases de dados PostgreSQL, garante que as instâncias de Contoso cumprem todos os pré-requisitos do Azure para uma migração bem sucedida.Before Contoso can migrate its PostgreSQL databases, it ensures that Contoso's instances meet all the Azure prerequisites for a successful migration.

Versões suportadasSupported versions

Apenas as migrações para a mesma versão ou uma versão superior são suportadas.Only migrations to the same or a higher version are supported. A migração da Base de Dados Pós-Estar 9.5 para Azure para postgreSQL 9.6 ou 10 é suportada, mas migrar de PostgreSQL 11 para PostgreSQL 9.6 não é suportado.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.

A Microsoft tem como objetivo suportar as versões n-2 do motor PostgreSQL na Base de Dados Azure para PostgreSQL - Single Server.Microsoft aims to support n-2 versions of the PostgreSQL engine in Azure Database for PostgreSQL - Single Server. As versões seriam a versão principal atual em Azure (n) e as duas versões principais anteriores (-2).The versions would be the current major version on Azure (n) and the two prior major versions (-2).

Para obter as últimas atualizações sobre versões suportadas, consulte as principais versões pósgresql suportadas.For the latest updates on supported versions, see Supported PostgreSQL major versions.

Nota

A atualização automática da versão principal não é suportada.Automatic major version upgrade isn't supported. Por exemplo, não existe uma atualização automática de PostgreSQL 9.5 para PostgreSQL 9.6.For example, there isn't an automatic upgrade from PostgreSQL 9.5 to PostgreSQL 9.6. Para atualizar para a próxima versão principal, despeje a base de dados e restaure-a num servidor criado com a versão do motor alvo.To upgrade to the next major version, dump the database and restore it to a server created with the target engine version.

RedeNetwork

A Contoso terá de criar uma ligação virtual de gateway de rede desde o seu ambiente no local até à rede virtual onde está localizada a sua base de dados Azure Database for 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. Esta ligação permite que a aplicação no local aceda à base de dados, mas não seja migrada para a nuvem.This connection allows the on-premises application to access the database but not be migrated to the cloud.

AvaliaçãoAssessment

Contoso terá de avaliar a base de dados atual para problemas de replicação.Contoso will need to assess the current database for replication issues. Estas questões incluem:These issues include:

  • A versão da base de dados de origem é compatível com a migração para a versão da base de dados-alvo.The source database version is compatible for migration to the target database version.

  • As chaves primárias devem existir em todas as mesas para serem replicadas.Primary keys must exist on all tables to be replicated.

  • Os nomes da base de dados não podem incluir um ponto e vírgula ; ( ).Database names can't include a semicolon (;).

  • Migração de várias tabelas com o mesmo nome, mas um caso diferente pode causar comportamento imprevisível.Migration of multiple tables with the same name, but a different case might cause unpredictable behavior.

    Diagrama do processo de migração. Figura 2: O processo de migração.Diagram of the migration process. Figure 2: The migration process.

MigraçãoMigration

Contoso pode realizar a migração de várias formas:Contoso can perform the migration in several ways:

A Contoso selecionou o Azure Database Migration Service para permitir que a empresa reutilize o projeto de migração sempre que precisa de realizar upgrades importantes para grandes.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. Uma vez que uma única atividade do Serviço de Migração de Bases de Dados apenas acomoda até quatro bases de dados, a Contoso cria vários postos de trabalho utilizando os seguintes passos.Because a single Database Migration Service activity only accommodates up to four databases, Contoso sets up several jobs by using the following steps.

Para preparar, crie uma rede virtual para aceder à base de dados.To prepare, set up a virtual network to access the database. Crie uma ligação de rede virtual utilizando gateways VPN de várias maneiras.Create a virtual network connection by using VPN gateways in various ways.

Criar uma instância do Azure Database Migration ServiceCreate an Azure Database Migration Service instance

  1. No portal Azure, selecione Adicionar um recurso.In the Azure portal, select Add a resource.

  2. Procure por Serviços de Migração da Base de Dados Azuree selecione-o.Search for Azure Database Migration Services, and select it.

  3. Selecione + Adicionar.Select + Add.

  4. Selecione o grupo de subscrição e recursos para o serviço.Select the subscription and resource group for the service.

  5. Insira um nome para o exemplo.Enter a name for the instance.

  6. Selecione a localização mais próxima do datacenter do Contoso ou do gateway VPN.Select the closest location to the Contoso datacenter or VPN gateway.

  7. Selecione Azure para o modo de serviço.Select Azure for the service mode.

  8. Selecione um escalão de preço.Select a pricing tier.

  9. Selecione Rever + criar.Select Review + create.

    Screenshot do ecrã do Serviço de Migração Create.Screenshot of the Create Migration Service screen. Figura 3: Rever e criar.Figure 3: Review and create.

  10. Selecione Criar.Select Create.

Criar uma base de dados de Azure para o caso PostgreSQLCreate an Azure Database for PostgreSQL instance

  1. No servidor no local, configuure o postgresql.conf ficheiro.On the on-premises server, configure the postgresql.conf file.

  2. Desconfiem do servidor para ouvir no endereço IP adequado que o Azure Database Migration Service utilizará para aceder ao servidor e bases de dados.Set the server to listen on the proper IP address that Azure Database Migration Service will use to access the server and databases.

    • Desa parte a listen_addresses variável.Set the listen_addresses variable.
  3. Ativar ssl.Enable SSL.

    1. Desa parte a ssl=on variável.Set the ssl=on variable.
    2. Verifique se o Contoso está a utilizar um certificado SSL assinado publicamente para o servidor que suporta o TLS 1.2.Verify that Contoso is using a publicly signed SSL certificate for the server that supports TLS 1.2. Caso contrário, a ferramenta Serviço de Migração da Base de Dados levantará um erro.Otherwise, the Database Migration Service tool will raise an error.
  4. Atualize o pg_hba.conf ficheiro.Update the pg_hba.conf file.

    • Adicione entradas específicas para a instância do Serviço de Migração da Base de Dados.Add entries that are specific to the Database Migration Service instance.
  5. A replicação lógica deve ser ativada no servidor de origem modificando os valores do postgresql.conf ficheiro para cada servidor.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 = [pelo menos o número máximo de bases de dados para a migração]max_replication_slots = [at least the maximum number of databases for migration]
      • Por exemplo, se Contoso quer migrar quatro bases de dados, ele define o valor para 4.For example, if Contoso wants to migrate four databases, it sets the value to 4.
    3. max_wal_senders = [número de bases de dados em execução em simultâneo]max_wal_senders = [number of databases running concurrently]
      • O valor recomendado é 10.The recommended value is 10.
  6. A migração User deve ter o papel na base de REPLICATION dados de origem.Migration User must have the REPLICATION role on the source database.

  7. Adicione o endereço IP do Serviço de Migração da Base de Dados ao PostgreSQLpg_hba.conf ficheiro.Add the Database Migration Service instance IP address to the PostgreSQLpg_hba.conf file.

  8. Para exportar os esquemas de base de dados, executar os seguintes comandos:To export the database schemas, run the following commands:

    pg_dump -U postgres -s dvdrental > dvdrental_schema.sql
    
  9. Copie o ficheiro, nomeie a cópia dvdrental_schema_foreign.sql e remova todas as chaves não estrangeiras e itens relacionados com o gatilho.Copy the file, name the copy dvdrental_schema_foreign.sql, and remove all non-foreign key and trigger-related items.

  10. Remova todas as chaves estrangeiras e itens relacionados com o gatilho do dvdrental_schema.sql ficheiro.Remove all foreign key and trigger-related items from the dvdrental_schema.sql file.

  11. Importar o esquema da base de dados (passo 1):Import the database schema (step 1):

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

MigraçãoMigration

  1. No portal Azure, a Contoso vai para o seu recurso do Serviço de Migração de Bases de Dados.In the Azure portal, Contoso goes to its Database Migration Service resource.

  2. Se o serviço não for iniciado, selecione Start Service.If the service isn't started, select Start Service.

  3. Selecione Novo Projeto de Migração.Select New Migration Project.

    Screenshot que mostra a opção Do Novo Projeto de Migração em destaque.

    Figura 4: Iniciar uma nova migração.Figure 4: Starting a new migration.

  4. Selecione Nova Atividade > Migração de dados Online.Select New Activity > Online data migration.

  5. Insira um nome.Enter a name.

  6. Selecione PostgreSQL como a fonte.Select PostgreSQL as the source.

  7. Para o alvo, selecione Azure Database para PostgreSQL e, em seguida, selecione Save.For the target, select Azure Database for PostgreSQL and then select Save.

    Screenshot que mostra o novo painel de projeto de migração.

    Figura 5: Destaca-se um novo projeto de migração.Figure 5: A new migration project is highlighted.

  8. Introduza as informações de origem e selecione Guardar.Enter the source information, and select Save.

    Screenshot que mostra a introdução de informações de origem.Screenshot that shows entering source information. Figura 6: Introduzir informações sobre fontes.Figure 6: Entering source information.

  9. Introduza as informações-alvo e selecione Guardar.Enter the target information, and select Save.

    Screenshot que mostra a seleção de informações de destino.Screenshot that shows selecting target information. Figura 7: Selecionar informações de destino.Figure 7: Selecting target information.

  10. Selecione as bases de dados para migrar.Select the databases to migrate. O esquema de cada base de dados deveria ter sido migrado anteriormente.The schema for each database should have been migrated previously. Em seguida, selecione Guardar.Then select Save.

    Screenshot que mostra a seleção de bases de dados.Screenshot that shows selecting databases. Figura 8: Selecionar bases de dados.Figure 8: Selecting databases.

  11. Configure as definições avançadas e selecione Guardar.Configure the advanced settings, and select Save.

    Screenshot que mostra configurar configurações avançadas.Screenshot that shows configuring advanced settings. Figura 9: Configurar configurações avançadas.Figure 9: Configuring advanced settings.

  12. Dê um nome à atividade e selecione Run.Give the activity a name, and select Run.

    Screenshot que mostra nomear e executar a atividade.Screenshot that shows naming and running the activity. Figura 10: Nomear e gerir a atividade.Figure 10: Naming and running the activity.

  13. Monitorizar a migração.Monitor the migration. Tentar novamente se algo falhar.Retry it if anything fails. Um exemplo é se faltavam referências de chaves estrangeiras.An example is if foreign key references were missing.

  14. Depois de Full load completed corresponder à contagem de tabelas, selecione Start Cutover.After Full load completed matches the table count, select Start Cutover.

    Screenshot que mostra monitorizar a migração para iniciar o corte.Screenshot that shows monitoring the migration to start the cutover. Figura 11: Monitorização da migração para iniciar a redução.Figure 11: Monitoring the migration to start the cutover.

  15. Pare todas as transações do servidor de origem.Stop all transactions from the source server.

  16. Selecione a caixa de verificação Confirmar e, em seguida, selecione Aplicar.Select the Confirm check box, and then select Apply.

    Screenshot que mostra a execução do cutover.Screenshot that shows running the cutover. Figura 12: Executar o corte.Figure 12: Running the cutover.

  17. Aguarde que a capota termine.Wait for the cutover to complete.

    Screenshot que mostra completar o cutover.Screenshot that shows completing the cutover. Figura 13: Completar a redução.Figure 13: Completing the cutover.

    Nota

    As etapas anteriores do Serviço de Migração da Base de Dados também podem ser realizadas através do Azure CLI.The previous Database Migration Service steps can also be performed via the Azure CLI.

  18. Importar o esquema da base de dados (passo 2):Import the database schema (step 2):

      psql -h {host}.postgres.database.azure.com -d dvdrental -U username -f dvdrental_schema_foreign.sql
    
  19. Reconfigure quaisquer aplicações ou processos que utilizem a base de dados no local para apontar para a nova base de dados Azure para a fase de base de dados PostgreSQL.Reconfigure any applications or processes that use the on-premises database to point to the new Azure Database for PostgreSQL database instance.

  20. Para a pós-migração, Contoso garantirá que também crie réplicas de leitura trans-região, se necessário, após o fim da migração.For post-migration, Contoso will ensure that it also set up cross-region read replicas, if necessary, after the migration is finished.

Limpeza após a migraçãoClean up after migration

Após a migração, a Contoso precisa de fazer o back-base no local para fins de retenção e retirar o antigo servidor PostgreSQL como parte do processo de limpeza.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.

Rever a implementaçãoReview the deployment

Com os recursos migrados no Azure, a Contoso precisa de uma operacionalização completa e de proteger a nova infraestrutura.With the migrated resources in Azure, Contoso needs to fully operationalize and secure its new infrastructure.

SegurançaSecurity

Contoso precisa de:Contoso needs to:

  • Certifique-se de que a nova Base de Dados Azure para instâncias postgreSQL e bases de dados estão seguras.Ensure that the new Azure Database for PostgreSQL instance and databases are secure. Para obter mais informações, consulte a Segurança na Base de Dados Azure para PostgreSQL - Servidor Único.For more information, see Security in Azure Database for PostgreSQL - Single Server.
  • Reveja as regras de firewall e as configurações de rede virtuais para verificar se as ligações estão limitadas apenas às aplicações que a exijam.Review the firewall rules and virtual network configurations to verify that connections are limited to only the applications that require it.
  • Implementar BYOK para encriptação de dados.Implement BYOK for data encryption.
  • Atualize todas as aplicações para exigir ligações SSL às bases de dados.Update all applications to require SSL connections to the databases.
  • Confifiquei o Link Privado para que todo o tráfego de bases de dados seja mantido dentro da rede Azure e da rede no local.Set up Private Link so that all database traffic is kept inside Azure and the on-premises network.
  • Ativar a Azure Advanced Threat Protection (ATP).Enable Azure Advanced Threat Protection (ATP).
  • Configurar o Log Analytics para monitorizar e alertar sobre segurança e regista entradas de interesse.Configure Log Analytics to monitor and alert on security and logs entries of interest.

Cópias de segurançaBackups

Certifique-se de que a Base de Dados Azure para bases de dados PostgreSQL é apoiada através da geo-restauração.Ensure that the Azure Database for PostgreSQL databases is backed up by using geo-restore. Desta forma, os backups podem ser utilizados numa região emparelhada se ocorrer uma paralisação regional.In this way, backups can be used in a paired region if a regional outage occurs.

Importante

Certifique-se de que a Base de Dados Azure para o recurso PostgreSQL tem um bloqueio de recursos para evitar que seja eliminada.Make sure that the Azure Database for PostgreSQL resource has a resource lock to prevent it from being deleted. Os servidores eliminados não podem ser restaurados.Deleted servers can't be restored.

Licenciamento e otimização de custosLicensing and cost optimization

  • A base de dados Azure para PostgreSQL pode ser dimensionada para cima ou para baixo.Azure Database for PostgreSQL can be scaled up or down. A monitorização de desempenho do servidor e das bases de dados é importante para garantir que as necessidades são satisfeitas, mantendo os custos no mínimo.Performance monitoring of the server and databases is important to ensure that needs are met while keeping costs at a minimum.
  • Tanto o CPU como o armazenamento têm custos associados.Both CPU and storage have costs associated. Existem vários níveis de preços para selecionar.There are several pricing tiers to select from. Certifique-se de que o plano de preços adequado é selecionado para as cargas de trabalho dos dados.Be sure the appropriate pricing plan is selected for the data workloads.
  • Cada réplica de leitura é faturada com base no cálculo e armazenamento selecionados.Each read replica is billed based on the compute and storage selected.

ConclusãoConclusion

Neste artigo, a Contoso emigrou as suas bases de dados PostgreSQL para uma Base de Dados Azure para o caso PostgreSQL.In this article, Contoso migrated its PostgreSQL databases to an Azure Database for PostgreSQL instance.