Close

Datenbank, Datastore, Backup

Bloonix benötigt 2 Datenbanken. Eine Datenbank fürs Management, eine weitere Datenbank zur Speicherung der Metriken. Für eine bessere Performance werden die Metriken in Partitionen gespeichert, eine Partition pro Tag wird dabei verwendet.

Zur Installation der Datenbank und der Einrichtung des Backup Skripts für den Datastore wird das Paket bloonix-server-schema benötigt.

Datenbank

Die Datenbank für das Management wird standardmäßig mit dem User und dem Datenbanknamen blxdb erstellt. Hierzu muss in das Verzeichnis /usr/share/bloonix/schema/ gewechselt werden, wo die Skripte zur Erstellung der Datenbanken liegen.

cd /usr/share/bloonix/schema/
./init-postgresql-database -i -m -o /etc/bloonix/database/main.conf

Datastore

Der Datenstore, indem die Metriken gespeichert werden, wird auf ähnliche Weise erstellt. Der Benutzer und der Datenbankname sind standardmäßig blxds.

cd /usr/share/bloonix/schema/
./init-postgresql-database -i -d -o /etc/bloonix/datastore/main.conf

Backup

Das Backup der Management Datenbank kann ganz einfach mit pg_dump erstellt werden. Für den Datastore bietet Bloonix eigene Skripte zum Backup und für den Restore an. Diese Skripts lauten:

  • bloonix-datastore-backup
  • bloonix-datastore-restore

Ein Cronjob kann für das Backupskript mit einem Intervall von 15 Minuten eingerichtet werden. Das Backup wird inkrementell unterhalb von /var/backup/bloonix-datastore gespeichert.

Supportete DBMS

PostgreSQL ist das einzige unterstützte Datenbanksystem.

MySQL, MariaDB und deren Derivate werden nicht unterstützt. Hintergrund ist vor allem die Treiber- und Paketlage: Die in den Repositories von Debian und Rocky Linux verfügbaren Python-Module für MySQL/MariaDB haben im Zusammenspiel mit JSON-Spalten bekannte Probleme bzw. liefern JSON nicht zuverlässig in der erwarteten Form. In der Praxis führt das zu Workarounds und projektspezifischen Anpassungen (z.B. eigenen Converter-/Type-Casts), was die Installation weniger reproduzierbar macht und den Wartungsaufwand deutlich erhöht.

Zusätzlich ist für MySQL typischerweise der offizielle Connector (mysql-connector) erforderlich, der nicht aus den Standard-Repositories kommt. Bei MariaDB ist das Python-Modul häufig ebenfalls nicht „out of the box“ passend und muss manuell (z.B. via pip) inkl. entsprechender Anpassungen betrieben werden.

Unabhängig davon spricht auch die Performance klar für PostgreSQL: Gerade in größeren Setups mit vielen Metriken arbeitet PostgreSQL in der Regel spürbar effizienter als MySQL/MariaDB.