Identificar opções de ferramentas de migração

Concluído

Há muitas opções disponíveis para executar uma migração de um servidor PostgreSQL para o Banco de Dados do Azure para o Servidor Flexível PostgreSQL. Existem ferramentas PostgreSQL nativas, como pg_dump, pgadmin e pg_restore. Existem serviços de nuvem do Microsoft Azure, como o Serviço de Migração de Banco de Dados e a opção de migração no Banco de Dados do Azure para PostgresSQL - Servidor Flexível, que podem automatizar em grande parte o processo geral de transferência de dados da origem para o destino.

Banco de Dados do Azure para Servidor Flexível PostgreSQL - migração

Dentro do serviço Banco de Dados do Azure para PostgreSQL - Servidor Flexível, há um recurso nativo para dar suporte à migração de bancos de dados de outras instâncias do PostgreSQL para o serviço baseado no Azure. Essa opção é voltada para a migração offline de bancos de dados da origem para o destino. Para usar essa opção, precisamos usar as ferramentas pg_dumpall e psql discutidas anteriormente para migrar os bancos de dados de objetos de nível de servidor migrando para o servidor flexível.

Esse recurso é projetado com instâncias externas do PostgreSQL como origem e o Servidor Flexível no qual o projeto de migração foi criado como destino. Essencialmente para extrair dados para o servidor flexível. Os benefícios de usar esse serviço em relação à execução de um processo manual de despejo e restauração é a natureza gerenciada da migração. Uma vez configurado, ele monitora o processo de todas as tabelas que estão sendo migradas para o Servidor Flexível, para que possamos ver facilmente quando o corte no nível do aplicativo pode ser executado.

Projetos de Migração

Depois de termos a conectividade classificada, tudo o que precisamos fazer é selecionar o banco de dados ou bancos de dados que queremos migrar para o novo servidor. Na captura de tela a seguir, observe que, se houver vários bancos de dados que apoiam vários serviços que fazem parte de um sistema maior, podemos optar por migrá-los como um grupo em vez de um de cada vez. Esse agrupamento de banco de dados pode realmente ajudar não apenas a acelerar as migrações, mas também a manter a consistência lógica durante as atividades de migração.

Captura de tela do portal do Azure mostrando a seleção do banco de dados do projeto de migração.

Quando iniciamos o processo de validação e migração, podemos revisar o progresso geral do processo usando o painel do projeto. Esse painel nos mostra como os bancos de dados são validados e, em seguida, como eles são migrados para o novo servidor.

Captura de tela do portal do Azure mostrando a validação do banco de dados do projeto de migração e o status da migração.

Estas informações serão retidas após a migração, permitindo-nos acompanhar o progresso geral. As informações também fornecem todas as evidências necessárias para alterar os processos de controle sobre o sucesso e a duração de qualquer trabalho realizado.

Ferramentas PostgreSQL

Aqui exploramos as principais ferramentas que podem ser usadas para migrar dados de um servidor PostgreSQL para o Banco de Dados do Azure para o Servidor Flexível PostgreSQL.

pgcopydb

Pgcopydb é um projeto de código aberto que pode automatizar o processo de cópia de um banco de dados entre servidores PostgreSQL. Há vários benefícios em usar o pgcopydb sobre as ferramentas nativas fornecidas ao instalar o PostgreSQL, esses benefícios incluem.

  • Removendo a necessidade de arquivos intermediários usando pg_backup e pg_restore.
  • Crie simultaneidade de índice para paralelizar a criação de índices em tabelas usando o recurso synchronize__seqscans no PostgreSQL.
  • Cópia de tabela multi-threaded para particionar dados e transferir tabelas maiores em paralelo.
  • Altere a captura de dados para sincronização de dados para minimizar a necessidade de janelas de tempo de inatividade prolongadas.

Há duas opções principais dentro do pgcopydb que podem ser usadas para migração de banco de dados e dados de um servidor de origem para o destino. Essas opções são clonar e copiar.

clone pgcopydb

