Administrar datos y bases de datos

En este documento se explica cómo administrar los distintos tipos de datos y bases de datos asociados con el cliente de la API de WhatsApp Business.

Volúmenes

Los volúmenes son el mecanismo preferido para conservar los datos que se generan y usan en los contenedores de Docker. El cliente de la API de WhatsApp Business requiere un volumen de Docker para el contenido multimedia. Este volumen se crea automáticamente al ejecutar los comandos docker-compose durante la instalación.

Los volúmenes de Docker admiten el almacenamiento de volúmenes en hosts remotos o proveedores en la nube. Puedes configurar el volumen de contenido multimedia en cualquier solución de recursos compartidos de archivos de centro de datos existente. Asegúrate de que todos los contenedores de la aplicación web y la aplicación principal tengan acceso de lectura o escritura al volumen. Para ver o editar la ruta de acceso al volumen, edita el archivo docker-compose.yml.

NombreDescripción

Volumen de contenido multimedia

  • Almacena los archivos multimedia entrantes y salientes.
  • Se monta en los contenedores; de forma predeterminada, en /usr/local/wamedia/.

Variables de entorno

El cliente de la API de WhatsApp Business puede utilizar MySQL o PostgreSQL para almacenar datos.

Puedes configurar la base de datos mediante la definición de las siguientes variables de entorno en el archivo db.env al instalar el cliente de la API de WhatsApp Business. La aplicación principal y la aplicación web utilizarán estas variables de entorno al conectarse a la base de datos.

Configuración de la base de datos Variable de entorno

database_engine

WA_DB_ENGINE

hostname

WA_DB_HOSTNAME

port

WA_DB_PORT

username

WA_DB_USERNAME

password

WA_DB_PASSWORD

database_name_prefix

WA_DB_NAME_PREFIX

connection_idle_timeout

WA_DB_CONNECTION_IDLE_TIMEOUT

  • WA_DB_NAME_PREFIX: se puede usar para prefijar todas las bases de datos creadas al instalar el cliente de la API de WhatsApp Business. Se puede utilizar para ejecutar varios conjuntos de bases de datos de la API de WhatsApp Business en el mismo host de base de datos.
  • WA_DB_CONNECTION_IDLE_TIMEOUT (solo compatible con MySQL): al configurar esta variable de entorno (en cuestión de milisegundos) al iniciar la aplicación principal, puedes definir el tiempo de espera de inactividad de la base de datos MySQL. A continuación, el servidor de MySQL cerrará cualquier conexión de base de datos que haya estado inactiva durante el tiempo indicado.

Administración de bases de datos

A continuación se muestran recomendaciones para administrar la base de datos asociada con el cliente de la API de WhatsApp Business.

PreocupaciónRecomendaciones

Actualización con una base de datos de gran tamaño

Se consideran bases de datos de gran tamaño las que tienen más de 2 millones de filas en la tabla messages.
Sigue las recomendaciones siguientes para usar el extremo /services/message/gc durante una actualización a fin de mantener la estabilidad de la base de datos.

Recolección de elementos no utilizados basada en llamadas a la API

  • Hace que la limpieza de la base de datos dependa de la integración e, idealmente, deben evitarla la mayoría de las empresas.
  • Se recomienda lo siguiente a las empresas que usen la API de WhatsApp Business para realizar la recolección de elementos no utilizados de bases de datos:
    • Marcar los mensajes entrantes como leídos antes de realizar la solicitud a la API para activar la limpieza agresiva.
    • Recomendamos que el extremo /services/message/gc se utilice una vez cada 24 horas durante un tiempo de inactividad (es decir, con un volumen bajo de mensajes salientes).
    • Para una tabla messages con más de 10 millones de filas, es posible que debas ejecutar la solicitud a la API varias veces para asegurarte de que las notificaciones de devolución de llamada no devuelven ningún error.

Para obtener más información, consulta la documentación de servicios.

Rotación de registros

Un script de rotación de registros se empaqueta en los contenedores de la aplicación principal y la aplicación web.

Aplicación web

El script de rotación de registros del contenedor de la aplicación web:

  • Emplea la utilidad logrotate.
  • Mantiene los últimos 30 archivos de los registros de errores, accesos y web.
  • Realiza la rotación solo si el tamaño es superior a 20 MB.
  • Comprime los archivos de registro rotados.
  • Archiva los archivos de registro antiguos en /var/log/whatsapp/archive.

Aplicación principal

El script de rotación de registros del contenedor de la aplicación principal:

  • Usa un script interno.
  • Mantiene los últimos 30 archivos.
  • Realiza la rotación automáticamente si el tamaño es superior a 15 MB.
  • Comprime los archivos de registro rotados.
  • Archiva los archivos de registro antiguos en /var/log/whatsapp/archive.

En la aplicación principal, solo se crea un nuevo archivo de registro si el tamaño es superior a 15 MB por archivo de registro. Los archivos de registro antiguos no se eliminan automáticamente.

Recomendación de script de limpieza

Se recomienda ejecutar de forma periódica (por ejemplo, a diario) el script de limpieza siguiente para realizar la rotación de registros en todos los contenedores de la aplicación web, la aplicación principal y los objetos maestros (en el caso de una configuración de conexión múltiple). Es mejor configurar un trabajo de cron en el host para realizarlo en todos los contenedores de la API de WhatsApp Business en ejecución fuera de las horas punta. Al invocar el script de limpieza de forma periódica, el espacio en disco que consumen los archivos de registro se mantiene bajo control.

docker exec your-container-name /opt/whatsapp/bin/cleanup.sh