Ich habe die letzten zwei Tage damit verbracht, die Replizierung in ClickHouse einzurichten, aber jede Konfiguration, die ich versuche, endet mit dem gleichen Verhalten.Ich kann die Replikation in ClickHouse mit Zookeeper nicht einrichten
Ich kann eine ReplicatedMergeTree
Tabelle auf dem ersten Knoten erstellen und Daten einfügen. Dann erstelle ich ein Replikat auf dem zweiten Knoten. Die Daten werden repliziert und ich kann sehen, wie sie den zweiten Knoten abfragt. Aber wenn ich Daten in den zweiten Knoten einfüge, beginnt das seltsame Verhalten. Die Daten werden nicht an den ersten Knoten kopiert und es wird die folgende Fehlermeldung:
2017.11.14 11:16:43.464565 [ 30 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception,
Es ist sehr ähnlich wie diese issue on GitHub.
Wenn ich den ersten Knoten neu starte, kann er die neuen Daten, die in den zweiten Knoten eingefügt wurden, laden und scheint zu arbeiten. Wenn Sie jedoch weitere Daten einfügen, wird derselbe Fehler erneut angezeigt.
Die jüngste Einrichtung Ich habe versucht:
die tutorial Nach, ich habe einen drei Knoten Zookeeper Cluster mit folgendem config:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zoo2/data
clientPort=12181
server.1=10.201.1.4:2888:3888
server.2=0.0.0.0:12888:13888
server.3=10.201.1.4:22888:23888
Der Zoowärter Config für ClickHouse loooks wie folgt aus:
<?xml version="1.0"?>
<yandex>
<zookeeper>
<node>
<host>10.201.1.4</host>
<port>2181</port>
</node>
<node>
<host>10.201.1.4</host>
<port>12181</port>
</node>
<node>
<host>10.201.1.4</host>
<port>22181</port>
</node>
</zookeeper>
</yandex>
Ich erstelle alle Tabellen wie folgt:
CREATE TABLE t_r (
id UInt32,
d Date
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/t_r', '03', d, (d, id), 8192);
Der einzige Unterschied bei allen Replikaten ist die Replikat-ID '03'
, die entsprechend eingestellt ist.
Danke für jede Beratung!
Beim Erstellen einer "replizierten" Tabelle setze ich eine eindeutige Replikat-ID für jeden ClickHouse Server-Knoten. Ich benutze mehr oder weniger Standardkonfiguration für alle drei Knoten, wobei jeder Knoten ein separates data, tmp, log, errlog Verzeichnisse hat. –
Wie ich sehen kann, gibt es in Ihrer create-Anweisung nur eine ID = '03'. Auch 't_r' ist die ID des Knotens im Tierpfleger und sollte für Shards eindeutig sein. Wenn Sie verschiedene Anweisungen auf verschiedenen Knoten ausführen, geben Sie bitte alle an. – egorlitvinenko
Der einzige Unterschied bei Befehlen zum Erstellen von Tabellen ist die Replikat-ID, die entsprechend der Knotennummer festgelegt wird. Da ich Single-Shard-Regime verwende, wird die gleiche 't_r'-ID auf allen Knoten gesetzt. –