#!/bin/bash
# StarRocks检查单副本表的脚本
# 使用方法: ./check_replication_num.sh [fe_host] [query_port] [username] [password]
# 参数设置
FE_HOST="127.0.0.1" # FE主机地址,默认localhost
QUERY_PORT="9030" # 查询端口,默认9030
USERNAME="root" # 用户名,默认root
PASSWORD="123456" # 密码,默认为空
LOG_FILE="single_replica_tables.log"
DATABASES=("test")
# 检查mysql客户端是否可用
if ! command -v mysql &> /dev/null; then
echo "错误: mysql客户端未安装,请先安装MySQL客户端"
exit 1
fi
# 清空或创建日志文件
> "$LOG_FILE"
# 获取当前时间
current_time=$(date "+%Y-%m-%d %H:%M:%S")
echo "检查开始时间: $current_time" | tee -a "$LOG_FILE"
# 检查每个数据库
for db in "${DATABASES[@]}"; do
echo "正在检查数据库: $db" | tee -a "$LOG_FILE"
# 获取该数据库下所有表名
tables=$(mysql -h$FE_HOST -P$QUERY_PORT -u$USERNAME -p$PASSWORD -N -e "SHOW TABLES FROM $db;")
if [ $? -ne 0 ]; then
echo "无法连接StarRocks或访问数据库 $db" | tee -a "$LOG_FILE"
continue
fi
# 检查每个表的副本数
for table in $tables; do
replication_num=$(mysql -h$FE_HOST -P$QUERY_PORT -u$USERNAME -p$PASSWORD -N -e "SHOW CREATE TABLE $db.$table\G" | grep "replication_num" | grep -oP '(?<=")\d+(?=")' )
echo "replication_num is $replication_num" | tee -a "$LOG_FILE"
if [ "$replication_num" == "1" ]; then
echo "发现单副本表: $db.$table (replication_num = $replication_num)" | tee -a "$LOG_FILE"
fi
done
done
# 统计结果
single_count=$(grep -c "发现单副本表" "$LOG_FILE")
echo "检查完成,共发现 $single_count 个单副本表" | tee -a "$LOG_FILE"
current_time=$(date "+%Y-%m-%d %H:%M:%S")
echo "检查结束时间: $current_time" | tee -a "$LOG_FILE"
Shell脚本检查Starrocks表中是否存在单副本
最新推荐文章于 2025-10-24 11:08:21 发布
160

被折叠的 条评论
为什么被折叠?



