Deployn

Zusammenführung von zwei Plausible Analytics Instanzen

Erfahre, wie zwei Instanzen von Plausible Analytics zu einer zusammengeführt werden können.

Zusammenführung von zwei Plausible Analytics Instanzen-heroimage

Plausible Analytics hat sich als datenschutzfreundliche Alternative zu herkömmlichen Analysetools etabliert. Was passiert aber, wenn man zwei separate Instanzen von selbst gehosteten Plausible Analytics zu einer zusammenführen möchte? Dieser Prozess ist nicht ganz einfach, da Plausible die Daten in Clickhouse speichert. Clickhouse ist eine spalten orientierte Datenbank, die nicht ganz einfach zu handhaben ist. In diesem Artikel zeige ich, wie zwei Instanzen von Plausible Analytics zu einer zusammengeführt werden können.

Hintergrund

Vor einiger Zeit habe ich Plausible Analytics auf einem meiner Server installiert. Später hatte ich dann einen weiteren Server mit Plausible, auf dem weitere Webseiten analysiert wurden. Ich wollte dann irgendwann die beiden Instanzen zusammenführen, um die Daten zentral zu haben, doch diese Funktion ist nicht in Plausible integriert. Meiner Meinung nach ist der größte Nachteil von Plausible, dass es dafür keine integrierte Lösung gibt. Auf GitHub gibt es zwar einige Feature-Anfragen, die bis ins Jahr 2020 zurückreichen, aber bisher wurde noch keine davon umgesetzt. Ich weiß, dass das Plausible-Team an einer Lösung arbeitet, aber ich wollte nicht warten, bis diese fertig ist. Also habe ich beschlossen, die Zusammenführung manuell durchzuführen.

Voraussetzungen

  • Zwei Instanzen von Plausible Analytics mit Docker
  • Zugriff auf beide Instanzen

Schritt 1: Datensicherung

Zuallererst müssen die Daten beider Instanzen gesichert werden. Diese Vorsichtsmaßnahme ist wichtig für den Fall, wenn die Zusammenführung bzw. das Update im nächsten Schritt nicht wie geplant verläuft.

Zugriff auf Server

Verbinde dich über SSH mit dem Server. Mithilfe von VSCode lässt sich der Vorgang vereinfachen. Navigiere zum Verzeichnis von Plausible Analytics:

ssh benutzer@ip-adresse-des-servers
cd plausible

Interaktion mit Clickhouse

Wir wollen bash im Clickhouse Container ausführen, um die Daten zu exportieren.

docker-compose exec plausible_events_db bash

Wenn der Containername anders ist, wird das nicht klappen, überprüfe die Container mit docker ps oder er ist in der docker-compose.yml angegeben.

exec bash

Datenidentifikation

Wir listen erst alle Clickhouse Datenbanken und Tabellen auf, um unsere Daten zu lokalisieren:

clickhouse-client --query "SHOW DATABASES"

### OUTPUT ###
# INFORMATION_SCHEMA
# default
# information_schema
# plausible_events_db
# system

Die plausible_events_db Datenbank sollte existieren, danach listen wir die Tabellen auf:

clickhouse-client --database="plausible_events_db" --query="SHOW TABLES"

### OUTPUT ###
# events
# imported_brwosers
# imported_other_stuff
# schema_migrations
# sessions

Für uns sind zwei Tabellen wichtig: events und sessions. Sollten die Datenbanken anders heißen, müssen die Befehle entsprechend angepasst werden.

Tabellen exportieren

Exportiere die events und sessions Daten in eine TSV-Datei:

clickhouse-client --database="plausible_events_db" --query="SELECT * FROM events FORMAT TSV" > /var/lib/clickhouse/backup/backup_events_server1.tsv
clickhouse-client --database="plausible_events_db" --query="SELECT * FROM sessions FORMAT TSV" > /var/lib/clickhouse/backup/backup_sessions_server1.tsv

Dieser Befehl exportiert die Daten aus den Tabellen events und sessions ins /var/lib/clickhouse/backup/ Verzeichnis. In der docker-compose.yml sollte dieses Verzeichnis als Volume eingebunden sein:

[...]
plausible_events_db:
    volumes:
        - ./data/event-data:/var/lib/clickhouse
[...]

Auf dem Server sollten sich demnach die exportierten Daten in ./data/event-data/backup/ befinden.

