Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-06-06 GMT+08:00

Sugerencias de uso de instancias

Conexión de base de datos

RDS for PostgreSQL utiliza una arquitectura de procesos, proporcionando un proceso de servicio backend para cada conexión de cliente.

  • Establezca max_connections en función del tipo de aplicación. Utilice la configuración de parámetros proporcionada en pgtune como ejemplos:
    • Establezca max_connections en 200 para aplicaciones web.
    • Establezca max_connections en 300 para aplicaciones OLTP.
    • Establezca max_connections en 40 para los almacenes de datos.
    • Establezca max_connections en 20 para aplicaciones de escritorio.
    • Establezca max_connections en 100 para aplicaciones híbridas.
  • Limite el número máximo de conexiones permitidas para un solo usuario en función de los requisitos de la carga de trabajo.
    ALTER ROLE xxx CONNECTION LIMIT xxx;
  • Establezca el número de conexiones activas en dos o tres veces el número de vCPU.
  • Evite transacciones largas, que pueden bloquear el vacío automático y afectar el rendimiento de la base de datos.
  • Libere conexiones persistentes periódicamente porque mantener conexiones persistentes puede generar gran caché y causar un alto consumo de memoria.
  • Compruebe el marco de la aplicación para evitar que la aplicación inicie automáticamente transacciones sin realizar ninguna operación.

Réplicas de lectura

  • Evite transacciones largas, que pueden causar conflictos de consulta y afectar a la reproducción.
  • Configure hot_standby_feedback para instancias que requieran datos en tiempo real y establezca max_standby_streaming_delay en un valor adecuado.
  • Supervise las transacciones largas, las conexiones largas y el retraso en la replicación y aborde todos los problemas de manera oportuna.
  • Asegúrese de que las aplicaciones conectadas a una réplica de lectura puedan cambiarse a otros nodos, ya que las réplicas de lectura son instancias de un solo nodo que no pueden proporcionar alta disponibilidad.

Confiabilidad y Disponibilidad

  • Seleccione instancias de base de datos primarias/en espera para bases de datos de producción.
  • Mantenga el uso de vCPU, memoria y almacenamiento en menos del 70% para las bases de datos de producción para evitar problemas como la falta de memoria (OOM) y el almacenamiento completo.
  • Despliegue instancias primarias y en espera en diferentes zonas de disponibilidad para mejorar la disponibilidad.
  • Establezca la ventana de tiempo para la copia de respaldo automatizada en horas fuera de pico. No deshabilite la copia de respaldo completa.
  • Configure la replicación asincrónica entre las instancias de base de datos primaria y en espera para evitar que las cargas de trabajo de la instancia primaria se bloqueen debido a un error en la instancia en espera.

Replicación lógica

  • Mantenga el nombre de una ranura de replicación lógica inferior a 40 bytes para evitar fallas de copia de respaldo completas.
  • Elimine las ranuras de replicación que ya no se utilizan para la replicación lógica a fin de evitar la hinchazón de la base de datos.
  • Las ranuras de replicación se perderán después de realizar una conmutación primaria/en espera (debido a un cambio de clase de instancia, una actualización de versión menor o un error de host). Cuando esto ocurre, es necesario crear ranuras de replicación de nuevo.
  • Utilice ranuras de conmutación por error para RDS for PostgreSQL 12.6 y versiones secundarias posteriores, y todas las versiones secundarias de RDS for PostgreSQL 13 y 14 para evitar la pérdida de ranura de replicación después de una conmutación primaria/en espera o reinicio de instancia.

Edad de base de datos

  • Definición de edad de la base de datos:
    • La edad de la base de datos es un concepto específico de PostgreSQL. Se refiere al último ID de transacción menos el ID de transacción más antiguo de la base de datos.
    • Como se define en el mecanismo de Control de Concurrencia Multi-Versión (MVCC) de RDS for PostgreSQL, la edad máxima permitida para una base de datos es de 2 mil millones de transacciones antiguas. Cuando una base de datos alcanza la edad máxima, se cerrará por la fuerza. En este caso, póngase en contacto con el soporte técnico para aspirar la base de datos.
    • Para ver la antigüedad de una base de datos, ejecute la siguiente sentencia SQL:

      select datname, age(datfrozenxid) from pg_database;

  • Se recomienda utilizar la métrica db_max_age para monitorear la antigüedad de la base de datos y establecer el umbral de alarma en mil millones.

Estabilidad

  • Confirme o revierta las transacciones en dos fases de manera oportuna para evitar la hinchazón de la base de datos.
  • Cambie la estructura de la tabla, por ejemplo, añadiendo campos o índices, durante las horas no pico.
  • Para crear índices durante las horas pico, utilice la sintaxis CONCURRENTLY para evitar bloquear el DML de la tabla.
  • Antes de modificar la estructura de una tabla durante las horas pico, realice una prueba de verificación para evitar que la tabla sea reescrita.
  • Configure un tiempo de espera de bloqueo para las operaciones de DDL para evitar las operaciones de bloqueo en tablas relacionadas.
  • Particione la base de datos si su capacidad supera los 2 TB.
  • Si una tabla a la que se accede con frecuencia contiene más de 20 millones de registros o su tamaño supera los 10 GB, separe la tabla o cree particiones.
  • Asegúrese de que el número de tablas de una sola instancia no exceda de 20,000, y de que el número de tablas de una sola base de datos no exceda de 4,000.
  • Para evitar excepciones de replicación en la instancia en espera o réplicas de lectura, controle la velocidad de escritura de datos de la instancia principal por debajo de 50 MB/s. Esto se debe a que la instancia en espera o la réplica de lectura reproduce los registros de WAL en un solo proceso a una velocidad máxima de 50 MB/s a 70 MB/s.

O&M de rutina

  • Descargue y vea periódicamente registros de consultas lentos en la página Logs para identificar y resolver problemas de rendimiento de manera oportuna.
  • Compruebe periódicamente el uso de recursos de su base de datos. Si los recursos son insuficientes, amplíe las especificaciones de su instancia de manera oportuna.
  • Ejecute la sentencia SELECT antes de eliminar o modificar un registro.
  • Después de eliminar o actualizar una gran cantidad de datos en una tabla, ejecute VACUUM en la tabla.
  • Tenga en cuenta el número de ranuras de replicación disponibles y asegúrese de que al menos una ranura de replicación esté disponible para copia de respaldo de la base de datos.
  • Quite las ranuras de replicación que ya no se utilizan para evitar que las ranuras de replicación bloqueen la recuperación de registros.
  • No utilice tablas no registradas porque los datos de estas tablas se perderán después de una excepción de base de datos (como OOM o fallas subyacentes) o de conmutación primaria/en espera.

Seguridad

  • Evite habilitar el acceso a su base de datos desde Internet. Si necesita habilitar el acceso a Internet, vincule un EIP a su instancia de base de datos y configure una lista blanca.
  • Utilice SSL para conectarse a su instancia de base de datos.