Verwalten von Daten und Datenbanken

In diesem Dokument wird erklärt, wie du die verschiedenen Arten von Daten und Datenbanken im Zusammenhang mit dem WhatsApp Business API-Client verwaltest.

Volumes

Volumes sind der bevorzugte Mechanismus für die dauerhafte Speicherung der Daten, die von Docker-Containern generiert und verwendet werden. Der WhatsApp Business API-Client benötigt ein Docker-Volume für Medien. Dieses Volume wird bei der Ausführung der docker-compose-Befehle während der Installation automatisch erstellt.

Docker-Volumes unterstützen die Speicherung von Volumes auf Remote-Hosts oder Cloudanbietern. Du kannst das Medien-Volume in einer beliebigen Rechenzentrums-Dateifreigabelösung einrichten. Stelle sicher, dass alle Webapp- und Coreapp-Container Lese- und Schreibzugriff für dieses Volume haben. Bearbeite die docker-compose.yml-Datei, um den Pfad zum Volume anzuzeigen oder zu ändern.

NameBeschreibung

Medien-Volume

  • Speichert ein- und ausgehende Mediendateien.
  • Wird standardmäßig unter /usr/local/wamedia/ in Containern eingebunden.

Umgebungsvariablen

Der WhatsApp Business API-Client kann MySQL oder PostgreSQL zum Speichern von Daten verwenden.

Du kannst die Datenbankeinstellungen konfigurieren, indem du bei der Installation des WhatsApp Business API-Clients die folgenden Umgebungsvariablen in der Datei db.env festlegst. Coreapp und Webapp verwenden diese Umgebungsvariablen, um sich mit der Datenbank zu verbinden.

Datenbankeinstellung Umgebungsvariable

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: Kann als Präfix für alle bei der Installation des WhatsApp Business API-Clients erstellten Datenbanken verwendet werden. Auf diese Weise kannst du mehrere WhatsApp Business API-Datenbanken auf demselben Datenbankhost ausführen.
  • WA_DB_CONNECTION_IDLE_TIMEOUT (nur von MySQL unterstützt): Mit der Festlegung dieser Umgebungsvariablen (in Millisekunden) beim Start der Coreapp kannst du die Zeitüberschreitung bei Inaktivität für deine MySQL-Datenbank definieren. Der MySQL-Server beendet dann alle Datenbankverbindungen, die für die festgelegte Zeitspanne inaktiv waren.

Datenbankmanagement

Hier findest du Empfehlungen für das Management der mit dem WhatsApp Business API-Client verknüpften Datenbank.

ThemaEmpfehlungen

Upgrade mit einer großen Datenbank

Als große Datenbanken werden solche betrachtet, die in der Tabelle messages mehr als 2 Millionen Zeilen aufweisen.
Richte dich nach den unten aufgeführten Empfehlungen zur Verwendung des /services/message/gc-Endpunkts bei einem Upgrade, um die Stabilität der Datenbank zu gewährleisten.

Auf API-Aufrufen basierte Speicherbereinigung

  • Macht die Datenbankbereinigung integrationsabhängig und sollte in der Regel für die meisten Unternehmen vermieden werden.
  • Für Unternehmen, die die WhatsApp Business API zum Durchführen der Datenbankspeicherbereinigung verwenden, wird Folgendes empfohlen:
    • Eingehende Nachrichten sollten als gelesen markiert werden, bevor die API-Anfrage für eine aggressive Bereinigung gestellt wird.
    • Wir empfehlen, den /services/message/gc-Endpunkt während Zeiten geringer Nutzung (d. h. wenn wenige Nachrichten gesendet werden) einmal alle 24 Stunden zu verwenden.
    • Für eine messages-Tabelle mit mehr als 10 Millionen Zeilen musst du die API-Anfrage möglicherweise mehrmals ausführen, um sicherzustellen, dass die Rückrufbenachrichtigungen ohne Fehler zurückgegeben werden.

Weitere Informationen findest du in der Dokumentation zu Diensten.

Protokollrotation

Die Coreapp- und Webapp-Container enthalten ein Skript für die Protokollrotation.

Webapp

Das Skript für die Protokollrotation im Webapp-Container:

  • Verwendet das logrotate-Hilfsprogramm.
  • Behält die letzten 30 Dateien der Web-, Zugriffs- und Fehlerprotokolle bei.
  • Führt die Rotation nur durch, wenn die Datei größer als 20 MB ist.
  • Komprimiert rotierte Protokolldateien.
  • Archiviert alte Protokolldateien in /var/log/whatsapp/archive.

Coreapp

Das Skript für die Protokollrotation im Coreapp-Container:

  • Verwendet ein intern entwickeltes Skript.
  • Behält die letzten 30 Dateien bei.
  • Führt die Rotation automatisch durch, wenn die Datei größer als 15 MB ist.
  • Komprimiert rotierte Protokolldateien.
  • Archiviert alte Protokolldateien in /var/log/whatsapp/archive.

In der Coreapp wird nur eine neue Protokolldatei erstellt, wenn die Protokolldatei eine Größe von 15 MB überschritten hat. Die alten Protokolldateien werden nicht automatisch entfernt.

Empfehlung für ein Bereinigungsskript

Es wird empfohlen, das folgende Bereinigungsskript regelmäßig (z. B. täglich) auf allen Webapp-, Coreapp- und Master-Containern (für Multiconnect-Einrichtungen) auszuführen. Konfiguriere einen Cronjob auf deinem Host, um das Skript auf allen aktiven WhatsApp Business API-Containern außerhalb der Spitzennutzungszeiten auszuführen. Führe das Bereinigungsskript regelmäßig aus, um den Speicherverbrauch der Protokolldateien zu begrenzen.

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