ToB企服应用市场:ToB评测及商务社交产业平台

标题: StarRocks 排查单副本表 [打印本页]

作者: 花瓣小跑    时间: 2024-12-28 19:07
标题: StarRocks 排查单副本表
文章目录


StarRocks 排查单副本表

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

  1. # 方式一 查询元数据,检查分区级的副本数
  2. with v_tmp1 as (
  3.   select
  4.     TABLE_ID, PARTITION_ID, tablet_id, count(*) as cnt
  5.   from
  6.     information_schema.be_tablets
  7.   group by
  8.     TABLE_ID, PARTITION_ID, tablet_id
  9.   having
  10.     count(*) = 1
  11. )
  12. select /*+ set_var(query_timeout = 20) */
  13.   distinct t1.TABLE_SCHEMA, t1.TABLE_NAME
  14. from information_schema.tables_config t1
  15. join v_tmp1 t2 on t1.TABLE_ID = t2.TABLE_ID
  16. ;
复制代码
方式2 SHOW PARTITIONS命令查看 ReplicationNum

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

  1. # 修改副本数命令
  2. # 修改表基本副本数
  3. ALTER TABLE example_db.my_table SET ("default.replication_num" = "2");
  4. # 单分区副本数
  5. ALTER TABLE example_db.my_table SET ("replication_num" = "2");
  6. # 历史分区副本数
  7. ALTER TABLE example_db.my_table MODIFY PARTITION (*) SET("replication_num"="2");
复制代码
遍历所有库表实行SHOW PARTITIONS命令
  1. import pymysql
  2. import logging
  3. logging.basicConfig(level=logging.INFO,
  4.                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
  5.                     filemode='a',
  6.                     filename='./sr.log'
  7.                     )
  8. ip = '10.xx'
  9. port = 9030
  10. user = 'xx'
  11. passwd = 'xx'
  12. database = 'information_schema'
  13. class MysqlUtils(object):
  14.     def __init__(self, ip, port, user, passwd, database):
  15.         self.ip = ip
  16.         self.port = port
  17.         self.user = user
  18.         self.passwd = passwd
  19.         self.database = database
  20.         self.conn = None
  21.         self.cur = None
  22.         try:
  23.             self.conn = pymysql.connect(host=self.ip, user=self.user, passwd=self.passwd, port=self.port,
  24.                                         charset='utf8', database=self.database)
  25.         except Exception as e:
  26.             logging.error("连接失败:{}".format(e))
  27.         if self.conn:
  28.             self.cur = self.conn.cursor()
  29.     def close(self):
  30.         if self.cur:
  31.             self.cur.close()
  32.         if self.conn:
  33.             self.conn.close()
  34.     def insert_data(self, sql, data):
  35.         if self.cur:
  36.             # cur = conn.cursor(pymysql.cursors.DictCursor)
  37.             try:
  38.                 self.cur.executemany(sql, data)
  39.             except pymysql.Error as e:
  40.                 logging.error("executemany执行失败:{}".format(e))
  41.                 self.conn.rollback()
  42.                 self.conn.close()
  43.             self.conn.commit()
  44.     def select_data(self,sql):
  45.         if self.cur:
  46.             self.cur.execute(sql)
  47.             res = self.cur.fetchall()
  48.             return res
  49. def start():
  50.     obj = MysqlUtils(ip, port, user, passwd, database)
  51.     sql1 = "show databases;"
  52.     dbs = obj.select_data(sql1)  # (('_statistics_',), ('ads_biz',))
  53.     dbs = [d[0] for d in dbs if d[0] not in ('_statistics_','information_schema')]
  54.         resu = list()
  55.     for db in dbs:
  56.         sql2 = "show tables from {}".format(db)
  57.         tables = obj.select_data(sql2)
  58.         tables = [t[0] for t in tables]
  59.         # print(tables)
  60.         for table in tables:
  61.             # sql3 = "show create table `{}`.`{}`".format(db,table)
  62.             # sql3 = """ ALTER TABLE `{}`.`{}` MODIFY PARTITION (*) SET("replication_num"="2"); """ .format(db,table)
  63.             sql3 = "SHOW  PARTITIONS FROM `{}`.`{}` WHERE ReplicationNum = 1".format(db,table)
  64.             logging.info(sql3)
  65.             try:
  66.                 res = obj.select_data(sql3)  
  67.             except Exception as e:
  68.                 logging.error(e)
  69.             if res:
  70.                 resu.append(res)
  71.     obj.close()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4