Zurück zur Startseite

Installation von ClickHouse auf Ubuntu 22.04 und Debian 12: Leitfaden

Praktischer Leitfaden zur Installation von ClickHouse auf Ubuntu 22.04 und Debian 12 aus dem offiziellen Repository mit Signaturprüfung. Beinhaltet systemd-Setup, Autostart, Versionsprüfung, Speicherorte der Konfigurationsdateien, Öffnen von Ports und Behebung typischer Probleme (Connection refused, Permission denied, Out of memory). Minimale Entwicklungskonfiguration mit Speicherbegrenzung und Abhören aller Schnittstellen wird bereitgestellt.

ClickHouse auf Ubuntu/Debian: vollständiger Leitfaden mit Fehlerbeispielen
Advertisement 728x90

ClickHouse unter Ubuntu/Debian installieren: Eine Schritt-für-Schritt-Anleitung von jemandem, der sich an falschen Berechtigungen verbrannt hat

Als ich ClickHouse zum ersten Mal in der Produktion installierte, dachte ich: „Was soll schon schwer daran sein – einfach apt install.“ Ergebnis: Ports waren geschlossen, Logs wurden nicht geschrieben, und nach 15 Minuten stürzte der Server ab, weil ich vergessen hatte, max_server_memory_usage zu konfigurieren. Zweiter Versuch: Ich verwechselte das offizielle Repository mit einem zwielichtigen PPA. Dritter: Ich setzte ulimit -n nicht, und ClickHouse konnte einfach nicht genügend Dateideskriptoren öffnen.

Unten folgt daher nicht nur eine Kopie der Dokumentation, sondern eine Anleitung, in der ich alle Fallstricke hervorhebe. Alle Befehle wurden auf einem sauberen Ubuntu 22.04 LTS und Debian 12 getestet.

Schritt 1. Offizielles Repository hinzufügen (keine vorgefertigten Skripte googeln)

Die offizielle Dokumentation enthält ein Skript curl https://clickhouse.com/ | sh. Ich würde davon abraten, es auf einem Server zu verwenden, wenn Sie nicht genau verstehen, was es tut. Besser ist eine manuelle Installation über apt mit Schlüsselüberprüfung. Dies ist ein Fall, in dem Sicherheit wichtiger ist als Geschwindigkeit.

Google AdInline article slot
# ClickHouse GPG-Schlüssel hinzufügen (Paketsignatur)
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL 'https://packages.clickhouse.com/rpm/latest/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg

# Repository zu apt-Quellen hinzufügen
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list

# Paketliste aktualisieren
sudo apt-get update

Warum so kompliziert? Denn ohne Signaturüberprüfung riskieren Sie, ein Paket aus einem inoffiziellen Repository zu installieren. In der Produktion hatten wir einen Fall, in dem ein Entwickler curl | sh ausführte und eine alte Version mit einer Sicherheitslücke erhielt. Wiederholen Sie das nicht.

Schritt 2. Server und Client installieren

# Pakete installieren
sudo apt-get install -y clickhouse-server clickhouse-client

# Falls Sie Benchmarking-Werkzeuge möchten
sudo apt-get install -y clickhouse-common-static

Während der Installation werden Sie nach einem Passwort für den Benutzer default gefragt. Wichtiger Hinweis: Wenn Sie es leer lassen, wird überhaupt kein Passwort gesetzt. In der Produktion ist das eine Katastrophe. Selbst für eine Entwicklungsumgebung setzen Sie ein einfaches Passwort wie clickhouse_dev – es ist später leichter zu merken.

Nach der Installation sehen Sie:

Google AdInline article slot
ClickHouse server has been installed.
Configuration file: /etc/clickhouse-server/config.xml
Logs directory: /var/log/clickhouse-server/
Data directory: /var/lib/clickhouse/

Schritt 3. Version prüfen – ein Life-Hack, den die Dokumentation nicht erwähnt

clickhouse-server --version

Erwartete Ausgabe (zum Zeitpunkt des Schreibens):

ClickHouse server version 24.8.2.3 (official build).

Persönliche Erfahrung: Nach einem Update der ClickHouse-Version ändert sich manchmal das Datenspeicherformat auf der Platte. Wenn Sie eine alte Version hatten und apt upgrade ausgeführt haben, könnte das System mit dem Fehler Unknown data type nicht starten. Führen Sie vor dem Update immer clickhouse-server --version aus und lesen Sie das Changelog.

Schritt 4. Start über systemd – und prüfen, ob Sie nichts vergessen haben

# Autostart beim Booten aktivieren
sudo systemctl enable clickhouse-server

