Importar, exportar y migrar bases de datos

Migre datos de otra base de datos PostgreSQL a un sistema de base de datos de OCI Database with PostgreSQL.

Uso de utilidades PostgreSQL como pg_dump

La utilidad pg_dump incluye una instalación PostgreSQL por defecto y se puede utilizar para extraer una base de datos PostgreSQL en un archivo de script u otro archivo de almacenamiento. Estos archivos se pueden proporcionar a una base de datos de OCI Database with PostgreSQL con comandos psql o pg_restore para volver a crear una base de datos en el mismo estado en el momento del volcado.

Al crear una base de datos de OCI Database with PostgreSQL, se especifica un usuario administrador. Ese usuario puede restaurar desde un archivo creado con estas utilidades. Debido a que estas utilidades son aplicaciones cliente PostgreSQL normales, puede realizar este procedimiento de migración desde cualquier host remoto que tenga acceso a la base de datos.

Nota

Esta guía utiliza pg_dump para crear los volcados en formato de texto sin formato y la utilidad psql para restaurar el volcado. También puede crear volcados con un formato diferente y utilizar pg_restore para restaurar los volcados.

Ejemplo: exportación e importación de todas las bases de datos de un sistema de base de datos

En el siguiente ejemplo se asume que el sistema de base de datos de origen es un sistema PostgreSQL básico, con tres bases de datos: db_1, db_2 y db_3. El sistema de la base de datos origen tiene muchos usuarios, algunos de ellos con privilegios SUPERUSER.

  1. Realice el volcado de solo esquema de todas las bases de datos. Vuelca cada base de datos en un archivo individual con la información de propiedad del objeto de los usuarios.

    /usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -s -E 'UTF8' -d <db_1> -f <db_1_schema_dump>.sql
    • -U: usuario que crea el volcado
    • -h: dirección de host de la base de datos de origen
    • -s: esquema de solo volcado, sin datos
    • -E: defina la codificación del cliente del archivo de volcado en UTF-8
    • -d: base de datos para volcar
    • -f: archivo O/p para volcar el esquema de la base de datos

    Repita este procedimiento para las bases de datos db_2 y db_3.

  2. Cree un volcado de solo datos de cada una de las bases de datos en archivos individuales.

    /usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -a -E 'UTF8' -d db_1 -f <db_1_data_dump>.sql
    • -a: volcar solo los datos, no el esquema

    Repita este procedimiento para las bases de datos db_2 y db_3.

  3. Volcar objetos globales sin información de tablespace.

    /usr/lib/postgresql/bin/pg_dumpall -U psql -h <IP_of_Source_DB> -g --no-role-passwords --no-tablespaces -f <all_roles>.sql
    • -g: volcar solo objetos globales, sin bases de datos
    • --no-role-passwords: utilice este indicador para evitar el volcado de contraseñas.
    • --no-tablespaces: OCI Database with PostgreSQL solo soporta tablespaces internos.
  4. Dado que el usuario administrador del sistema de base de datos de OCI Database with PostgreSQL no tiene privilegios SUPERUSER, NOSUPERUSER, NOREPLICTION, etc., debe eliminarse de las sentencias CREATE USER del volcado.

    Realice los cambios necesarios en el archivo de volcado global para eliminar cualquier comando que necesite privilegios SUPERUSER. Por ejemplo:

    ALTER ROLE/USER test WITH NOSUPERUSER NOINHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'test';
    

    Se debe modificar a:

    ALTER ROLE/USER test WITH LOGIN PASSWORD 'test';
  5. Restaure el volcado global mediante el usuario administrador de OCI Database with PostgreSQL en el sistema de base de datos de OCI Database with PostgreSQL para crear todos los roles/usuarios:

    /usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <all_roles>.sql  
  6. Restaure los volcados de base de datos solo de esquema:

    /usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_schema_dump>.sql

    Repita este procedimiento para las bases de datos db_2 y db_3.

    Nota

    Corrija los errores con privilegios o las discrepancias de objetos antes de continuar.
  7. Restaure los volcados de base de datos solo de datos:

    /usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_data_dump>.sql

    Repita este procedimiento para las bases de datos db_2 y db_3.

  8. Verifique los recuentos de filas de todas las tablas en la base de datos origen.
  9. Asegúrese de que todos los niveles de permiso del sistema de base de datos de origen se reflejan con precisión en el sistema de base de datos de OCI Database with PostgreSQL.
  10. Defina contraseñas para los usuarios creados en el sistema de base de datos de OCI Database with PostgreSQL.
  11. Ejecute VACUUM ANALYZE en cada base de datos o tablas individuales para actualizar las estadísticas de las bases de datos. Este comando ayuda al planificador de consultas PostgreSQL a crear planes de consultas optimizados, lo que resulta en un mejor rendimiento. Para acelerar la finalización de VACUUM ANALYZE, recomendamos aumentar maintenance_work_mem en la sesión PSQL. VACUUM ANALYZE también se puede ejecutar en sesiones independientes en paralelo para reducir el tiempo de finalización.

    SET maintenance_work_mem = '<a_few_gigabytes_depending_on_shape>';
    VACUUM ANALYZE <db_1>;

    Repita este procedimiento para las bases de datos db_2 y db_3.

    Nota

    Recomendamos ejecutar VACUUM ANALYZE y REINDEX periódicamente en tablas e índices bloated para mantener el rendimiento del sistema de base de datos. Ejecute esta operación durante las horas de menor actividad para evitar que las aplicaciones se vean afectadas.

