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.
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.
Temas
- Tareas de administración comunes de Amazon RDS para PostgreSQL
- Trabajo con el entorno de vista previa de base de datos
- Limitaciones para instancias de base de datos PostgreSQL
- Versiones de base de datos de PostgreSQL disponibles
- Versiones obsoleta para Amazon RDS for PostgreSQL
- Versiones de extensiones de PostgreSQL compatibles
- Conexión a una instancia de base de datos que ejecuta el motor de base de datos de PostgreSQL
- Protección de conexiones a RDS for PostgreSQL con SSL/TLS
- Uso de la autenticación Kerberos con Amazon RDS for PostgreSQL
- Uso de un servidor de DNS personalizado para el acceso a la red de salida.
- Actualización del motor de base de datos de PostgreSQL para Amazon RDS
- Actualización de una versión del motor de instantáneas de base de datos de PostgreSQL
- Uso de réplicas de lectura para Amazon RDS para PostgreSQL
- Importación de datos en PostgreSQL en Amazon RDS
- Exportación de datos de una de Amazon S3
- Invocar una función de AWS Lambda desde una instancia de base de datos de RDS for PostgreSQL
- Uso de las características de PostgreSQL admitidas por Amazon RDS para PostgreSQL
- Tareas comunes de los administradores de base de datos (DBA) para Amazon RDS para PostgreSQL
- Uso de extensiones PostgreSQL con Amazon RDS para PostgreSQL
- Uso de los contenedores de datos externos compatibles para Amazon RDS for PostgreSQL
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. |
|
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 |
Búsqueda de versiones disponibles de PostgreSQL Amazon RDS admite varias versiones de PostgreSQL. |
|
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. |
|
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. |
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. |
|
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. |
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. |
|
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 |
Conexión a una instancia de base de datos que ejecuta el motor de base de datos de 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. |
|
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. |
|
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. |
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:
-
Control del acceso de los usuarios a la base de datos de PostgreSQL
-
Uso de parámetros en su instancia de base de datos de RDS for PostgreSQL
-
Comprensión de los mecanismos de registro admitidos por RDS for PostgreSQL
Uso de autovacuum de PostgreSQL en Amazon RDS for PostgreSQL
-
Uso de un servidor de DNS personalizado para el acceso a la red de salida.
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.
Temas
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
Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/
. -
Elija Dashboard (Panel) en el panel de navegación.
-
Elija Switch to database preview environment (Cambiar a entorno de vista previa de base de datos).
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
. -
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
Para obtener más información sobre la política de obsolescencia de RDS for PostgreSQL, consulte Preguntas frecuentes de Amazon RDS
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;
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.
Contenido
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
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
:
-
bool_plperl
-
jsonb_plperl
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.
Temas
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
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
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.
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
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
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.
Temas
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
-
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
-
-
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ámetroswal_level
,max_wal_senders
,max_replication_slots
ymax_connections
. Estos cambios de parámetro pueden incrementar la generación de WAL, por lo que el parámetrords.logical_replication
se debe configurar solo cuando se utilicen ranuras lógicas. -
Reinicie la instancia de base de datos para que el parámetro
rds.logical_replication
estático tenga efecto. -
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
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