PostgreSQL en Amazon RDS - Amazon Relational Database Service

PostgreSQL en Amazon RDS

Amazon RDS admite instancias de base de datos que ejecutan varias versiones de PostgreSQL. Para obtener una lista de las versiones disponibles, consulte Versiones de base de datos de PostgreSQL disponibles.

nota

Se prevé que para el 26 de abril de 2022 quede obsoleta la versión 9.6 de PostgreSQL. Para obtener más información, consulte La versión 9.6 de PostgreSQL queda obsoleta.

Puede crear instancias de base de datos e instantáneas de base de datos, restauraciones de un momento dado y backups. Las instancias de base de datos en las que se ejecuta PostgreSQL admiten implementaciones Multi-AZ, réplicas de lectura, IOPS aprovisionadas y se pueden crear dentro de una nube virtual privada (VPC). También puede utilizar la Capa de conexión segura (SSL) para conectarse a una instancia de base de datos en la que se ejecuta PostgreSQL.

Antes de crear una instancia de base de datos, debe completar los pasos que se describen en Configuración de Amazon RDS.

Puede usar cualquier aplicación cliente de SQL estándar para ejecutar comandos para la instancia desde su equipo cliente. Entre estas aplicaciones se incluyen pgAdmin, una conocida herramienta de administración y desarrollo de código abierto para PostgreSQL, o psql, una utilidad de línea de comando que forma parte de una instalación de PostgreSQL. Para ofrecer una experiencia de servicio administrado, Amazon RDS no proporciona acceso de host a las instancias de base de datos. También restringe el acceso a ciertos procedimientos y tablas del sistema que requieren privilegios avanzados. Amazon RDS permite el acceso a las bases de datos de una instancia de base de datos usando cualquier aplicación cliente de SQL estándar. Amazon RDS no permite el acceso directo de anfitrión a una instancia de base de datos mediante Telnet o Secure Shell (SSH).

Amazon RDS para PostgreSQL cumple muchos estándares del sector. Por ejemplo, puede utilizar las bases de datos de Amazon RDS para PostgreSQL para crear aplicaciones conformes con HIPAA y para almacenar información relacionada con la sanidad. Esto incluye el almacenamiento de información sanitaria protegida (PHI) en virtud de un Contrato de asociación empresarial (BAA) completado con AWS. Amazon RDS para PostgreSQL también cumple con los requisitos de seguridad del Programa federal de administración de riesgos y autorizaciones (FedRAMP). Amazon RDS para PostgreSQL ha recibido una autorización provisional para operar (P-ATO) de la Junta de Autorización Conjunta (JAB) de FedRAMP en la referencia FedRAMP HIGH dentro de las regiones de AWS GovCloud (US). Para obtener más información acerca de los estándares de conformidad admitidos, consulte Conformidad en la nube de AWS.

Para importar los datos de PostgreSQL en una instancia de base de datos, siga el procedimiento que se describe en la sección Importación de datos en PostgreSQL en Amazon RDS.

Tareas de administración comunes de Amazon RDS para PostgreSQL

A continuación se detallan las tareas de administración frecuentes que se realizan para una instancia de base de datos de Amazon RDS para PostgreSQL, con enlaces a la documentación relativa a cada tarea.

Área de la tarea Documentación relacionada

Configuración de Amazon RDS para el primer uso

Debe completar algunos requisitos previos antes de crear su instancia de base de datos. Por ejemplo, las instancias de base de datos se crean de manera predeterminada con un firewall que impide el acceso. Debe crear un grupo de seguridad con las direcciones IP y la configuración de red correctas para tener acceso a la instancia de base de datos.

Configuración de Amazon RDS

Descripción de las instancias de base de datos de Amazon RDS

Si va a crear una instancia de base de datos con fines de producción, debe entender cómo funcionan en Amazon RDS las clases de instancia, los tipos de almacenamiento y las IOPS provisionadas.

Clases de instancia de base de datos

Tipos de almacenamiento de Amazon RDS

Almacenamiento de SSD de IOPS aprovisionadas

Búsqueda de versiones disponibles de PostgreSQL

Amazon RDS admite varias versiones de PostgreSQL.

