Transporte de bases de datos de PostgreSQL entre instancias de base de datos - Amazon Relational Database Service

Transporte de bases de datos de PostgreSQL entre instancias de base de datos

Cuando utilice bases de datos transportables de PostgreSQL para Amazon RDS, puede trasladar una base de datos de PostgreSQL entre dos instancias de base de datos. Es una forma muy rápida de migrar bases de datos grandes entre distintas instancias de base de datos. Para utilizar este enfoque, ambas instancias de base de datos deben ejecutar la misma versión principal de PostgreSQL.

Esta capacidad requiere que instale la extensión pg_transport tanto en la instancia de base de datos de origen como en la de destino. La extensión pg_transport proporciona un mecanismo físico de transporte que traslada los archivos de base de datos con un procesamiento mínimo. Este mecanismo traslada los datos mucho más rápido que los procesos tradicionales de volcado y carga, con menos tiempo de inactividad.

nota

Las bases de datos transportables de PostgreSQL están disponibles para la versión 11.5 y las versiones posteriores de RDS for PostgreSQL, al igual que para la versión 10.10 y las versiones posteriores.

Para transportar una instancia de base de datos de PostgreSQL de una instancia de base de datos de RDS for PostgreSQL a otra, primero configure las instancias de origen y destino según se detalla en Configuración de una instancia de base de datos para transporte. A continuación, puede transportar la base de datos mediante la función descrita en Transporte de una base de datos de PostgreSQL.

Lo que ocurre durante el transporte de base de datos

La característica de bases de datos transportables de PostgreSQL utiliza un modelo de extracción para importar la base de datos de la instancia de base de datos de origen a la de destino. La función transport.import_from_server crea la base de datos en tránsito en la instancia de base de datos de destino. No se puede acceder a la base de datos en tránsito en la instancia de base de datos de destino mientras dura el transporte.

Cuando el transporte comienza, finalizan todas las sesiones actuales en la base de datos de origen. Cualquier base de datos distinta a la base de datos de origen en la instancia de base de datos de origen no se ve afectada por el transporte.

La base de datos de origen se pone en un modo de solo lectura especial. Mientras está en este modo, puede conectar a la base de datos de origen y ejecutar consultas de solo lectura. Sin embargo, las consultas habilitadas para escritura y algunos otros tipos de comandos están bloqueados. Solo la base de datos de origen específica que se transporta se ve afectada por estas restricciones.

Durante el transporte, no puede restaurar la instancia de base de datos de destino a un momento en el tiempo. Esto se debe a que el transporte no es transaccional y no utiliza el registro antes de la escritura de PostgreSQL para registrar cambios. Si la instancia de base de datos de destino tiene habilitadas las copias de seguridad automáticas, se realiza automáticamente una copia de seguridad una vez que se completa el transporte. Las restauraciones a un momento dado están disponibles para momentos después de que finalice la copia de seguridad.

Si el transporte devuelve un error, la extensión pg_transport intenta deshacer todos los cambios en las instancias de base de datos de origen y de destino. Esto incluye eliminar la base de datos transportada parcialmente del destino. En función del tipo de error, la base de datos de origen podría seguir rechazando consultas habilitadas para escritura. Si esto ocurre, utilice el comando siguiente para permitir consultas habilitadas para escritura.

ALTER DATABASE db-name SET default_transaction_read_only = false;

Limitaciones del uso de bases de datos transportables de PostgreSQL

Las bases de datos transportables tienen las limitaciones siguientes:

  • Réplicas de lectura: no puede utilizar bases de datos transportables en réplicas de lectura o instancias principales de réplicas de lectura.

  • Tipos de columna no admitidos: no puede usar los tipos de datos reg en las tablas de base de datos que tenga previsto transportar con este método. Estos tipos depende de los ID de objeto (OID) de catálogo del sistema, que suelen cambiar durante el transporte.

  • Espacios de tablas: todos los objetos de base de datos de origen deben estar en el espacio de tablas pg_default predeterminado.

  • Compatibilidad: tanto las instancias de base de datos de origen como destino deben ejecutar la misma versión principal de PostgreSQL.

  • Extensiones: la instancia de base de datos de origen solo puede tener la extensión pg_transport instalada.

  • Roles y ACL: los privilegios de acceso y base de datos de origen y la información de propiedad no se traslada a la base de datos de destino. Todos los objetos de base de datos los crea y son propiedad del usuario de destino local del transporte.

  • Transportes simultáneos: una única instancia de base de datos puede admitir hasta 32 transportes simultáneos, incluidas tanto las importaciones como las exportaciones, si los procesos de trabajo se han configurado correctamente.

  • Únicamente para instancias de bases de datos de RDS for PostgreSQL: las bases de datos transportables de PostgreSQL solo son compatibles en instancias de bases de datos de RDS for PostgreSQL. No puede usarlo con bases de datos locales o bases de datos que se ejecutan en Amazon EC2.