Uso de GoldenGate

Puede utilizar GoldenGate para configurar la replicación desde una base de datos PostgreSQL de origen a una base de datos de OCI Database with PostgreSQL.

Los siguientes pasos abarcan la configuración de origen, destino y GoldenGate para mantener las bases de datos sincronizadas. Puede optar por pasar a OCI Database with PostgreSQL en cualquier momento, sin tiempo de inactividad, una vez que el proceso se haya completado correctamente.

  1. Preparación de la Base de Datos de Origen
  2. Volcado del Esquema de Base de Datos Origen
  3. Preparación del Sistema de la Base de Datos de Destino
  4. Uso de GoldenGate para la replicación

Requisitos

Para utilizar GoldenGate, asegúrese de que cumplan los siguientes requisitos previos:

  • Verifique que los recursos de IAM y la red de OCI necesarios estén en su lugar. Para obtener más información, consulte Introducción a OCI Database with PostgreSQL.
  • Cree un sistema de base de datos que se pueda utilizar como destino para la replicación GoldenGate.

  • Cree instancias informáticas para alojar el cliente PostgreSQL que se puede conectar a los sistemas de base de datos de origen y destino. Al crear las instancias:
    • Descargue el par. de claves SSH.

      Atención

      Cualquier persona que tenga acceso a la clave privada se puede conectar a la instancia. Almacene la clave privada en una ubicación segura.
    • Seleccione la VCN y la subred privada que se utilizan al crear el sistema de base de datos.
    • Instale una versión del cliente PostgreSQL que sea compatible con la versión PostgreSQL del sistema de base de datos siguiendo las instrucciones en https://www.postgresql.org/download/.

Preparación de la Base de Datos de Origen

Las bases de datos de origen deben cumplir los requisitos de usuario y configuración para que GoldenGate extraiga y replique datos.

Requisitos de usuario

Los procesos GoldenGate requieren un usuario de base de datos que pueda capturar datos de origen y entregarlos a OCI Database with PostgreSQL. Recomendamos crear un usuario de base de datos PostgreSQL dedicado para Extract GoldenGate y GoldenGate Replicat. Para obtener más información sobre los usuarios de base de datos y GoldenGate, consulte Privilegios de base de datos para Oracle GoldenGate para PostgreSQL.

Requisitos de configuración

Cualquier base de datos origen debe configurarse para adaptarse al proceso de extracción GoldenGate. A continuación, se muestran los parámetros necesarios con sus valores para cualquier base de datos origen:

  • listen_addresses: para la conectividad remota de un Extract o Replicat, defina "listen_addresses = * " para permitir la conectividad remota de la base de datos.
  • wal_level: el registro de escritura anticipada en la base de datos de origen se debe definir en logical, que agrega la información necesaria para soportar la descodificación de registros transaccionales.
  • max_replication_slots: el número máximo de ranuras de replicación se debe definir para alojar una ranura abierta por extracción de GoldenGate. En general, no se necesita más de un Extract GoldenGate por base de datos.
    Nota

    Si la base de datos de origen ya está utilizando la replicación nativa PostgreSQL y todos los espacios de replicación disponibles, aumente el valor para permitir el registro de un Extract GoldenGate.
  • max_wal_senders: defina el valor máximo de remitentes de escritura anticipada para que coincida con el valor máximo de ranuras de replicación.
  • track_commit_timestamp: opcionalmente, los registros de hora de confirmación se pueden activar en el log de escritura anticipada. Si se activa al mismo tiempo que se activa el registro lógico de escritura anticipada, los registros de confirmación de DML a partir de ese momento se capturan con el valor de registro de hora correcto. De lo contrario, el primer registro capturado por GoldenGate tendrá un registro de hora de confirmación incorrecto.

Para utilizar Community PostgreSQL como base de datos origen, el usuario puede realizar cambios de configuración en el archivo postgresql.conf y reiniciar la base de datos para que los cambios surtan efecto:

listen_addresses = *
wal_level = logical                      
max_replication_slots = 1  (min required for GG)         
max_wal_senders = 1  (min required for GG)                       
track_commit_timestamp = on
Amazon Aurora PostgreSQL como fuente

En Amazon Aurora PostgreSQL, la configuración de la base de datos se cambia mediante grupos de parámetros. Consulte la documentación de Amazon AWS para obtener información sobre cómo editar la configuración de la base de datos dentro de un nuevo grupo de parámetros y asignarla a una instancia de base de datos.

Asegúrese de que se cumplan los requisitos de configuración de la base de datos verificando los valores en el grupo de parámetros asignado a la instancia.

La configuración de wal_level para Amazon Aurora se configura con un parámetro denominado rds.logical_replication. Defina rds.logical_replication en 1 para utilizar la base de datos como origen para Extract GoldenGate.

El usuario de base de datos que se está utilizando para la migración debe tener privilegios de replicación. Otorgue privilegios al usuario en el sistema Amazon Aurora de origen mediante lo siguiente:

grant replication to <migration-user>;
Amazon RDS para PostgreSQL como origen

En Amazon RDS para PostgreSQL, la configuración de la base de datos se cambia mediante grupos de parámetros. Consulte la documentación de Amazon AWS para obtener información sobre cómo editar la configuración de la base de datos dentro de un nuevo grupo de parámetros y asignarla a una instancia de base de datos.

Asegúrese de que se cumplan los requisitos de configuración de la base de datos verificando los valores en el grupo de parámetros asignado a la instancia.

El valor wal_level para los servicios de base de datos de Amazon se configura con un parámetro denominado rds.logical_replication. Defina rds.logical_replication en 1 para utilizar la base de datos como origen para Extract GoldenGate.

El usuario de base de datos que se está utilizando para la migración debe tener privilegios de replicación. Otorgue privilegios al usuario en el sistema de Amazon RDS de origen mediante lo siguiente:

grant replication to <migration-user>;
Azure Database para PostgreSQL como origen

En Azure Database for PostgreSQL, la configuración de la base de datos se cambia mediante parámetros de servidor para la instancia de base de datos. Consulte la documentación de Azure Database para PostgreSQL para obtener información sobre cómo editar la configuración de la base de datos.

Asegúrese de que se cumplen los requisitos de configuración de la base de datos mediante la verificación de la configuración en la instancia de origen.

Al configurar GoldenGate para una extracción PostgreSQL en una base de datos de Azure para la base de datos PostgreSQL, wal_level se debe activar y definir en LOGICAL.

El usuario de base de datos que se está utilizando para la migración debe tener privilegios de replicación. Otorgue privilegios al usuario en el sistema de origen mediante lo siguiente:

ALTER ROLE <migration-user> WITH REPLICATION;

Volcado del Esquema de Base de Datos Origen

Pruebe la conectividad de la instancia informática al sistema de base de datos de origen y, a continuación, vuelque el esquema de la base de datos de origen mediante el siguiente comando:

/<path-to-binary>/pg_dump -U <user-to-take-dump> -h <IP-of-source-DB> -s -E 'UTF8' -d <source-DB-name> -f schema_only.sql
  • -U: usuario que crea el volcado
  • -h: dirección de host de la base de datos de origen
  • -s: esquema de solo volcado, sin datos
  • -E: defina la codificación del cliente del archivo de volcado en UTF-8
  • -d: base de datos para volcar
  • -f: archivo O/p para volcar el esquema de la base de datos

Este esquema se utiliza al preparar el sistema de base de datos de destino. Consulte Uso de utilidades PostgreSQL como pg_dump para obtener más información sobre pg_dump y OCI Database with PostgreSQL.

Preparación del Sistema de la Base de Datos de Destino

Asegúrese de que se cumplen los requisitos previos para utilizar GoldenGate para replicar datos en OCI Database with PostgreSQL, se prepara la base de datos de origen y, a continuación, restaure el esquema de la base de datos de origen en el destino de OCI Database with PostgreSQL mediante el siguiente comando:

/<path-to-binary>/psql -U <user-to-load-dump> -d <target-DB-name> -h <Private_endpoint_of_target_database_system> -f schema_only.sql
  • -U: usuario que restaura el volcado
  • -h: dirección de host de la base de datos de destino
  • -d: base de datos para volcar
  • -f: archivo O/p para volcar el esquema de la base de datos

Consulte Uso de utilidades PostgreSQL como pg_dump para obtener más información sobre psql y OCI Database with PostgreSQL.

Consejo

Para obtener más información sobre el uso de una instancia para conectarse a un sistema de base de datos, consulte Conexión a una base de datos.

Uso de GoldenGate para la replicación