Versiones de base de datos de PostgreSQL disponibles

Configuración de la compatibilidad con alta disponibilidad y conmutación por error

Una instancia de base de datos de producción debe usar implementaciones Multi-AZ. Las implementaciones Multi-AZ proporcionan unos niveles superiores de disponibilidad, durabilidad de los datos y tolerancia a errores para las instancias de base de datos.

Implementaciones Multi-AZ para alta disponibilidad

Descripción de la red de Amazon Virtual Private Cloud (VPC)

Si su cuenta de AWS tiene una VPC predeterminada, la instancia de base de datos se creará automáticamente dentro de la VPC predeterminada. En algunos casos, su cuenta podría no tener una VPC predeterminada y es posible que quiera la instancia de base de datos en una VPC. En estos casos, cree los grupos de VPC y de subred antes de crear la instancia de base de datos.

Describe cómo determinar si se está utilizando la plataforma EC2-VPC o EC2-Classic.

Uso de una instancia de base de datos en una VPC

Importación de datos en PostgreSQL en Amazon RDS

Puede usar varias herramientas diferentes para importar datos en su instancia de base de datos PostgreSQL en Amazon RDS.

Importación de datos en PostgreSQL en Amazon RDS

Configuración de réplicas de solo lectura (principales y en espera)

RDS for PostgreSQL admite réplicas de lectura en la misma región de AWS y en una región de AWS distinta a la de la instancia principal.

Trabajo con réplicas de lectura

Uso de réplicas de lectura para Amazon RDS para PostgreSQL

Creación de una réplica de lectura en una Región de AWS distinta

Descripción de los grupos de seguridad

De manera predeterminada, las instancias de base de datos se crean con un firewall que impide el acceso a ellas. Para proporcionar acceso a través de ese firewall, edite las reglas de entrada para el grupo de seguridad asociado a la VPC que aloja la instancia de base de datos.

Por norma general, si su instancia de base de datos se encuentra en la plataforma EC2-Classic, debe crear un grupo de seguridad de base de datos. Si su instancia de base de datos se encuentra en la plataforma EC2-VPC, debe crear un grupo de seguridad de VPC.

Describe cómo determinar si se está utilizando la plataforma EC2-VPC o EC2-Classic.

Control de acceso con grupos de seguridad

Configuración de grupo de parámetros y características

Para cambiar los parámetros predeterminados de la instancia de base de datos, cree un grupo de parámetros de base de datos personalizado y cambie la configuración en él. Si lo hace antes de crear la instancia de base de datos, puede elegir su grupo de parámetros de base de datos personalizado cuando crea la instancia.

Trabajo con los grupos de parámetros

Conexión a la instancia de base de datos PostgreSQL

Después de crear un grupo de seguridad y de asociarlo a una instancia de base de datos, puede conectarse a la instancia de base de datos usando cualquier aplicación cliente estándar de SQL, como psql o pgAdmin.

Conexión a una instancia de base de datos que ejecuta el motor de base de datos de PostgreSQL

Uso de SSL con una instancia de base de datos PostgreSQL

Backup y restauración de una instancia de base de datos

Puede configurar su instancia de base de datos para que realice backups automatizados o tomar snapshots manuales y restaurar después las instancias a partir de los backups o los snapshots.

Copia de seguridad y restauración de una instancia de base de datos de Amazon RDS

Monitorización de la actividad y el desempeño de una instancia de base de datos

Puede monitorizar una instancia de base de datos PostgreSQL utilizando métricas, eventos y monitorización avanzada de CloudWatch Amazon RDS.

Consulta de métricas en la consola de Amazon RDS

Consulta de eventos de Amazon RDS

Actualización de la versión de la base de datos de PostgreSQL

Puede realizar actualizaciones principales y secundarias de su instancia de base de datos PostgreSQL.

Actualización del motor de base de datos de PostgreSQL para Amazon RDS

Elección de una actualización de versión principal para PostgreSQL

Trabajo con archivos de registro

Puede obtener acceso a los archivos de registro de su instancia de base de datos PostgreSQL.

Archivos de registro de base de datos de PostgreSQL

Descripción de las prácticas recomendadas para las instancias de base de datos de PostgreSQL

