DB Maintenance

Ejecuta consultas de optimización de base de datos (OPTIMIZE TABLE para MySQL, VACUUM ANALYZE para PostgreSQL) en tablas seleccionadas durante las ejecuciones de cron.

db_maintenance
3,579 sites
45
drupal.org

Instalar

Drupal 9, 8 v2.0.0
composer require 'drupal/db_maintenance:^2.0'

Overview

DB Maintenance es un módulo de Drupal que realiza operaciones de mantenimiento de base de datos ejecutando consultas de optimización en tablas de base de datos seleccionadas. Para bases de datos MySQL, ejecuta OPTIMIZE TABLE que repara tablas con filas eliminadas o divididas, ordena los índices de las tablas y actualiza las estadísticas de las tablas. Para bases de datos PostgreSQL, ejecuta VACUUM ANALYZE para recuperar el almacenamiento ocupado por tuplas eliminadas.

El módulo está diseñado para trabajar con tablas que tienen alta rotación de datos, como tablas de caché, tablas de sesiones y registros de watchdog. Admite programación configurable basada en cron con opciones de frecuencia que van desde cada ejecución de cron hasta intervalos bimensuales. Además, una función de restricción de intervalo de tiempo permite a los administradores limitar la optimización a horas específicas, lo cual es útil para ejecutar el mantenimiento durante períodos de bajo tráfico.

Consideraciones importantes: El comando OPTIMIZE TABLE de MySQL bloquea las tablas durante la ejecución, lo que puede afectar el rendimiento del sitio en sitios con mucho tráfico. La operación VACUUM (no FULL) de PostgreSQL puede ejecutarse en paralelo con las operaciones normales de la base de datos. Para instalaciones grandes, se recomienda seleccionar solo tablas de alta rotación en lugar de optimizar todas las tablas.

Features

  • Ejecuta la consulta OPTIMIZE TABLE en tablas de base de datos MySQL/MariaDB seleccionadas para desfragmentar y reparar tablas con filas eliminadas o divididas
  • Ejecuta VACUUM ANALYZE en tablas PostgreSQL para recuperar almacenamiento de tuplas eliminadas y actualizar estadísticas
  • Frecuencia de ejecución de cron configurable: cada ejecución de cron, cada hora, cada dos horas, diaria, cada dos días, semanal, quincenal, mensual o bimensual
  • Restricción de intervalo de tiempo para limitar la optimización a horas específicas (por ejemplo, durante períodos de bajo tráfico por la noche)
  • Soporte para múltiples conexiones de base de datos en instalaciones de Drupal con múltiples bases de datos
  • Opción para optimizar automáticamente todas las tablas o seleccionar manualmente tablas específicas
  • Registro opcional en watchdog de las operaciones de optimización
  • Activación manual de optimización a través de un enlace en la interfaz de administración
  • Maneja correctamente los prefijos de tablas de base de datos

Use Cases

Optimización de tablas de caché en un sitio de alto tráfico

En sitios con mucho tráfico, las tablas de caché frecuentemente tienen filas insertadas y eliminadas. Configure DB Maintenance para optimizar las tablas cache_* diariamente durante horas de bajo tráfico (por ejemplo, 02:00-04:00) habilitando la función de intervalo de tiempo. Esto ayuda a mantener el rendimiento de la base de datos sin impactar a los usuarios.

Mantenimiento del tamaño de la tabla watchdog

La tabla watchdog puede crecer significativamente en sitios con registro extensivo. Seleccione la tabla watchdog para optimización semanal para recuperar espacio en disco de las entradas de registro eliminadas y mantener el rendimiento de las consultas al revisar los registros.

Mantenimiento de base de datos en múltiples sitios

Para instalaciones de Drupal con múltiples conexiones de base de datos, DB Maintenance puede optimizar tablas en todas las bases de datos configuradas. Cada base de datos aparece con su propia lista de selección de tablas en el formulario de configuración.

Mantenimiento programado nocturno

Configure el módulo para ejecutar la optimización entre las 01:30 y las 02:30 AM estableciendo el intervalo de tiempo. Combinado con una frecuencia semanal, esto asegura que el mantenimiento se ejecute durante el período de menor tráfico sin intervención manual.

Programación de vacuum en PostgreSQL

Las bases de datos PostgreSQL se benefician de operaciones VACUUM regulares. Aunque PostgreSQL tiene autovacuum, DB Maintenance proporciona una programación consciente de Drupal que puede dirigirse a tablas específicas e integrarse con el sistema cron de Drupal.

Tips

  • Concéntrese en tablas con alta rotación de datos (cache_*, sessions, watchdog) en lugar de optimizar todas las tablas
  • Use la función de intervalo de tiempo para programar la optimización durante horas de bajo tráfico para minimizar el impacto en los usuarios
  • Revise los registros de watchdog periódicamente cuando el registro esté habilitado para verificar que la optimización se está ejecutando como se espera
  • Para MySQL, monitoree la columna Overhead en phpMyAdmin para identificar tablas que se beneficiarían de la optimización
  • El módulo soporta el cruce de medianoche para intervalos de tiempo (por ejemplo, 23:00 a 01:00)
  • Use el enlace 'Optimizar ahora' para activar manualmente la optimización después de realizar cambios significativos en la base de datos

Technical Details

Admin Pages 1
DB Maintenance /admin/config/system/db_maintenance

Configure los ajustes de optimización de tablas de base de datos. Seleccione qué tablas optimizar, establezca la frecuencia de optimización y opcionalmente restrinja la optimización a intervalos de tiempo específicos.

Permisos 1

Seleccionar qué tablas optimizar durante los trabajos de cron. Requerido para acceder a la página de configuración del módulo y activar la optimización manual.

Hooks 1
hook_cron

Realiza la optimización programada de tablas de base de datos. Verifica si ha pasado el intervalo de tiempo configurado desde la última ejecución y si la hora actual cae dentro de cualquier ventana de restricción de tiempo configurada antes de ejecutar la optimización.

Troubleshooting 4
La optimización no se ejecuta en los momentos esperados

Verifique que el cron de Drupal se esté ejecutando con la frecuencia esperada. El módulo solo puede ejecutarse cuando se ejecuta cron. También verifique si la restricción de intervalo de tiempo está habilitada y confirme que la hora actual del servidor cae dentro de la ventana configurada.

Las tablas muestran error de que no existen en los registros

Si ve mensajes de registro sobre tablas que no existen, la tabla puede haber sido eliminada o renombrada. Vaya a la página de configuración y actualice su selección de tablas para eliminar las referencias a tablas inexistentes.

Degradación del rendimiento del sitio durante la optimización

MySQL bloquea las tablas durante las operaciones OPTIMIZE TABLE. Programe la optimización durante períodos de bajo tráfico usando la función de intervalo de tiempo, o reduzca el número de tablas que se optimizan a la vez. Considere optimizar solo tablas de alta rotación como caché y sesiones.

La configuración no guarda las selecciones de tablas

Asegúrese de tener el permiso 'administer db maintenance'. Limpie las cachés de Drupal si el formulario no se muestra correctamente.

Security Notes 3
  • El permiso 'administer db maintenance' solo debe otorgarse a administradores de confianza ya que permite operaciones de base de datos
  • El enlace de optimización manual está protegido por token CSRF para prevenir activaciones no autorizadas
  • Las credenciales de la base de datos nunca se exponen a través de la interfaz del módulo