Quais são as práticas recomendadas para migrar um banco de dados Oracle para um banco de dados RDS para PostgreSQL de destino usando o AWS DMS?

Data da última atualização: 31/08/2022

Quero migrar dados de um banco de dados de origem Oracle para um banco de dados Amazon Relation Database Service (Amazon RDS) para PostgreSQL de destino. Quais práticas recomendadas posso seguir ao migrar dados do Oracle para o PostgreSQL usando o AWS Database Migration Services (AWS DMS)?

Resolução

Práticas recomendadas para migrar bancos de dados Oracle para bancos de dados PostgreSQL

  • Configure seu banco de dados de origem Oracle usando os pré-requisitos necessários antes de começar a migrar os dados.
  • Teste a migração usando os mesmos dados de produção em qualquer outro ambiente de banco de dados de QA/DEV. Com base nos resultados, você poderá continuar com a migração da produção. Certifique-se de usar a mesma configuração do AWS DMS para as migrações de teste e produção.
  • Provisione suas instâncias do AWS DMS com quantidades suficientes de CPU, memória, armazenamento e IOPS para evitar a contenção de recursos durante a migração. Para obter mais informações, consulte Escolher a instância de replicação do AWS DMS certa para a sua migração e Escolher do melhor tamanho para uma instância de replicação. Para saber mais sobre os custos associados ao upgrade da sua instância, consulte Preços do AWS Database Migration Service. Provisione a instância de destino do Amazon RDS fazendo a mesma consideração.
  • Se o banco de dados de origem contiver muitas tabelas, com uma workload pesada, divida as tabelas em várias tarefas do AWS DMS. Divida as tabelas com base em seu tamanho na origem, padrões de tráfego de aplicações e na presença de colunas LOB. Se uma tabela tiver muitas colunas LOB com alto tráfego de gravação na origem, crie uma tarefa separada para ela.
  • Use carga total paralela para reduzir o tempo de migração para workloads pesadas. Para obter mais informações, consulte Usar carga paralela para tabelas, exibições e coleções selecionadas.
  • Desative backups e logs específicos do banco de dados, como logs de bin, gerais, de auditoria e consultas PG no banco de dados de destino durante a migração. Ative-os novamente para solucionar problemas.
  • Desative gatilhos, procedimentos, outros trabalhos cron e programadores de eventos no banco de dados de destino durante a migração.
  • Evite usar conceitos Multi-AZ em bancos de dados RDS de destino durante a migração.
  • Evite aplicar qualquer outro tráfego de cliente externo ao destino durante a migração.
  • Adicione quaisquer índices secundários no banco de dados de destino antes de iniciar a fase de replicação de captura de dados de alteração (CDC).
  • Desative chaves estrangeiras no destino antes da migração. Use a configuração de atributo de conexão extra (ECA)/endpoint de destino para fazer isso. Para obter mais informações, consulte Usar um banco de dados PostgreSQL como destino para o AWS Database Migration Service.
afterConnectScript=SET session_replication_role='replica'
  • Use configurações de LOB otimizadas, como LOB limitada ou em linha, para migração.
  • Teste sua workload usando o recurso de aplicar CDC transacional padrão antes de usar o método de aplicar CDC em lote. Para obter mais informações, Como posso usar o recurso de aplicar em lote do DMS para melhorar a performance de replicação de CDC?
  • Aumente os valores de executeTimeout nas configurações do endpoint de destino. Esse valor define o tempo limite da instrução do cliente para uma instância do PostgreSQL. O valor padrão é 60 segundos.
  • Se estiver usando sequências para colunas de ID, defina valores mais altos no destino do que na origem. Certifique-se de que os valores de destino ainda sejam maiores do que os da sua origem na data de substituição da migração. Essa abordagem evita a colisão de IDs de sequência após a migração.
  • Para melhorar a performance na fase de carga total, use configurações como:
    • MaxFullLoadSubTasks: O valor padrão é 8 e o máximo é 49. Essa configuração é útil, mas verifique se você tem recursos suficientes disponíveis.
    • CommitRate: Use essa configuração para indicar o número máximo de registros que podem ser transferidos juntos.
      • Para o modo de LOB completa na fase de carga total: N linhas da origem = N inserções + N atualizações no destino = N eventos, em que CommitRate=N.
      • Para o modo de LOB limitada na fase de carga total: grave N linhas no arquivo CSV, em que CommitRate=N.
    • Para tabelas grandes, aumente o tamanho do arquivo CSV. Isso é controlado por maxFileSize nas configurações do endpoint de destino.

    Migrar um banco de dados Oracle para um banco de dados PostgreSQL

    Observação: antes de continuar com essas etapas, prepare o banco de dados Oracle de origem conforme descrito nos Pré-requisitos.

    1.    Instale os drivers SQL e a AWS Schema Conversion Tool (AWS SCT) na máquina local.

    2.    Configure sua origem Oracle e seus bancos de dados de destino PostgreSQL.

    3.    Converta o esquema Oracle em PostgreSQL usando a AWS SCT.

    4.    Crie uma instância de replicação do AWS DMS.

    5.    Crie seus endpoints de origem e destino do AWS DMS.

    6.    Crie e execute sua tarefa do AWS DMS.

    7.    Em Table mappings (Mapeamentos de tabela), aplique uma regra de transformação. Adicione o parâmetro rule-action, com um valor de convert-lowercase. O mecanismo Oracle armazena todos os nomes de objetos em maiúsculas por padrão, mas o PostgreSQL armazena todos os nomes de objetos em minúsculas.

    8.    Crie uma tarefa de carga completa e CDC do AWS DMS para replicar seus dados. Interrompa a tarefa quando a fase de carga total estiver concluída, usando StopTaskCachedChangesNotApplied. Agora, crie índices secundários.

    9.    Transfira para o PostgreSQL.