Consulte algunas de las prácticas recomendadas para trabajar con PostgreSQL en Amazon RDS.

Prácticas recomendadas para trabajar con PostgreSQL

A continuación, se presenta una lista de otras secciones de esta guía que pueden ser útiles para comprender y utilizar las características importantes de RDS for PostgreSQL:

Trabajo con el entorno de vista previa de base de datos

Cuando se crea una instancia de base de datos en Amazon RDS, sabe que la versión de PostgreSQL en la que se basa se ha probado y es totalmente compatible con Amazon. La comunidad de PostgreSQL lanza nuevas versiones y nuevas extensiones continuamente. Puede probar versiones y extensiones nuevas de PostgreSQL antes de que sean totalmente compatibles. Para ello, puede crear una nueva instancia de base de datos en el entorno de vista previa de base de datos.

Las instancias de base de datos en el entorno de vista previa de base de datos son similares a las instancias de base de datos en un entorno de producción. Sin embargo, tenga en cuenta varios factores importantes:

  • Todas las instancias de base de datos se eliminan 60 días después de crearlas, junto con las copias de seguridad e instantáneas.

  • Solo puede crear una instancia de base de datos en una Virtual Private Cloud (VPC) en función del servicio de Amazon VPC.

  • Solo puede crear tipos de instancias M6g, M5, T3, R6g y R5. Para obtener más información sobre las clases de instancias de RDS, consulte Clases de instancia de base de datos .

  • Solo puede utilizar almacenamiento SSD de uso general y SSD IOPS provisionadas.

  • No puede obtener ayuda de AWS Support con instancias de base de datos. En su lugar, puede publicar sus preguntas en la comunidad de preguntas y respuestas administrada de AWS, AWSre:Post.

  • No puede copiar una instantánea de una instancia de base de datos en un entorno de producción.

  • Puede utilizar implementaciones Single-AZ y Multi-AZ.

  • Puede utilizar las funciones estándar de volcado y carga de PostgreSQL para exportar bases de datos desde o importar bases de datos hacia el entorno de la vista previa de base de datos.

Las características no se admiten en el entorno de vista previa

Las siguientes características no están disponibles en el entorno de vista previa:

  • Copia de instantáneas entre regiones

  • Réplicas de lectura entre regiones

Creación de una nueva instancia de base de datos en el entorno de vista previa

Utilice el procedimiento siguiente para crear una instancia de base de datos en el entorno de vista previa.

Para crear una instancia de base de datos en el entorno de vista previa

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. Elija Dashboard (Panel) en el panel de navegación.

  3. Elija Switch to database preview environment (Cambiar a entorno de vista previa de base de datos).

    
                            Cuadro de diálogo para seleccionar el entorno de vista previa

    También puede navegar directamente al Entorno de vista previa de base de datos.

    nota

    Si desea crear una instancia en el Entorno de vista previa de base de datos con la API o la CLI, el punto de enlace es rds-preview.us-east-2.amazonaws.com.

  4. Continúe con el procedimiento tal como se describe en Consola.

Limitaciones para instancias de base de datos PostgreSQL

La siguiente es una lista de limitaciones para RDS for PostgreSQL:

  • Puede tener hasta 40 instancias de base de datos de PostgreSQL.

  • Para ver los límites de almacenamiento, consulte Almacenamiento de instancias de base de datos de Amazon RDS.

  • Amazon RDS se reserva hasta 3 conexiones para el mantenimiento del sistema. Si especifica un valor para el parámetro de conexiones del usuario, sume 3 a la cantidad de conexiones que espera usar.

Versiones de base de datos de PostgreSQL disponibles

Amazon RDS admite instancias de base de datos que ejecutan varias ediciones de PostgreSQL. Puede especificar cualquier versión disponible actualmente de PostgreSQL cuando crea una nueva instancia de base de datos. Puede especificar la versión principal (como PostgreSQL 10) y cualquier versión secundaria disponible para la versión principal especificada. Si no se especifica ninguna versión, Amazon RDS cambia de forma predeterminada a una versión disponible, normalmente la más reciente. Si se especifica una versión principal pero no una versión secundaria, Amazon RDS usa de manera predeterminada una versión reciente de la versión principal especificada.