Utilice los siguientes pasos para configurar GoldenGate para su uso con OCI Database with PostgreSQL. Utilice el compartimento que contiene el sistema de base de datos de OCI Database with PostgreSQL de destino.

  1. Cree un despliegue y seleccione PostgreSQL como tecnología.
  2. Cree una conexión de origen basada en la base de datos de origen y la conectividad de prueba.
  3. Cree una conexión de destino de servidor PostgreSQL y una conectividad de prueba.

    Nota

    Para la conectividad de red, seleccione Punto final dedicado como método de enrutamiento de tráfico.
  4. Asigne las conexiones de origen y destino al despliegue.
  5. Agregue un Extract para PostgreSQL al despliegue para que se ejecute en la conexión de origen y extraiga o capture datos.
    1. Active el registro complementario de nivel de tabla para la base de datos origen. Utilice el nombre de esquema creado al volcar el esquema de base de datos de origen. Para obtener más información, consulte el paso Activar registro complementario de Agregar un Extract para PostgreSQL: antes de empezar.
    2. Agregue un Extracto de carga inicial (INI).
      1. Proporcione un nombre de pista, por ejemplo, xx. Este archivo contiene los cambios que se producen en la base de datos origen.
      2. En la página Archivo de parámetros, asegúrese de que se incluyen los siguientes elementos en el archivo:

        exttrail xx
        INITIALLOADOPTIONS USESNAPSHOT
        TABLE *.*;

        Se debe agregar INITIALLOADOPTIONS para garantizar una instantánea coherente de la base de datos después de que finalice la extracción de carga inicial junto con el número de LSN.

      3. Seleccione Crear y ejecutar.
      4. Supervise el proceso hasta que finalice y, a continuación, compruebe el número de LSN en el archivo de informe. Registre el número de LSN para uso futuro.
  6. Agregar otra extracción al despliegue. Esta vez, seleccione Cambiar extracción de captura de datos (CDC) como tipo de extracción.
    1. En Iniciar, seleccione Ninguno.
    2. Proporcione un nombre de pista, por ejemplo, yy.
    3. En la página Archivo de parámetros, asegúrese de que se incluyen los siguientes elementos en el archivo:

      exttrail yy
      TABLE public.*;

      Se debe agregar INITIALLOADOPTIONS para garantizar una instantánea coherente de la base de datos después de que finalice la extracción de carga inicial junto con el número de LSN.

    4. Seleccione Crear. No ejecute aún la extracción.
    5. En la página de despliegue, en el menú Acción del nuevo CDC, seleccione Iniciar con Opción.
    6. En Punto de inicio, seleccione En CSN.
    7. En CSN, introduzca el número de LSN de la extracción inicial y seleccione Iniciar. Las transacciones de la base de datos de origen se capturarán y se mostrarán en el separador Estadísticas del extracto de CDC.
    Nota

    Hasta ahora, solo hemos estado trabajando con la base de datos de origen. El inicio del Extract de carga inicial y CDC registra los cambios en el origen de los archivos de pista correspondientes en el despliegue. El proceso Replicat entrega los datos de estos archivos de pista al sistema de base de datos de OCI Database with PostgreSQL de destino.
  7. Adición de un Replicat para PostgreSQL al despliegue. Este Replicat es para el Extract de Carga Inicial (REINI).
    1. Cree una tabla de puntos de comprobación. Para obtener más información, consulte Adición de una replicación para PostgreSQL: antes de empezar.
    2. Al crear el Replicat, proporcione el nombre de pista desde el INI, por ejemplo, xx.
    3. Proporcione la tabla de puntos de control para el Replicat.
    4. En la página Archivo de parámetros, asegúrese de que en el archivo se incluya algo como lo siguiente:

      MAP public.* TARGET public.*;
    5. Seleccione Crear y ejecutar. Verifique que los datos se han iniciado la carga en el sistema de base de datos de OCI Database with PostgreSQL.
  8. Adición de un Replicat para PostgreSQL al despliegue. Este Replicat es para la extracción de captura de datos de cambio (RECDC).
    1. Al crear el Replicat, proporcione el nombre de pista desde el CDC, por ejemplo, yy.
    2. Proporcione la tabla de puntos de control para el Replicat.
    3. En la página Archivo de parámetros, asegúrese de que en el archivo se incluya algo como lo siguiente:

      MAP public.* TARGET public.*;
    4. Seleccione Crear. No ejecute RECDC hasta que se complete REINI. GoldenGate debe tener dos procesos Extract y dos procesos Replicat.
    5. En la página de despliegue, en el menú Acción del nuevo RECDC, seleccione Iniciar.
  9. Compruebe el estado en el sistema de base de datos de OCI Database with PostgreSQL de destino y haga coincidir los recuentos y valores de registros.