全网最细~ Clickhouse ~ 均衡节点数据脚本《大力仑出品必属精品》

全网最细~ Clickhouse 均衡节点数据脚本《大力仑出品必属精品》

脚本需要修改的内容:
new_hostname -> 新节点hostname
partition.txt -> 需要均衡的表分区
old_hostname -> 久节点hostname
gesaas.ych_v2 -> 需要均衡的库名.表名
/clickhouse/tables/01/gesaas/ych_v2 -> old_hostname节点存储在zk 上的元数据目录

执行脚本命令
sh clickhouse-remove.sh hostname port default password ck_home/

#!/bin/bash

# 参数检查
if [ $# -ne 5 ]; then
    echo "Usage: $0 <host_ip> <http_port> <user> <password> <ck_home/>"
    exit 1
fi

host_ip=$1
http_port=$2
user=$3
password=$4
ck_home=$5

# 函数:迁移分区数据
function migratory() {
    partition=$1

    # Fetch
    ${ck_home}clickhouse-client --host new_hostname -q "alter table gesaas.ych_v2 fetch partition $partition from '/clickhouse/tables/01/gesaas/ych_v2'"
    if [ $? -ne 0 ]; then
        echo "Error: Failed to fetch partition $partition"
        return 1
    fi

    # Attach
    ${ck_home}clickhouse-client --host new_hostname -q "alter table gesaas.ych_v2 attach partition '$partition'"
    if [ $? -ne 0 ]; then
        echo "Error: Failed to attach partition $partition"
        return 1
    fi

    # Drop
    ${ck_home}clickhouse-client --host old_hostname -q "alter table gesaas.ych_v2 drop partition $partition"
    if [ $? -ne 0 ]; then
        echo "Error: Failed to drop partition $partition"
        return 1
    fi

    echo "Successfully migrated partition $partition"
    return 0
}

# 检查 partition.txt 文件是否存在
if [ ! -f partition.txt ]; then
    echo "Error: partition.txt file not found!"
    exit 1
fi

# 读取 partition.txt 文件中的每一行并调用 migratory 函数
while read -r line; do
    if [ -n "$line" ]; then
        migratory $line
    else
        echo "Warning: Empty line detected in partition.txt"
    fi
done < partition.txt

  • 39
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值