Para ver una lista de las versiones disponibles, así como de las versiones predeterminadas para instancias de bases de datos recién creadas, utilice el comando describe-db-engine-versions de la AWS CLI. Por ejemplo, para mostrar la versión predeterminada del motor PostgreSQL, utilice el siguiente comando:

aws rds describe-db-engine-versions --default-only --engine postgres

Para obtener más información sobre las versiones de PostgreSQL compatibles con Amazon RDS, consulte las notas de la versión de Amazon RDS para PostgreSQL.

La versión 9.6 de PostgreSQL queda obsoleta

El 31 de marzo de 2022, Amazon RDS tiene previsto dar de baja PostgreSQL 9.6 conforme a la siguiente programación. Esto amplía la fecha previamente anunciada del 18 de enero de 2022 al 26 de abril de 2022. Se recomienda actualizar todas las instancias de base de datos PostgreSQL 9.6 a PostgreSQL 12 o posterior lo antes posible. Le recomendamos que primero actualice a la versión inferior 9.6.20 o posterior y luego actualice directamente a PostgreSQL 12 en lugar de actualizar a una versión posterior intermedia. Para obtener más información, consulte Actualización del motor de base de datos de PostgreSQL para Amazon RDS.

Acción o recomendación Fechas

La comunidad de PostgreSQL dejó de dar soporte a PostgreSQL 9.6 y ya no proporcionará correcciones de errores ni revisiones de seguridad para esta versión.

11 de noviembre de 2021

Comience a actualizar las instancias de base de datos de RDS for PostgreSQL 9.6 a PostgreSQL 12 o posterior lo antes posible. Aunque puede continuar con la restauración de instantáneas de PostgreSQL 9.6 y la creación de réplicas de lectura con la versión 9.6, tenga en cuenta las otras fechas importantes en este calendario de bajas y su impacto

Ahora: 31 de marzo de 2022

Después de esta fecha, no podrá crear nuevas instancias de Amazon RDS con la versión principal 9.6 de PostgreSQL ni desde AWS Management Console o la AWS CLI.

31 de marzo de 2022

Amazon RDS actualiza automáticamente las instancias de PostgreSQL 9.6 a la versión 12. Si restaura una instantánea de base de datos PostgreSQL 9.6, Amazon RDS actualiza automáticamente la base de datos restaurada a PostgreSQL 12.

26 de abril de 2022

Versiones obsoleta para Amazon RDS for PostgreSQL

RDS for PostgreSQL 9.5 quedará obsoleto a partir de marzo de 2021. Para obtener más información sobre la obsolescencia de RDS for PostgreSQL 9.5, consulte Upgrading from Amazon RDS for PostgreSQL version 9.5 (Actualización de la versión 9.5 de Amazon RDS para PostgreSQL).

Para obtener más información sobre la política de obsolescencia de RDS for PostgreSQL, consulte Preguntas frecuentes de Amazon RDS Para obtener más información sobre las versiones de PostgreSQL, consulte Política de control de versiones en la documentación de PostgreSQL.

Versiones de extensiones de PostgreSQL compatibles

RDS for PostgreSQL admite muchas extensiones de PostgreSQL. La comunidad de PostgreSQL a veces se refiere a estos como módulos. Las extensiones amplían la funcionalidad proporcionada por el motor PostgreSQL. Puede encontrar una lista de las extensiones admitidas por Amazon RDS en el grupo de parámetros de base de datos predeterminado de esa versión de PostgreSQL. También puede ver la lista de extensiones actuales que usan psql mostrando el parámetro rds.extensions como en el siguiente ejemplo.

SHOW rds.extensions;
nota

Los parámetros añadidos en una versión secundaria pueden mostrarse de manera incorrecta cuando se utiliza el parámetro rds.extensions en psql.

Para ver información detallada acerca de las extensiones de PostgreSQL compatibles con Amazon RDS, consulte Extensiones de PostgreSQL admitidas en Amazon RDS en las notas de la versión de Amazon RDS para PostgreSQL.

Restringir la instalación de extensiones de PostgreSQL

