2017-05-08 37 views
1

我在集羣中設置了一個ClickHouse服務器,但文檔中沒有出現的其中一件事是如何管理大量的數據它說它可以處理高達PB級的數據,但是不能在單臺服務器上存儲那麼多的數據。你通常每個都會有幾個teras。 所以我的問題是,我如何處理它以存儲在羣集的節點中,然後當它需要更多空間時,添加另一個,它會自動處理髮布到新服務器還是必須使用權重在分片分配中。如何管理集羣中的ClickHouse服務器在磁盤滿時的存儲

當您在一臺服務器上有多個磁盤時,如何使用它們來存儲數據?

有沒有辦法在雲中存儲非常舊的數據並在需要時下載?例如,所有超過2年的數據都可以存儲在Amazon S3中,因爲它幾乎不會被請求,如果是這樣,則需要較長時間才能獲取數據,但不會成爲問題。

你會發現什麼解決方案?處理日益龐大的數據庫以避免將來出現磁盤空間問題。

由於

回答

3

我將假定使用標準配置爲ClickHouse羣集:幾個碎片組成的2-3副本節點,以及這些節點的每一個包含數據用於其各自碎片一個ReplicatedMergeTree表。在一個或多個節點上還創建了分佈表,用於查詢集羣的節點(relevant section in the docs)。

當您添加新的分片時,舊數據不會自動移動到它。推薦的方法的確如「放置權重」一樣,即增加新節點的權重,直到數據量均勻爲止。但是,如果您想立即重新平衡數據,則可以使用命令。仔細閱讀文檔並記住該命令的各種限制,例如它不是原子的。

當一臺服務器中有多個磁盤時,如何使用它們來存儲數據?

請閱讀關於在the administration tips中配置RAID的部分。

有沒有辦法將非常舊的數據存儲在雲中並在需要時下載?例如,所有超過2年的數據都可以存儲在Amazon S3中,因爲它幾乎不會被請求,如果是這樣,則需要較長時間才能獲取數據,但不會成爲問題。

ClickHouse中的MergeTree表按月分區。您可以使用ALTER TABLE DETACH/ATTACH PARTITION命令來操作分區。你可以例如在每個月的開始時,將分區分開一些較舊的月份並將其備份到Amazon S3。或者你可以設置一個具有足夠磁盤空間的廉價機器集羣,並在那裏手動移動舊分區。如果您的查詢始終包含日期過濾器,則不相關的分區將自動跳過,否則您可以設置兩個分佈式表:table_recent和table_all(集羣配置包括具有舊分區的節點)。

相關問題