# Server jetzt starten
sudo systemctl start clickhouse-server

# Status prüfen
sudo systemctl status clickhouse-server

Wenn alles in Ordnung ist, sehen Sie:

Google AdInline article slot
● clickhouse-server.service - ClickHouse Server (analytic DBMS)
     Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled)
     Active: active (running) since ... 

Häufiger Fehler: Der Server startet aufgrund unzureichender Dateideskriptoren nicht. Überprüfen Sie:

# Aktuelles Limit für den Dienst anzeigen
cat /proc/$(pidof clickhouse-server)/limits | grep "open files"

# Wenn weniger als 262144, zu /etc/systemd/system/clickhouse-server.service.d/override.conf hinzufügen
[Service]
LimitNOFILE=262144
LimitNPROC=32768

Vergessen Sie nach Änderungen nicht:

sudo systemctl daemon-reload
sudo systemctl restart clickhouse-server

Schritt 5. Erster Login über clickhouse-client – und mein Lieblingstest

clickhouse-client --password
# Geben Sie das in Schritt 2 festgelegte Passwort ein

Wenn Sie kein Passwort gesetzt haben, einfach:

clickhouse-client

Die erste Abfrage ist immer eine Versionsprüfung:

SELECT version();

Ausgabe:

┌─version()─┐
│ 24.8.2.3  │
└───────────┘

Jetzt können Sie stolz sein – ClickHouse funktioniert.

Bonus-Performance-Test: Führen Sie diese Abfrage aus – sie zeigt, wie schnell Ihre Maschine Daten generieren und verarbeiten kann:

SELECT sum(number) FROM numbers(100000000);

Auf einem anständigen Server (4+ Kerne) wird sie in 0,3–0,5 Sekunden ausgeführt. Auf einer schwachen virtuellen Maschine – bis zu 2 Sekunden. Wenn es mehr als 5 Sekunden sind, haben Sie CPU- oder Drosselungsprobleme.

Schritt 6. Wo wichtige Dateien liegen – merken Sie sich diese Pfade

Datei/Verzeichnis Zweck Was ich am häufigsten geändert habe
/etc/clickhouse-server/config.xml Hauptkonfiguration listen_host (um auf mehr als nur localhost zu hören), max_server_memory_usage, http_port
/etc/clickhouse-server/users.xml Benutzereinstellungen password für default, readonly, quota
/var/log/clickhouse-server/clickhouse-server.log Hauptlog Wenn es nicht startet, zuerst hier prüfen
/var/log/clickhouse-server/clickhouse-server.err.log Fehlerlog Hier fange ich Speicher- und Festplattenfehler ab
/var/lib/clickhouse/ Tabellendaten Prüfen, ob die Festplatte voll ist
/var/lib/clickhouse/status PID und Status Für Überwachungsskripte

Praxis-Moment: Einmal hörte ClickHouse auf, Anfragen anzunehmen. Alles lief, aber die Konsole hing. Es stellte sich heraus, dass die Logdatei auf 80 GB angewachsen war und die Root-Partition gefüllt hatte. Fügen Sie Rotation zur Konfiguration hinzu:

<logger>
    <size>1000M</size>
    <count>10</count>
</logger>

Schritt 7. Minimale Konfiguration für die Entwicklung

Für einen lokalen Rechner oder Entwicklungsserver verwende ich diese config.xml (ich ändere nur das Nötigste):

<!-- /etc/clickhouse-server/config.d/dev-override.xml -->
<clickhouse>
    <!-- Auf allen Schnittstellen hören, nicht nur localhost -->
    <listen_host>0.0.0.0</listen_host>
    
    <!-- Speicher begrenzen, um den Laptop nicht zu killen -->
    <max_server_memory_usage>0.75</max_server_memory_usage>  <!-- 75% des gesamten RAM -->
    <max_memory_usage_for_all_queries>0</max_memory_usage_for_all_queries>
    
    <!-- Timeouts für Entwicklungsumgebung -->
    <keep_alive_timeout>3</keep_alive_timeout>
    
    <!-- Vermeiden, zu viele Partitionen auf der Platte zu erzeugen -->
    <merge_tree>
        <max_parts_in_total>1000</max_parts_in_total>
    </merge_tree>
</clickhouse>

Anwenden:

sudo systemctl restart clickhouse-server

Warum eine separate Datei statt Bearbeitung von config.xml? Wenn das Paket aktualisiert wird, kann config.xml überschrieben werden. Legen Sie alle eigenen Änderungen in /etc/clickhouse-server/config.d/ ab. Ich habe dies nach einem Downgrade nach einem fehlgeschlagenen Update gelernt – ich verlor eine Woche Einstellungen.