Puede restringir qué extensiones se pueden instalar en una instancia de base de datos de PostgreSQL. Para ello, establezca el parámetro rds.allowed_extensions en una cadena de nombres de extensión separados por comas. Solo estas extensiones se pueden instalar en la instancia de base de datos de PostgreSQL.

La cadena predeterminada para el parámetro rds.allowed_extensions es '*', lo que significa que se puede instalar cualquier extensión disponible para la versión del motor. Cambiar el parámetro rds.allowed_extensions no requiere un reinicio de la base de datos porque es un parámetro dinámico.

El motor de instancia de base de datos de PostgreSQL debe ser una de las siguientes versiones para que pueda utilizar el parámetro rds.allowed_extensions:

  • PostgreSQL 14.1 o una versión menor posterior

  • PostgreSQL 13.2 o una versión menor posterior

  • PostgreSQL 12.6 o una versión menor posterior

Para ver qué instalaciones de extensión están permitidas, utilice el siguiente comando psql.

postgres=> SHOW rds.allowed_extensions; rds.allowed_extensions ------------------------ *

Si se instaló una extensión antes de dejarla fuera de la lista en el parámetro rds.allowed_extensions, la extensión todavía se puede utilizar normalmente y comandos como ALTER EXTENSION y DROP EXTENSION continuarán funcionando. Sin embargo, una vez restringida una extensión, los comandos CREATE EXTENSION de la extensión restringida fallarán.

La instalación de dependencias de extensión con CREATE EXTENSION CASCADE también están restringidas. La extensión y sus dependencias deben especificarse en rds.allowed_extensions. Si falla una instalación de dependencia de extensión, se producirá un error en toda la instrucción CREATE EXTENSION CASCADE.

Si no se incluye una extensión con el parámetro rds.allowed_extensions, verá un error como el siguiente si intenta instalarla.

ERROR: permission denied to create extension "extension-name" HINT: This extension is not specified in "rds.allowed_extensions".

Extensiones de confianza de PostgreSQL

Para instalar la mayoría de las extensiones de PostgreSQL requiere privilegios de rds_superuser. PostgreSQL 13 presentó extensiones de confianza, que reducen la necesidad de conceder privilegios rds_superuser a los usuarios normales. Con esta característica, los usuarios pueden instalar muchas extensiones si tienen el privilegio de CREATE en la base de datos actual en lugar de requerir el rol de rds_superuser. Para obtener más información, consulte el comando de SQL CREATE EXTENSION en la documentación de PostgreSQL.

A continuación se enumeran las extensiones que puede instalar un usuario que tiene el privilegio de CREATE en la base de datos actual y no requieren el rol de rds_superuser:

Uso de las características de PostgreSQL admitidas por Amazon RDS para PostgreSQL

Amazon RDS para PostgreSQL admite muchas de las características más comunes de PostgreSQL y varias funcionalidades comunes. Por ejemplo, PostgreSQL tiene una característica de autovacuum que realiza un mantenimiento rutinario de la base de datos. Esta característica está activa de forma predeterminada. Aunque puede desactivar esta característica, le recomendamos encarecidamente que la mantenga activada. Comprender esta característica y lo que puede hacer para asegurarse de que funciona como debería es una tarea básica de cualquier DBA. Para obtener más información sobre el autovacuum, consulte Uso de autovacuum de PostgreSQL en Amazon RDS for PostgreSQL. Para obtener más información sobre otras tareas comunes de DBA, consulte Tareas comunes de los administradores de base de datos (DBA) para Amazon RDS para PostgreSQL.

RDS for PostgreSQL también admite extensiones que agregan funcionalidades importantes a la instancia de base de datos. Por ejemplo, puede utilizar la extensión PostGIS para trabajar con datos espaciales o utilizar la extensión pg_cron para programar el mantenimiento desde la instancia. Para obtener más información sobre las extensiones de PostgreSQL, consulte Uso de extensiones PostgreSQL con Amazon RDS para PostgreSQL.

Los contenedores de datos externos son un tipo específico de extensión diseñada para permitir que la instancia de base de datos de RDS for PostgreSQL funcione con otros tipos de datos o bases de datos comerciales. Para obtener más información sobre los contenedores de datos externos admitidos por RDS for PostgreSQL, consulte Uso de los contenedores de datos externos compatibles para Amazon RDS for PostgreSQL.

