Zusammenführung von zwei Plausible Analytics Instanzen
Erfahre, wie zwei Instanzen von Plausible Analytics zu einer zusammengeführt werden können.
Inhaltsverzeichnis
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.
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.