Administración de datos

En este documento, se explica cómo administrar los distintos tipos de datos y bases de datos asociadas al cliente de la API de WhatsApp Business.

Volúmenes

Los volúmenes son el mecanismo recomendado para los datos persistentes generados y utilizados por contenedores Docker. El cliente de la API de WhatsApp Business requiere de un volumen de Docker para el contenido multimedia. Este volumen se creará de forma automática cuando se ejecutan los comandos docker-compose durante la instalación.

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

NombreDescripción

Volumen multimedia

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

Variables de entorno

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

Para configurar los parámetros de la base de datos, ajusta las siguientes variables de entorno en el archivo db.env cuando instales el cliente de la API de WhatsApp Business. La app principal y la app web utilizarán estas variables cuando se conecten 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: puede usarse para colocar prefijos en todas las bases de datos creadas cuando se instala el cliente de la API de WhatsApp Business. También puede utilizarse para ejecutar varios conjuntos de bases de datos de la API de WhatsApp Business en el mismo host de la base de datos.
  • WA_DB_CONNECTION_IDLE_TIMEOUT (solo compatible con MySQL): al configurar la variable de entorno (en milisegundos) mientras se inicia la app principal, puedes ajustar el tiempo de espera inactivo para la base de datos de MySQL. El servidor de MySQL finalizará todas las conexiones con bases de datos que estén inactivas en el tiempo definido.

Administración de la base de datos

Estas son recomendaciones para administrar la base de datos asociada a tu cliente de la API de WhatsApp Business.

AtenciónRecomendaciones

Cómo realizar la actualización con una base de datos grande

Se consideran bases de datos grandes aquellas que tienen más de 2 millones de filas en la tabla messages.
Sigue las recomendaciones que se encuentran a continuación, y utiliza el punto de conexión /services/message/gc durante la actualización para mantener la estabilidad de la base de datos.

A partir de la v2.29.1, el parámetro pass_through está configurado en false de forma predeterminada, lo que puede generar un aumento del almacenamiento en la base de datos para la tabla messages.

Limpia la base de datos periódicamente con ayuda del parámetro de recolección automática de elementos no utilizados y asegúrate de que tu base de datos opere con estabilidad. Consulta la documentación sobre Configuración de la app para obtener más información sobre los parámetros pass_through y db_garbagecollector_enable.

Configuración de la recolección automática de elementos no utilizados

  • Activada para empresas que realizan la actualización con el parámetro pass_through activado.
  • Desactivada para empresas que realizan la actualización con el parámetro pass_through desactivado.
    • Si pass_through se desactivó antes de la actualización, se recomienda que actives la recolección automática de elementos no utilizados después de realizar la actualización mediante el parámetro db_garbagecollector_enable en Configuración de la app.
  • Para empresas con tráfico de más de 120 qps, se recomienda la recolección de elementos no utilizados basada en llamadas a la API con el punto de conexión /services/message/gc.

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, debe evitarse en la mayoría de las empresas.
  • Se recomienda que las empresas que usan la API de WhatsApp Business para realizar la recolección de elementos no utilizados de la base de datos hagan lo siguiente:
    • Marquen los mensajes entrantes como leídos antes de realizar la solicitud de API para activar la limpieza agresiva.
    • Recomendamos que el punto de conexión "/services/message/gc" se use una vez cada 24 horas durante el tiempo de inactividad (es decir, volumen bajo de mensajes salientes).
    • Para la tabla messages con más de 10 millones de filas, necesitarás ejecutar la solicitud de API varias veces a fin de asegurarte de que las notificaciones de devolución de llamadas vuelvan sin errores.

Consulta la documentación Servicios para obtener más información.

Rotación de registros

Se incluye un script de rotación de registros en los contenedores de la app principal y de la app web.

App web

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

  • Usa la función "logrotate".
  • Mantiene los últimos 30 archivos de registros web, de acceso y de error.
  • Realiza la rotación únicamente si el tamaño supera los 20 MB.
  • Comprime los archivos de los registros sometidos a rotación.
  • Archiva los archivos de registros antiguos en /var/log/whatsapp/archive.

App principal

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

  • Usa un script desarrollado internamente.
  • Mantiene los últimos 30 archivos.
  • Realiza la rotación de registros automáticamente si el tamaño supera los 15 MB.
  • Comprime los archivos de los registros sometidos a rotación.
  • Archiva los archivos de registros antiguos en /var/log/whatsapp/archive.

En la app principal, se crea un nuevo archivo de registros únicamente si el tamaño de cada archivo supera los 15 MB. Los archivos de registros antiguos no se eliminan automáticamente.

Recomendación de script de limpieza

Se recomienda ejecutar periódicamente (es decir, a diario) el siguiente script de limpieza para realizar la rotación de registros en todos los contenedores de la app web, la app principal y el contenedor maestro (en el caso de una configuración con conexión múltiple). Lo mejor es configurar un trabajo de cron en el host para que se ejecute en todos los contenedores de la API de WhatsApp Business durante las horas de menos uso. Invocar el script de limpieza periódicamente permite controlar el espacio en el disco que consumen los archivos de registros.

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