A continuación, encontrará información sobre algunas características de PostgreSQL admitidas por RDS for PostgreSQL.

Tipos de datos personalizados y enumeraciones con RDS for PostgreSQL

PostgreSQL admite la creación de tipos de datos personalizados y el trabajo con enumeraciones. Para obtener más información sobre cómo crear y trabajar con enumeraciones y otros tipos de datos, consulte Tipos enumerados en la documentación de PostgreSQL.

El siguiente es un ejemplo de creación de un tipo como enumeración seguida de la inserción de valores en una tabla.

CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); CREATE TYPE CREATE TABLE t1 (colors rainbow); CREATE TABLE INSERT INTO t1 VALUES ('red'), ( 'orange'); INSERT 0 2 SELECT * from t1; colors -------- red orange (2 rows) postgres=> ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson'; ALTER TYPE postgres=> SELECT * from t1; colors --------- crimson orange (2 rows)

Desencadenadores de eventos para RDS for PostgreSQL

Todas las versiones actuales de PostgreSQL admiten desencadenadores de eventos, al igual que todas las versiones disponibles de RDS for PostgreSQL. Puede utilizar la cuenta de usuario principal (postgres, predeterminada) para crear, modificar, renombrar y eliminar desencadenadores de eventos. Los disparadores de eventos están en el nivel de la instancia de base de datos, de modo que se pueden aplicar a todas las bases de datos de una instancia.

Por ejemplo, el siguiente código crea un desencadenador de evento que imprime el usuario actual al final de cada comando de lenguaje de definición de datos (DDL).

CREATE OR REPLACE FUNCTION raise_notice_func() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'In trigger function: %', current_user; END; $$; CREATE EVENT TRIGGER event_trigger_1 ON ddl_command_end EXECUTE PROCEDURE raise_notice_func();

Para obtener más información acerca de los desencadenadores de eventos de PostgreSQL, consulte Desencadenadores de eventos en la documentación de PostgreSQL.

Hay varias limitaciones que afectan al uso de los disparadores de eventos de PostgreSQL en Amazon RDS. Esto incluye lo siguiente:

  • No puede crear desencadenadores de eventos en réplicas de lectura. Puede, no obstante, crear desencadenadores de eventos en un origen de réplica de lectura. Los disparadores de eventos se copian a continuación en la réplica de lectura. Los desencadenadores de eventos en la réplica de lectura no se activan en la réplica de lectura cuando los cambios se envían desde el origen. No obstante, si se promueve la réplica de lectura, los disparadores de eventos existentes se activarán cuando se produzcan operaciones en la base de datos.

  • Para realizar una actualización de versión principal en una instancia de base de datos de PostgreSQL que use desencadenadores de eventos, debe eliminar los desencadenadores de eventos antes de actualizar la instancia.

Páginas enormes para RDS for PostgreSQL

Las páginas enormes son una característica de administración de la memoria que reduce la sobrecarga cuando una instancia de base de datos trabaja con grandes fragmentos contiguos de memoria, como la utilizada por los búferes compartidos. Esta característica de PostgreSQL es compatible con todas las versiones de RDS for PostgreSQL disponibles actualmente. Las páginas de gran tamaño se asignan a la aplicación con llamadas a la memoria compartida de mmap o SYSV. RDS for PostgreSQL admite tamaños de página de 4 KB y 2 MB.

Puede activar o desactivar las páginas enormes cambiando el valor del parámetro huge_pages. La característica está habilitada de forma predeterminada para todas las clases de instancias de base de datos que no sean de la clase de instancia de base de datos micro, pequeña y mediana.

nota

Las páginas enormes no son compatibles con las clases de instancia de base de datos db.m1, db.m2 y db.m3.

RDS for PostgreSQL utiliza páginas enormes en función de la memoria compartida disponible. Si la instancia de base de datos no puede usar páginas de gran tamaño a causa de las restricciones de la memoria compartida, Amazon RDS impide que la instancia de base de datos se inicie. En este caso, Amazon RDS define el estado de la instancia de base de datos en un estado de los parámetros no compatible. En este caso, puede establecer el parámetro huge_pages en off para permitir que Amazon RDS inicie la instancia de base de datos.