Sollten Rechteprobleme auftreten, muss der Ordner zuerst erstellt werden:

mkdir data/event-data/backup

Daten herunterladen

Überprüfe, ob die Dateien irgendeinen Inhalt haben:

cd data/event-data/backup/
cat backup_events_server1.tsv
cat backup_sessions_server1.tsv

Danach können beide heruntergeladen werden. Anschließend sollte der Vorgang auf dem zweiten Server wiederholt werden, um die backup_events.tsv und backup_sessions.tsv Dateien von beiden Servern gesichert zu haben.

Schritt 2: Vorbereitung für die Zusammenführung

DANGER

Ab hier wird es kritisch. Im schlimmsten Fall kann es zu Datenverlust kommen. Ich übernehme keine Haftung für Schäden, die durch die folgenden Schritte entstehen.

Jetzt müssen beide Instanzen auf den gleichen Stand gebracht werden.

  • Aktualisiere beide Plausible und Clickhouse Container zu der gleichen Version.
  • Füge die Domains der ersten Instanz zur zweiten Instanz hinzu.

Plausible kann aktualisiert werden, indem die docker-compose.yml Datei bearbeitet wird. Danach sollte docker-compose pull, docker-compose down und docker-compose up -d ausgeführt werden. Die Domain lässt sich über die Plausible GUI hinzufügen.

Schritt 3: Datensicherung (erneut)

Wenn alles noch wie gewünscht funktioniert, sollte die Datenbank erneut gesichert werden. Dazu Schritt 1 befolgen.

Schritt 4: Datenkonsolidierung

Die neu erstellte Sicherung von Server 1 muss nun auf Server 2 hochgeladen werden. Die Dateien backup_events_server1.tsv und backup_sessions_server1.tsv aus Schritt 3 befinden sich in meinem Fall in ./data/event-data/backup/. Jetzt müssen die Daten in die Clickhouse Datenbank importiert werden:

clickhouse-client --database="plausible_events_db" --query="INSERT INTO events FORMAT TSV" < /var/lib/clickhouse/backup/backup_events_server1.tsv
clickhouse-client --database="plausible_events_db" --query="INSERT INTO sessions FORMAT TSV" < /var/lib/clickhouse/backup/backup_events_server1.tsv

Schritt 5: Zusammenführung bestätigen

Stelle sicher, dass die Daten auf der neuen Instanz mit den Daten des ursprünglichen Servers übereinstimmen. Wenn Diskrepanzen auftreten, kann man das Backup wieder einspielen. Dazu die events- und sessions-Tabellen in der Clickhouse-Datenbank löschen und das Backup erneut importieren

clickhouse-client --database="plausible_events_db" --query="DROP TABLE events"
clickhouse-client --database="plausible_events_db" --query="DROP TABLE sessions"
clickhouse-client --database="plausible_events_db" --query="INSERT INTO events FORMAT TSV" < /var/lib/clickhouse/backup/backup_events_server2.tsv
clickhouse-client --database="plausible_events_db" --query="INSERT INTO sessions FORMAT TSV" < /var/lib/clickhouse/backup/backup_events_server2.tsv

Schritt 6: DNS-Einstellungen aktualisieren

Nachdem die Daten importiert wurden, muss das DNS der alten Domains auf die aktualisierte Plausible-Instanz ausgerichtet werden.

Schritt 7: Übergang überwachen

In der Anfangsphase nach der Übertragung sollten die Analysen genauer beobachtet werden. So können etwaige Unstimmigkeiten oder Probleme frühzeitig erkannt werden.

Fertig

Das Zusammenführen von zwei Instanzen von selbst gehosteten Plausible Analytics ist ein komplexer Prozess, der ein gewisses Verständnis von Datenbanken erfordert. Es sollte sich Hilfe geholt werden, wenn man sich damit nicht auskennt.

Beachte, dass diese Anleitung eine Übergangslösung darstellt und möglicherweise nicht in allen Fällen funktioniert. Sichere immer die Daten, um Datenverluste zu vermeiden.

Wenn alles geklappt hat, werden die Analysen in einer Instanz konsolidiert und so der Datenanalyseprozess rationalisiert.


Diese Website verwendet Cookies. Diese sind notwendig, um die Funktionalität der Website zu gewährleisten. Weitere Informationen finden Sie in der Datenschutzerklärung