StarRocks 排查单副本表

文章目录

    • [StarRocks 排查单副本表](#StarRocks 排查单副本表)
      • [方式1 查询元数据,检查分区级的副本数](#方式1 查询元数据,检查分区级的副本数)
      • [方式2 SHOW PARTITIONS命令查看 ReplicationNum](#方式2 SHOW PARTITIONS命令查看 ReplicationNum)
      • 修改副本数命令

StarRocks 排查单副本表

方式1 查询元数据,检查分区级的副本数

sql 复制代码
# 方式一 查询元数据,检查分区级的副本数
with v_tmp1 as (
  select
    TABLE_ID, PARTITION_ID, tablet_id, count(*) as cnt
  from
    information_schema.be_tablets
  group by
    TABLE_ID, PARTITION_ID, tablet_id
  having
    count(*) = 1
) 
select /*+ set_var(query_timeout = 20) */
  distinct t1.TABLE_SCHEMA, t1.TABLE_NAME
from information_schema.tables_config t1 
join v_tmp1 t2 on t1.TABLE_ID = t2.TABLE_ID
;

方式2 SHOW PARTITIONS命令查看 ReplicationNum

shell 复制代码
# 方式二 遍历所有库表SHOW PARTITIONS命令查看 ReplicationNum
SHOW  PARTITIONS FROM [db_name.]table_name WHERE ReplicationNum = 1

修改副本数命令

shell 复制代码
# 修改副本数命令
# 修改表基本副本数
ALTER TABLE example_db.my_table SET ("default.replication_num" = "2");
# 单分区副本数
ALTER TABLE example_db.my_table SET ("replication_num" = "2");
# 历史分区副本数
ALTER TABLE example_db.my_table MODIFY PARTITION (*) SET("replication_num"="2");

遍历所有库表执行SHOW PARTITIONS命令

python 复制代码
import pymysql
import logging
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    filemode='a',
                    filename='./sr.log'
                    )

ip = '10.xx'
port = 9030
user = 'xx'
passwd = 'xx'
database = 'information_schema'

class MysqlUtils(object):
    def __init__(self, ip, port, user, passwd, database):
        self.ip = ip
        self.port = port
        self.user = user
        self.passwd = passwd
        self.database = database
        self.conn = None
        self.cur = None
        try:
            self.conn = pymysql.connect(host=self.ip, user=self.user, passwd=self.passwd, port=self.port,
                                        charset='utf8', database=self.database)
        except Exception as e:
            logging.error("连接失败:{}".format(e))
        if self.conn:
            self.cur = self.conn.cursor()

    def close(self):
        if self.cur:
            self.cur.close()
        if self.conn:
            self.conn.close()

    def insert_data(self, sql, data):
        if self.cur:
            # cur = conn.cursor(pymysql.cursors.DictCursor)
            try:
                self.cur.executemany(sql, data)
            except pymysql.Error as e:
                logging.error("executemany执行失败:{}".format(e))
                self.conn.rollback()
                self.conn.close()
            self.conn.commit()


    def select_data(self,sql):
        if self.cur:
            self.cur.execute(sql)
            res = self.cur.fetchall()
            return res


def start():

    obj = MysqlUtils(ip, port, user, passwd, database)
    sql1 = "show databases;"
    dbs = obj.select_data(sql1)  # (('_statistics_',), ('ads_biz',))
    dbs = [d[0] for d in dbs if d[0] not in ('_statistics_','information_schema')]
	resu = list()
    for db in dbs:

        sql2 = "show tables from {}".format(db)
        tables = obj.select_data(sql2)
        tables = [t[0] for t in tables]
        # print(tables)

        for table in tables:
            # sql3 = "show create table `{}`.`{}`".format(db,table)
            # sql3 = """ ALTER TABLE `{}`.`{}` MODIFY PARTITION (*) SET("replication_num"="2"); """ .format(db,table)
            sql3 = "SHOW  PARTITIONS FROM `{}`.`{}` WHERE ReplicationNum = 1".format(db,table)
            logging.info(sql3)
            try:
                res = obj.select_data(sql3)  
            except Exception as e:
                logging.error(e)
            if res:
                resu.append(res)
    obj.close()
相关推荐
StarRocks_labs6 天前
RAG 实战|用 StarRocks + DeepSeek 构建智能问答与企业知识库
数据库·starrocks·数据分析·spark·olap·湖仓一体·deepseek
鸿乃江边鸟7 天前
Starrocks 数据均衡DiskAndTabletLoadReBalancer的实现
大数据·starrocks·sql
不剪发的Tony老师8 天前
StarRocks:一款开源的高性能分析型数据仓库
starrocks·数据仓库
StarRocks_labs8 天前
StarRocks Community Monthly Newsletter (Mar)
starrocks·数据仓库·数据分析·olap·湖仓一体
镜舟科技12 天前
NoSQL 与 NewSQL 全面对比:如何选择适合你的数据库方案?
数据库·starrocks·nosql·newsql·技术架构·实时数据分析
镜舟科技13 天前
镜舟科技助力某大型电网企业破解数据架构升级难题,打造国产化湖仓标杆
大数据·starrocks·数据分析·开源·lakehouse·分析型数据库·湖仓
Tapdata 钛铂数据13 天前
TapData 与 StarRocks 完成兼容性互认证,携手共建实时数据智能生态,联合打造端到端全链路实时数仓解决方案
starrocks·实时数仓·数据集成·实时数据平台
鸿乃江边鸟17 天前
Starrocks的Bitmap索引和Bloom filter索引以及全局字典
大数据·starrocks·sql
StarRocks_labs21 天前
StarRocks 助力首汽约车精细化运营
大数据·数据库·starrocks·spark·数据查询·存算分离
不确定性确定你我21 天前
使用 kind 创建 K8s 集群并部署 StarRocks 的完整指南
starrocks·云原生·kubernetes·部署·kind