在構建數據倉庫或做數據分析時,需要對原始數據的結構進行一定的處理,有時涉及到“行轉列”,有時涉及到“列轉行”,那麼這兩個轉換的方式具體是什麼,有什麼差異,怎麼實現。 ...
測試驗證環境:
docker容器化部署的4節點2分片和2副本(centos7+clickhouse22.1.3)
172.17.0.6 clickhouse01
172.17.0.7 clickhouse02
172.17.0.8 clickhouse03
172.17.0.9 clickhouse04(故障節點)
172.17.0.10 clickhouse04 (替換節點)
節點重做
一般情況,節點操作系統重裝或者硬碟故障節點重做處理情況
一般都是兩副本以上的集群,所以可以直接同步另一個副本節點的配置,拷貝過來,節點正常安裝服務進程
需要的拷貝的東西有一下幾點:
1、配置文件(config.xml、users.xml),需要調整config.xml的配置文件,修改macros中的replica改成當前節點
2、鑒權目錄access
3、數據的映射目錄data(裡面的軟連接目錄可以忽略不用管)
4、元數據目錄metadata
5、實際的建表目錄,這個需要查到metadata下麵的資料庫對應的軟連接目錄給打包到新節點
將上面的三個目錄打成壓縮包,拷貝到重做節點,註意要是打包,不然軟連接會不存在,變成一個目錄了,這個沒有給連接到數據目錄等等的問題
比較複雜的是第五步的操作,一般情況下這個是作為一個數倉的存儲,創建的資料庫也不會很多,我們這邊的生產環境一般是7個資料庫,所以也就是拷貝store目錄下的7個目錄既即可,將他拷貝到重做節點的store目錄下就可以了,啟動之後,節點會檢測當前幾點與副本之前的區別,是空的節點會直接同步副本中的數據,但是這一步會很耗資源,需要挑一個合適的時間點來做
做好這些,啟動重做節點的clickhouse服務,查看啟動服務是否有報錯,沒有報錯的話就可以登錄節點查一下數據情況了,並且可以查看用戶和授權情況有沒有正常,然後測試數據寫入和讀取情況
節點故障替換
幾點替換操作可跟上面的操作一樣,但是集群需要使用的功能變數名稱映射的方式部署的,也就是不能通過ip來做的,如果是節點ip做的話,zookeeper元數據上的replicas下沒法對應 上,可能會有其他的問題,應該也可以通過命令來修複zookeeper的元數據
system restore replica default.st_order_mt_local on cluster two_shard_two_replica
這個是我的這個表元數據不在zookeeper上的,執行完成後查看zookeeper上就能查到這個元數據了
個人的見解說明,如有不足請指正
一般clickhouse節點的目錄都如下
access這個是跟許可權相關,資料庫的和用戶的授權關係,用戶的創建語句都在這個下麵,如果只是數據盤故障重做的,這個可以去相同分片節點去拷貝過來,這樣節點重啟的時候,就可以得到原來集群的授權關係和用戶信息
data這個目錄是實際數據存儲目錄,各個表的軟連接,全部都是連接到store目錄下,實際的數據存儲目錄是store下,可以用備用節點去查看備用節點的軟連接關係,這裡可以只創建軟連接地址,實際的數據不需要管,啟動之後會從副本中去同步數據