2017-04-10 47 views
0

我有兩個不同的機器的兩個表都運行動物園管理員作爲後臺進程,它們中的一個具有本身份識別碼1而另一個具有本身份識別碼2.ClickHouse ReplicatedMergeTrees配置問題

表被配置爲這樣的機器上的「1」的:

CREATE TABLE test(values) 
ReplicatedMergeTree('/clickhouse/tables/01/test', '1', date, timestamp, 8192) 

表被配置爲這樣的機器 「2」 上:

CREATE TABLE test(values) 
ReplicatedMergeTree('/clickhouse/tables/01/test', '2', date, timestamp, 8192) 

01中 '/ clickhouse /表/ 01 /測試' 可能搞亂機智的值因爲我'{layer} - {shard}',但是由於我沒有配置remote_servers,因此我認爲我可以使用任何值並且沒關係,因爲我不想要查詢分配,只是數據重複。

另外的表似乎是因爲與副本數量「2」或在出現錯誤「1」的結果說這樣的表已經存在創建兩個表海誓山盟「知道」。

我需要默認配置remote_server的,如果我想使用的複製?我是否需要專門爲我想要複製的表配置zookeeper?你們有沒有詳細的例子用clickhouse設置數據複製?

回答

1

看來你已經做得正確。 {layer}-{shard}部分是可選的 - 它只是簡化了在許多服務器上創建類似的表。最低限度配置複製表是在飼養員的路徑是共同所有副本(根據約定,這條道路與/clickhouse/tables/啓動,但事實上任何唯一的路徑會做)和識別碼,是唯一的每個副本('1''2'完全好的,但建議使用更多的描述性名稱來識別相應的主機)。

配置remote_servers是沒有必要的複製,但需要飼養員。您可以爲所有複製表使用一個zookeeper羣集。

+0

是否由zookeeper自動創建路徑(例如/ clickhouse/tables /)。如同,如果我對所有表有相同的路徑,我需要在zookeeper中配置其他任何東西嗎? – George

+0

ClickHouse將自動創建在引擎創建期間傳遞給ReplicatedMergeTree引擎的zookeeper路徑,其不存在的父節點以及其內部必需的目錄結構。最後一個副本表被刪除後,該路徑將被刪除。所以,一切都應該自動發生。 你困難的確切性質是什麼?如下 –

+0

說我越來越目前是確切的錯誤信息(我得到這個我插入數據後的副本之一): DB :: StorageReplicatedMergeTree :: queueTask():: <拉姆達(DB :: StorageReplicatedMergeTree :: LogEntryPtr&)>:Poco :: Exception。代碼:1000,e.code()= 0,e.displayText()=主未找到:otherMachineHostname,e.what()=找不到主機 – George