O clone é a opção principal para copiar um banco de dados inteiro de um servidor de origem para um destino. Este comando tem vários switches que estão disponíveis que nos permitem configurar uma operação de clone básica, através da automatização da configuração da captura de dados de alteração para sincronizar dados para minimizar o tempo de inatividade da migração. Também podemos especificar as opções para paralelizar a transferência de dados por tabela e opções de transferência paralela para tabelas, índices e objetos grandes.

cópia pgcopydb

Copiar é uma opção que permite maior granularidade de controle quando se trata de migrar o banco de dados ou partes dele. Podemos usar essa opção de comando para escolher quais esquemas, tabelas, funções, etc. devem ser transferidos de um banco de dados do servidor de origem para o servidor e o banco de dados de destino. Esse comando é útil nos cenários em que um banco de dados grande está sendo decomposto em bancos de dados menores como parte de uma atividade de migração de modernização de aplicativos. Como alternativa, uma atividade de migração de consolidação nos permite migrar o conteúdo de um banco de dados para esquemas dentro de outro.

Essas opções são apenas algumas das maneiras pelas quais o pgcopydb pode nos ajudar a melhorar o processo de migração de bancos de dados para o Banco de Dados do Azure para o Servidor Flexível PostgreSQL. Este processo proporciona uma forma de migração que minimiza os riscos e maximiza as nossas hipóteses de sucesso.

pgAdmin

O pgAdmin é uma ferramenta de gerenciamento amplamente utilizada que pode ser usada para interagir com bancos de dados PostgreSQL. Esta ferramenta permite a criação e execução de scripts pgsql. A ferramenta contém uma matriz de ferramentas GUI úteis que podem ser usadas para configurar, fazer backup e restaurar bancos de dados PostgreSQL. Normalmente, instale o pgAdmin em estações de trabalho administrativas. Esta ferramenta torna possível registrar e conectar-se a vários servidores PostgreSQL, tornando-se uma parte fundamental do nosso conjunto de ferramentas de migração.

Screenshot do pgAdmin com menus a mostrar várias opções de administração.

pg_dump, pg_restore e psql

pg_dump é uma ferramenta de linha de comando que é instalada junto com uma instância do PostgreSQL e pode ser instalada conforme necessário em uma estação de trabalho administrativa. Ele permite a criação de backups de banco de dados consistentes do PostgreSQL, mesmo quando há uma carga de trabalho simultânea ocorrendo. Ele funciona com bancos de dados individuais e nos permite fazer backup de um banco de dados inteiro ou partes dele.

Se estiver usando pg_dump para exportar objetos de esquema, podemos usar psql para executar o arquivo .sql resultante no banco de dados de destino para criar os objetos. Após esta etapa, podemos procurar maneiras de mover os dados da origem para o sistema de destino. Os comandos a serem usados para exportar um esquema de banco de dados de um banco de dados e criá-lo em outro podem ser vistos no exemplo a seguir.


pg_dump -O --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks --schema-only > adventureWorks.sql

psql --host=MyFlexibleServer --username=demo --dbname=AdventureWorks < adventureWorks.sql

Se estamos criando um dump completo do banco de dados de origem, procuramos usar pg_restore para ler o arquivo resultante e restaurar o banco de dados para a instância PostgreSQL de destino. Há vários fatores determinantes para o tempo que essas atividades levam ao executar um backup e restaurar para despejo. Notavelmente o tamanho do banco de dados, o desempenho do subsistema de armazenamento e a largura de banda e latência da rede entre os componentes de processamento.

O exemplo a seguir mostra como podemos criar um despejo de banco de dados em um personalizado e, em seguida, restaurá-lo para outro servidor.


pg_dump -Fc --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks > db.dump

pg_restore -Fc --host=MyServerName --port=5432 --create --username=adminuser --dbname=AdventureWorks db.dump

pg_dumpall

Enquanto pg_dump é usado para despejar um único banco de dados, pg_dumpall é usado para despejar todos os bancos de dados em um único arquivo de script que o psql lê em uma nova instância do PostgreSQL.

Além disso, pg_dumpall pode ser usado para gerar arquivos de script para objetos globais de nível de servidor, como funções das quais os bancos de dados podem depender ao serem migrados entre servidores.