El parámetro shared_buffers es esencial para configurar el grupo de memoria compartida que se requiere para usar las páginas enormes. El valor predeterminado del parámetro shared_buffers utiliza una macro de parámetros de base de datos. Esta macro define un porcentaje del total de las páginas de 8 KB disponibles para la memoria de la instancia de base de datos. Cuando utiliza páginas de gran tamaño, esas páginas se asignan con las páginas de gran tamaño. Amazon RDS cambia una instancia de base de datos a un estado de parámetros incompatible si los parámetros de memoria compartida se han definido de un modo que requiere más del 90 % de la memoria de la instancia de base de datos.

Para obtener más información sobre la administración de memoria de PostgreSQL, consulte Consumo de recursos en la documentación de PostgreSQL.

Replicación lógica para Amazon RDS para PostgreSQL

A partir de la versión 10.4, Amazon RDS para PostgreSQL admite la sintaxis SQL de publicación y suscripción presentada primero en PostgreSQL 10. Para obtener más información, consulte Replicación lógica en la documentación de PostgreSQL.

A continuación encontrará información sobre la configuración de la replicación lógica para una instancia de base de datos de RDS for PostgreSQL.

Comprensión de la replicación lógica y la descodificación lógica

RDS for PostgreSQL admite el streaming de los cambios del registro de escritura anticipada (WAL) mediante las ranuras de replicación lógica de PostgreSQL. También admite el uso de decodificación lógica. Puede configurar ranuras de replicación lógica en su instancia y transmitir los cambios de la base de datos a través de estas ranuras a un cliente como pg_recvlogical. Las ranuras de replicación lógica se crean a nivel de la base de datos y admiten conexiones de replicación a una única base de datos.

Los clientes más comunes para la replicación lógica de PostgreSQL son AWS Database Migration Service o un host administrado personalizado en una instancia de Amazon EC2. La ranura de replicación lógica no tiene información sobre el receptor de la transmisión. Además, no existe el requisito de que el destino sea una base de datos de réplica. Si configura una ranura de replicación lógica y no lee desde la ranura, los datos podrían escribirse y rellenarse rápidamente en el almacenamiento de la instancia de base de datos.

La replicación y descodificación lógicas de PostgreSQL en Amazon RDS se activan con un parámetro, un tipo de conexión de replicación y un rol de seguridad. El cliente para la descodificación lógica puede ser cualquier cliente que sea capaz de establecer una conexión de replicación con una base de datos en una instancia de base de datos PostgreSQL.

Para activar la descodificación lógica para una instancia de base de datos de RDS for PostgreSQL

  1. Asegúrese de que la cuenta de usuario que está utilizando tenga los siguientes roles:

    • El rol rds_superuser para poder activar la replicación lógica

    • El rol rds_replication para conceder permisos para administrar ranuras lógicas y para transmitir datos mediante ranuras lógicas

  2. Establezca el parámetro estático rds.logical_replication en 1. Como parte de la aplicación de este parámetro, también defina los parámetros wal_level, max_wal_senders, max_replication_slots y max_connections. Estos cambios de parámetro pueden incrementar la generación de WAL, por lo que el parámetro rds.logical_replication se debe configurar solo cuando se utilicen ranuras lógicas.

  3. Reinicie la instancia de base de datos para que el parámetro rds.logical_replication estático tenga efecto.

  4. Cree una ranura de replicación lógica como se indica en la siguiente sección. Este proceso necesita que especifique un complemento de descodificación. Actualmente, RDS for PostgreSQL admite los complementos de salida test_decoding y wal2json que se incluyen con PostgreSQL.

Para obtener más información acerca de la descodificación lógica de PostgreSQL, consulte la documentación de PostgreSQL.

Trabajo con ranuras de replicación lógica

Puede usar comandos de SQL para trabajar con las ranuras lógicas. Por ejemplo, el siguiente comando crea una ranura lógica denominada test_slot usando el complemento de salida predeterminado de PostgreSQL test_decoding.

SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding'); slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)

Para ver las ranuras lógicas, use el siguiente comando.

SELECT * FROM pg_replication_slots;

