Clickhouse 純手工遷移表
阿新 • • 發佈:2022-04-01
[應用場景]
由於一些未可知的原因,導致原表不可用,也不能恢復.通過手動遷移的方法來恢復業務
[解決辦法]
新建一張 copy 表,把原表的 data 目錄複製到新表的data 目錄,並 attach 上去,然後刪除舊錶,把新表重新命名為舊錶.來恢復業務
比如說原表為 default.a ,具體步驟如下:
-
根據 a 表 memtadata 檔案 /data/clickhouse/clickhouse-server/metadata/default/a.sql 檔案新建一張跟 a 表表結構完全一致的新表 n
-
把 a 表 /data/clickhouse/clickhouse-server/data/default/a 目錄下所有分割槽目錄 copy 到 n 表的 detached 目錄 /data/clickhouse/clickhouse-server/data/default/n/detached 下
-
在 n 表目錄 /data/clickhouse/clickhouse-server/data/default/n/detached 下執行批量 attach 分割槽命令:
let i=1;for f in \
ls -1` ; do echo $i $f;((i++)); echo "alter table A.d attach part '$f';"|clickhouse-client ; done` -
檢查 n 表資料是否全部 attach 上
-
drop table 舊錶, 並重命名新表 rename table n to a ,恢復業務