Schritt 8. Ports für externe Verbindungen öffnen

ClickHouse hört auf drei Ports:

  • 8123 – HTTP (für REST API, Grafana, intuitiv)
  • 9000 – Natives TCP-Protokoll (für clickhouse-client und Treiber)
  • 9009 – Inter-Server-Kommunikation (für Cluster, nicht unnötig anfassen)

Auf einem Entwicklungsrechner öffne ich mindestens 8123, um von TablePlus oder DBeaver aus eine Verbindung herzustellen:

# Prüfen, ob der Prozess lauscht
sudo netstat -tulpn | grep clickhouse

# Wenn nicht, in UFW erlauben
sudo ufw allow 8123/tcp
sudo ufw allow 9000/tcp

Häufiger Fehler: Unter Ubuntu 22.04 kann die Firewall standardmäßig blockieren, selbst wenn ClickHouse auf 0.0.0.0 lauscht. Überprüfen Sie immer mit telnet localhost 8123 und telnet $(hostname -I) 8123.

Typische Installationsprobleme und wie ich sie gelöst habe

Problem 1: Code: 210. DB::NetException: Connection refused

Ursache: Der Server wurde nicht gestartet oder lauscht nur auf 127.0.0.1.

Lösung:

# Status prüfen
systemctl status clickhouse-server

# Log ansehen
tail -n 50 /var/log/clickhouse-server/clickhouse-server.log

# Konfiguration bearbeiten
sudo nano /etc/clickhouse-server/config.xml
# <listen_host>0.0.0.0</listen_host> finden und auskommentieren

Problem 2: cannot create directory '/var/lib/clickhouse/' Permission denied

Ursache: Berechtigungen des Datenverzeichnisses wurden nach manuellem Eingriff durcheinandergebracht.

Lösung:

sudo chown -R clickhouse:clickhouse /var/lib/clickhouse
sudo chmod 755 /var/lib/clickhouse

Problem 3: Server startet, stürzt aber nach 30 Sekunden mit Out of memory ab

Ursache: ClickHouse möchte standardmäßig fast den gesamten Arbeitsspeicher nutzen.

Lösung: In einer Entwicklungsumgebung den Speicher strikt begrenzen:

# In /etc/clickhouse-server/config.xml hinzufügen
<max_server_memory_usage>2147483648</max_server_memory_usage>  # 2 GB

Oder über Systemlimit:

sudo systemctl edit clickhouse-server
# Hinzufügen:
[Service]
MemoryMax=2G

Problem 4: Installation schlägt aufgrund eines Konflikts mit clickhouse-common-static fehl

Ursache: Überreste einer vorherigen Version oder ein beschädigter apt-Cache.

Lösung:

sudo apt-get remove --purge clickhouse-*
sudo rm -rf /etc/clickhouse-server /var/lib/clickhouse
sudo apt-get clean
# Installation von Anfang an wiederholen

Gesundheitscheck – meine persönliche Checkliste

Nach der Installation führe ich immer drei Tests durch:

  1. Lokale Verbindung

    clickhouse-client -q "SELECT 1"
    # Sollte 1 zurückgeben
  2. Remote-HTTP-Verbindung (von einem anderen Rechner)

    curl "http://YOUR_SERVER_IP:8123/?query=SELECT+version()"
  3. Datenschreiben

    CREATE DATABASE test;
    CREATE TABLE test.t (id UInt64) ENGINE = MergeTree ORDER BY id;
    INSERT INTO test.t SELECT number FROM numbers(1000);
    SELECT count() FROM test.t;

Wenn alles bestanden ist, war die Installation erfolgreich.

Wie geht es weiter?

Jetzt haben Sie ein funktionierendes ClickHouse unter Ubuntu/Debian. Der nächste Schritt ist zu lernen, wie man es in Docker einpackt und einen Drei-Knoten-Cluster mit Replikation einrichtet.

➡️ Nächster Artikel: [ClickHouse per Docker installieren: Produktionscluster in 10 Minuten] (Link folgt)

⬅️ Vorheriger Artikel: [Was ist ClickHouse: Warum columnar DBMS Analysen zerlegt] (Link folgt)

Viel Erfolg bei der Installation. Wenn Sie nicht weiterkommen, prüfen Sie zuerst /var/log/clickhouse-server/clickhouse-server.err.log. Dieser Fehler hat mir öfter geholfen als Kaffee am Montagmorgen.


Vorherige:
Nächste: ClickHouse in Docker: Wie ich aufhörte, mir Sorgen zu machen und Analysen in 2 Minuten startete

— Editorial Team

Advertisement 728x90

Weiterlesen