¿Cuáles son las prácticas recomendadas para migrar una base de datos de Oracle a una base de datos de RDS para PostgreSQL de destino mediante AWS DMS?

Última actualización: 31-08-2022

Quiero migrar datos desde una base de datos de origen de Oracle a una base de datos de destino de Amazon Relation Database Service (Amazon RDS) para PostgreSQL. ¿Qué prácticas recomendadas puedo seguir al migrar datos de Oracle a PostgreSQL mediante AWS Database Migration Services (AWS DMS)?

Resolución

Prácticas recomendadas para migrar desde bases de datos de Oracle a PostgreSQL

  • Configure la base de datos de origen de Oracle con los requisitos previos necesarios antes de empezar a migrar los datos.
  • Pruebe la migración con los mismos datos de producción en cualquier otro entorno de base de datos de QA/DEV. En función de los resultados, puede continuar con la migración de producción. Asegúrese de usar la misma configuración de AWS DMS para las migraciones de prueba y de producción.
  • Aprovisione sus instancias de AWS DMS con la CPU, la memoria, el almacenamiento y las IOPS suficientes para evitar la contención de recursos durante la migración. Para obtener más información, consulte Choosing the right AWS DMS replication instance for your migration (Elegir la instancia de replicación de AWS DMS correcta para su migración) y Choosing the best size for a replication instance (Elegir el mejor tamaño para una instancia de replicación). Para obtener más información sobre los costos asociados con la actualización de la instancia, consulte Precios de AWS Database Migration Service. Aprovisione la instancia de Amazon RDS de destino con la misma consideración.
  • Si la base de datos de origen contiene muchas tablas, con una carga de trabajo pesada, divida las tablas en varias tareas de AWS DMS. Divida las tablas en función de su tamaño en el origen, el patrón de tráfico de la aplicación y la presencia de columnas LOB. Si una tabla tiene muchas columnas LOB, con un tráfico de escritura elevado en el origen, cree una tarea independiente para esa tabla.
  • Utilice la carga completa en paralelo para reducir el tiempo de migración de cargas de trabajo pesadas. Para obtener más información, consulte Using parallel load for selected tables, views, and collections (Uso de carga paralela para tablas, vistas y colecciones seleccionadas).
  • Desactive las copias de seguridad y los registros específicos de la base de datos, como bin, general y audit y registros de consulta PG, en la base de datos de destino durante la migración. Vuelva a activarlos para solucionar cualquier problema.
  • Desactive los desencadenadores, procedimientos, otros trabajos cron y los programadores de eventos en la base de datos de destino durante la migración.
  • Evite usar conceptos Multi-AZ en las bases de datos RDS de destino durante la migración.
  • Evite aplicar cualquier otro tráfico de clientes externos a la base de datos de destino durante la migración.
  • Agregue cualquier índice secundario en la base de datos de destino antes de iniciar la fase de replicación de captura de datos de cambios (change data capture, CDC).
  • Desactive las claves externas en el destino antes de la migración. Utilice la configuración de punto de conexión o atributo de conexión adicional (extra connection attribute, ECA) de destino para hacerlo. Para obtener más información, consulte Using a PostgreSQL database as a target for AWS Database Migration Service (Uso de una base de datos PostgreSQL como destino para AWS Database Migration Service).
afterConnectScript=SET session_replication_role='replica'
  • Utilice configuraciones de LOB optimizadas, como LOB limitado o en línea para la migración.
  • Pruebe su carga de trabajo con la solicitud de CDC transaccional predeterminada antes de usar el método de aplicación por lotes de CDC. Para obtener más información, consulte ¿Cómo puedo utilizar la función de aplicación por lotes de DMS para mejorar el rendimiento de replicación de CDC? (¿Cómo puedo utilizar la función de aplicación por lotes de DMS para mejorar el rendimiento de replicación de CDC?)
  • Aumente los valores de executeTimeout en la configuración del punto de conexión de destino. Este valor establece el tiempo de espera de la instrucción del cliente para una instancia de PostgreSQL. El valor predeterminado es 60 segundos.
  • Si utiliza secuencias para columnas de ID, defina los valores más altos en el destino que en el origen. Asegúrese de que los valores objetivo sigan siendo superiores a los de su origen en la fecha de transición de la migración. Este enfoque evita la colisión de los ID de secuencia después de la migración.
  • Para mejorar el rendimiento en la fase de carga completa, utilice configuraciones como:
    • MaxFullLoadSubTasks: el valor predeterminado es 8 y el máximo es 49. Esta configuración es útil, pero asegúrese de tener suficientes recursos disponibles.
    • CommitRate: utilice esta configuración para indicar el número máximo de registros que se pueden transferir juntos.
      • Para el modo LOB completo en la fase de carga completa: N de filas del origen = N de inserciones + N de actualizaciones en el destino = N de eventos, donde CommitRate = N.
      • Para el modo LOB limitado en la fase de carga completa, escriba N de filas en el archivo CSV, donde CommitRate = N).
    • Para tablas grandes, aumente el tamaño del archivo CSV. Esto se controla mediante maxFileSize en la configuración del punto de conexión de destino.

    Migrar una base de datos de Oracle a una base de datos de PostgreSQL

    Nota: Antes de continuar con estos pasos, prepare la base de datos Oracle de origen como se describe en los Requisitos previos.

    1.    Instale los controladores de SQL y la herramienta de conversión de esquemas de AWS (AWS SCT) en su máquina local.

    2.    Configure las bases de datos de origen de Oracle y de destino de PostgreSQL.

    3.    Convierta el esquema de Oracle a PostgreSQL con AWS SCT.

    4.    Cree una instancia de replicación de AWS DMS.

    5.    Cree sus puntos de conexión de origen y destino de AWS DMS.

    6.    Cree y, a continuación, ejecute la tarea de AWS DMS.

    7.    En Table mappings (Asignaciones de tablas), aplique una regla de transformación. Agregue el parámetro rule-action, con un valor de convert-lowercase. El motor de Oracle almacena todos los nombres de los objetos en mayúsculas, de forma predeterminada, pero PostgreSQL guarda todos los nombres de los objetos en minúsculas.

    8.    Cree una tarea de AWS DMS de CDC y de carga completa para replicar sus datos. Detenga la tarea cuando se complete la fase de carga completa mediante StopTaskCachedChangesNotApplied. Ahora, cree índices secundarios.

    9.    Migre a PostgreSQL.


    Migrating an Oracle database to PostgreSQL (Migración de una base de datos Oracle a PostgreSQL)

    How to migrate your Oracle database to PostgreSQL (Cómo migrar su base de datos Oracle a PostgreSQL)

    ¿Le resultó útil este artículo?


    ¿Necesita asistencia técnica o con la facturación?