1. 程式人生 > 其它 >Clickhouse 純手工遷移表

Clickhouse 純手工遷移表

[應用場景]
由於一些未可知的原因,導致原表不可用,也不能恢復.通過手動遷移的方法來恢復業務

[解決辦法]
新建一張 copy 表,把原表的 data 目錄複製到新表的data 目錄,並 attach 上去,然後刪除舊錶,把新表重新命名為舊錶.來恢復業務
比如說原表為 default.a ,具體步驟如下:

  1. 根據 a 表 memtadata 檔案 /data/clickhouse/clickhouse-server/metadata/default/a.sql 檔案新建一張跟 a 表表結構完全一致的新表 n

  2. 把 a 表 /data/clickhouse/clickhouse-server/data/default/a 目錄下所有分割槽目錄 copy 到 n 表的 detached 目錄 /data/clickhouse/clickhouse-server/data/default/n/detached 下

  3. 在 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`

  4. 檢查 n 表資料是否全部 attach 上

  5. drop table 舊錶, 並重命名新表 rename table n to a ,恢復業務