A Alibaba Cloud otimizou o AnalyticDB for PostgreSQL com base no Greenplum. O serviço oferece suporte a computação vetorial e processamento de transações na arquitetura multi-coordinator. Como utiliza as mesmas operações de API do Greenplum Community Edition, a migração é simples. Este tópico descreve todo o processo de migração, desde a escolha do método até a validação dos resultados.
Antes de migrar
Analise as restrições abaixo antes de iniciar:
Migração apenas unidirecional. A migração de dados não suporta sincronização contínua. Caso ocorram gravações durante o processo, insira os novos dados após a conclusão da migração. Pause as operações de escrita durante a migração para evitar degradação de desempenho e lacunas nos dados.
Estatísticas pós-migração. Após a migração, o AnalyticDB for PostgreSQL executa
ANALYZEpara coletar estatísticas destinadas ao planejamento de consultas. A carga de CPU no nó coordenador aumenta temporariamente conforme o volume de dados.Quantidade de nós. Crie uma instância do AnalyticDB for PostgreSQL com pelo menos tantos nós de computação quanto o cluster Greenplum de origem. Ao usar o gpcopy, igualar a quantidade de nós proporciona o melhor throughput de migração.
Extensões. Verifique quais extensões o cluster Greenplum autogerenciado utiliza e compare-as com as suportadas pelo AnalyticDB for PostgreSQL. Para a lista completa, consulte Gerenciar extensões.
Compatibilidade de sintaxe. O AnalyticDB for PostgreSQL apresenta incompatibilidade parcial com a sintaxe do Greenplum 4X. Revise e atualize os comandos SQL afetados antes da migração.
Tabelas particionadas e herdadas. Migre essas tabelas com base nas tabelas filhas, e não na tabela pai.
Visão geral da migração
A migração segue estas quatro etapas:
Avalie os riscos da migração e selecione um método.
Adquira uma instância de teste do AnalyticDB for PostgreSQL e verifique sua abordagem de migração.
Adquira uma instância de produção do AnalyticDB for PostgreSQL e migre seus dados de produção.
Conecte sua aplicação à instância de produção e valide a migração.
Escolha um método de migração
|
Método |
Quando usar |
|
gpcopy |
O cluster Greenplum autogerenciado consegue se conectar diretamente à instância do AnalyticDB for PostgreSQL |
|
gptransfer |
A instância do AnalyticDB for PostgreSQL consegue se conectar diretamente ao cluster Greenplum autogerenciado |
|
Tabela externa do OSS |
O cluster Greenplum autogerenciado e a instância do AnalyticDB for PostgreSQL não conseguem se conectar entre si |
O gpcopy não oferece suporte a instâncias no modo de armazenamento elástico (V7.0) ou no modo Serverless. Utilize o gptransfer ou o método de tabela externa do OSS para esses tipos de instância.
Você também pode utilizar o Alibaba Cloud DataWorks (Data Integration) para a migração. Para mais detalhes, consulte Usar o Data Integration para migrar e sincronizar dados em lote.
Migrar dados usando o gpcopy
Pré-requisitos
Antes de começar, confirme os seguintes itens:
O cluster Greenplum autogerenciado consegue alcançar a instância do AnalyticDB for PostgreSQL pela rede.
Uma conta de superusuário está disponível no cluster Greenplum.
A instância do AnalyticDB for PostgreSQL não está no modo de armazenamento elástico (V7.0) nem no modo Serverless. O gpcopy não suporta esses tipos de instância.
Etapa 1: Entrar em contato com o suporte técnico da Alibaba Cloud
Enviar um ticketEnviar um ticket e forneça:
O ID da sua instância do AnalyticDB for PostgreSQL
O endereço IP e o número da porta do cluster Greenplum autogerenciado
Uma conta de superusuário no cluster Greenplum
O endereço IP do servidor onde o cluster Greenplum está hospedado
O suporte técnico da Alibaba Cloud baixará e instalará o gpcopy na sua instância do AnalyticDB for PostgreSQL.Enviar um ticket
Etapa 2: Atualizar a lista de permissões de endereços IP
Adicione 0.0.0.0/0 a uma lista de permissões de endereços IP da instância do AnalyticDB for PostgreSQL para permitir acesso externo.
O valor 0.0.0.0/0 permite que todos os endereços IP acessem a instância. Remova essa entrada e restaure uma lista de permissões de IP específica imediatamente após a migração.
Etapa 3: Instalar o gpcopy no servidor Greenplum
-
Baixe o gpcopy no servidor onde o cluster Greenplum autogerenciado está hospedado.
Este tópico utiliza o gpcopy 2.3.2. Use a versão 2.3.x do gpcopy para a migração. A versão 2,4.x exige criptografia SSL — consulte Configurar criptografia SSL caso utilize essa versão.
-
No diretório onde o pacote do gpcopy está localizado, execute o script a seguir para instalar o gpcopy:
#!/bin/bash tar xzvf gpcopy-2.3.2.tar.gz cd gpcopy-2.3.2/ cp gpcopy $GPHOME/bin cp gpcopy_helper $GPHOME/bin chmod 755 $GPHOME/bin/gpcopy chmod 755 $GPHOME/bin/gpcopy_helper host_sql=`psql -A -t -c "select address from gp_segment_configuration where role = 'p' and content >= 0 group by address"` host=(${host_sql}) host_len=${#host[@]} host_str="" for ((i=0; i<$host_len; ++i)); do host_str=$host_str" -h "${host[$i]} done gpscp $host_str gpcopy_helper =:$GPHOME/bin gpssh $host_str -e "chmod 755 $GPHOME/bin/gpcopy_helper"
Etapa 4: Executar a migração
Execute o comando a seguir para migrar os dados:
gpcopy --full \
--source-host <SOURCEHOST> \
--source-port <SOURCEPORT> \
--source-user <SOURCEUSER> \
--dest-host <DESTHOST> \
--dest-port <DESTPORT> \
--dest-user <DESTUSER> \
--jobs 4 \
--drop \
--validate count
Substitua os espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Observações |
|
|
Endereço IP do servidor Greenplum |
Use |
|
|
Número da porta do cluster Greenplum |
Padrão: |
|
|
Conta de superusuário do Greenplum |
— |
|
|
Endereço IP do nó coordenador do AnalyticDB for PostgreSQL |
Entre em contato com o suporte técnico da Alibaba Cloud |
|
|
Número da porta do nó coordenador |
Entre em contato com o suporte técnico da Alibaba Cloud |
|
|
Conta de superusuário do AnalyticDB for PostgreSQL |
Entre em contato com o suporte técnico da Alibaba Cloud |
Opções principais:
|
Opção |
Descrição |
|
|
Migra todos os bancos de dados de usuário. Substitua por |
|
|
Quantidade de tabelas migradas em paralelo. Padrão: |
|
|
Valida a migração comparando a contagem de linhas entre as tabelas de origem e destino |
Etapa 5: Restaurar os controles de acesso
Após a conclusão da migração:
Atualize a lista de permissões de endereços IP de
0.0.0.0/0para os endereços IP necessários ao seu negócio.Entre em contato com o suporte técnico da Alibaba Cloud para restaurar a configuração da conta de superusuário, os grupos de segurança e as configurações de login sem senha do pg_hba.
Migrar dados usando o gptransfer
Pré-requisitos
Antes de começar, confirme os seguintes itens:
A instância do AnalyticDB for PostgreSQL consegue alcançar o cluster Greenplum autogerenciado pela rede.
Uma conta privilegiada existe na instância do AnalyticDB for PostgreSQL. Caso contrário, crie uma — consulte Criar uma conta de banco de dados.
Etapas
Crie uma conta privilegiada para a instância do AnalyticDB for PostgreSQL, caso ainda não exista.
-
Adicione
0.0.0.0/0a uma lista de permissões de endereços IP da instância do AnalyticDB for PostgreSQL para permitir acesso externo.AvisoO valor
0.0.0.0/0permite que todos os endereços IP acessem a instância. Remova essa entrada imediatamente após a migração. Atualize a instância do AnalyticDB for PostgreSQL para a versão secundária mais recente. Consulte Visualizar a versão secundária do mecanismo e Atualizar a versão secundária do mecanismo.
Enviar um ticketEnviar um ticket e forneça: o ID da instância, o endereço IP e o número da porta do cluster Greenplum autogerenciado, uma conta do cluster Greenplum com permissões para migrar dados e o endereço IP do servidor.
Aguarde a conclusão da migração.
Atualize a lista de permissões de endereços IP de
0.0.0.0/0para os endereços IP necessários ao seu negócio. Valide seus dados e, em seguida, conecte sua aplicação à instância.
Migrar dados usando uma tabela externa do OSS
Utilize este método quando o cluster Greenplum e a instância do AnalyticDB for PostgreSQL não puderem se conectar diretamente. O processo possui três fases: migração de schema, migração de dados da tabela e verificação de dados.
Migração de schema
-
No nó mestre do cluster Greenplum autogerenciado, exporte o schema DDL usando
pg_dumpall:export PGHOST=<IP address of the self-managed Greenplum cluster> export PGPORT=<Port number of the self-managed Greenplum cluster> export PGUSER=<Superuser account of the self-managed Greenplum cluster> export PGPASSWORD=<Password of the superuser account> # For Greenplum 4X pg_dumpall -s -q --gp-syntax > full_schema.sql # For Greenplum 5X or 6X pg_dumpall -s --gp-syntax > full_schema.sql -
Verifique a existência de bibliotecas personalizadas. Conecte-se ao cluster Greenplum usando psql e execute:
SELECT * FROM pg_catalog.pg_library;Se existirem bibliotecas personalizadas, crie manualmente o schema correspondente na instância do AnalyticDB for PostgreSQL antes de prosseguir.
-
Aplique o schema DDL na instância do AnalyticDB for PostgreSQL:
export PGHOST=<IP address of the AnalyticDB for PostgreSQL instance> export PGPORT=<Port number of the AnalyticDB for PostgreSQL instance> export PGUSER=<Privileged account of the AnalyticDB for PostgreSQL instance> export PGPASSWORD=<Password of the privileged account> psql postgres -f full_schema.sql > psql.log 2>&1 &Verifique erros no arquivo
psql.log. A maioria dos erros refere-se a diferenças de sintaxe SQL, especialmente no Greenplum 4X. Para detalhes sobre compatibilidade, consulte Comparações de compatibilidade entre o AnalyticDB for PostgreSQL V4.3 e V6.0 e Verificar incompatibilidade entre o AnalyticDB for PostgreSQL V4.3 e V6.0.
Migração de dados da tabela
Etapa 1: Exportar dados do cluster Greenplum
Escolha um dos métodos de exportação a seguir:
Opção A: COPY TO
Execute a instrução COPY TO no cliente psql:
-- Works with Greenplum 4X, 5X, and 6X
COPY public.t1 TO '/data/gpload/public_t1.csv' FORMAT CSV ENCODING 'UTF8';
Para Greenplum 5X ou 6X, use ON SEGMENT para exportar em paralelo:
COPY public.t1 TO '<SEG_DATA_DIR>/public_t1_<SEGID>.csv' FORMAT CSV ENCODING 'UTF8' ON SEGMENT;
Não modifique o espaço reservado<SEGID>— o sistema o substitui automaticamente durante a exportação. Mantenha<SEG_DATA_DIR>como está ou substitua-o por um caminho absoluto.
Opção B: Tabela externa gpfdist
-
Inicie o serviço gpfdist:
mkdir -p /data/gpload gpfdist -d /data/gpload -p 8000 & -
Conecte-se ao cluster Greenplum usando psql e exporte os dados:
-- Create a writable external table for public.t1 CREATE WRITABLE EXTERNAL TABLE ext_w_t1 (LIKE public.t1) LOCATION ('gpfdist://<IP address of the self-managed Greenplum cluster>:8000/public_t1.csv') FORMAT 'CSV' ENCODING 'UTF8'; -- Write the table data to the external table INSERT INTO ext_w_t1 SELECT * FROM public.t1;
Etapa 2: Carregar dados no Object Storage Service (OSS)
Carregue os arquivos exportados em um bucket do OSS. O bucket deve estar na mesma região da instância do AnalyticDB for PostgreSQL. Para instruções de upload, consulte Carregar objetos.
Etapa 3: Importar dados para o AnalyticDB for PostgreSQL
Utilize uma tabela externa do OSS para carregar os dados do OSS na sua instância do AnalyticDB for PostgreSQL. Consulte a seção Importar dados do OSS para uma tabela do AnalyticDB for PostgreSQL para obter detalhes.
Verificar resultados da migração
Execute ambas as verificações para confirmar que a migração foi concluída:
Verificação de consistência de dados. Compare a contagem de linhas e os valores agregados de campos numéricos entre a origem e o destino. Para tabelas grandes, é aceitável realizar uma comparação baseada em amostragem.
Verificação de consistência de negócios. Conecte sua aplicação à instância do AnalyticDB for PostgreSQL e valide se as consultas de negócio são executadas corretamente e retornam os resultados esperados.