Para eliminar una ranura lógica, use el siguiente comando.

SELECT pg_drop_replication_slot('test_slot'); pg_drop_replication_slot ----------------------- (1 row)

Para ver más ejemplos del trabajo con ranuras de replicación lógica, consulte Logical Decoding Examples en la documentación de PostgreSQL.

Luego de crear la ranura de replicación lógica, se puede iniciar el streaming. El siguiente ejemplo muestra cómo se controla la decodificación lógica a través del protocolo de replicación del streaming. Este ejemplo utiliza el programa pg_recvlogical, que se incluye en la distribución de PostgreSQL. Esto requiere que la autenticación del cliente se configure para permitir las conexiones de replicación.

pg_recvlogical -d postgres --slot test_slot -U postgres --host -instance-name.111122223333.aws-region.rds.amazonaws.com -f - --start

Para ver el contenido de la vista pg_replication_origin_status, consulte la función pg_show_replication_origin_status.

SELECT * FROM pg_show_replication_origin_status(); local_id | external_id | remote_lsn | local_lsn ----------+-------------+------------+----------- (0 rows)

Disco RAM para stats_temp_directory

Puede utilizar el parámetro rds.pg_stat_ramdisk_size de RDS for PostgreSQL para especificar la memoria del sistema asignada a un disco RAM para almacenar el stats_temp_directory de PostgreSQL. El parámetro del disco RAM está disponible para todas las versiones de PostgreSQL en Amazon RDS.

Para algunas cargas de trabajo, configurar este parámetro puede mejorar el rendimiento y reducir los requisitos de E/S. Para obtener más información acerca de stats_temp_directory, consulte la documentación de PostgreSQL..

Para configurar un disco RAM para stats_temp_directory, configure el parámetro rds.pg_stat_ramdisk_size en un valor literal entero en el grupo de parámetros utilizado por la instancia de base de datos. Este parámetro indica MB, por lo que debe utilizar un valor entero. Las expresiones, fórmulas y funciones no son válidas para el parámetro rds.pg_stat_ramdisk_size. Asegúrese de reiniciar la instancia de base de datos para que el cambio surta efecto. Para obtener información acerca de cómo configurar los parámetros, consulte Trabajo con los grupos de parámetros.

Por ejemplo, el comando de la AWS CLI siguiente establece el parámetro del disco RAM en 256 MB.

aws rds modify-db-parameter-group \ --db-parameter-group-name pg-95-ramdisk-testing \ --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"

Después de reiniciar, ejecute el siguiente comando para ver el estado de stats_temp_directory.

postgres=> SHOW stats_temp_directory;

El comando debe devolver lo siguiente.

stats_temp_directory --------------------------- /rdsdbramdisk/pg_stat_tmp (1 row)

Espacios de tablas para RDS for PostgreSQL

RDS for PostgreSQL es compatible con los espacios de tablas por razones de compatibilidad. Debido a que todo el almacenamiento se encuentra en un único volumen lógico, no puede usar espacios de tabla para la división o el aislamiento de la E/S. Nuestros puntos de referencia y experiencia indican que un único volumen lógico es la mejor configuración para la mayoría de los casos de uso.

Para crear y utilizar espacios de tablas con su instancia de base de datos RDS para PostgreSQL se requiere el rol de rds_superuser. La cuenta de usuario principal de su instancia de base de datos RDS para PostgreSQL (nombre predeterminado, postgres) es miembro de este rol. Para obtener más información, consulte Descripción de los roles y permisos de PostgreSQL.

Si especifica un nombre de archivo al crear un espacio de tabla, el prefijo de ruta es /rdsdbdata/db/base/tablespace. El siguiente ejemplo coloca los archivos de espacio de tabla en /rdsdbdata/db/base/tablespace/data. Este ejemplo asume que existe un usuario dbadmin (rol) y que se le otorgó el rol rds_superuser necesario para trabajar con espacios de tablas.

postgres=> CREATE TABLESPACE act_data OWNER dbadmin LOCATION '/data'; CREATE TABLESPACE

Para saber más sobre los espacios de tablas de PostgreSQL, consulte Espacios de tablas en la documentación de PostgreSQL.