TiDB 應急運維腳本,更加方便的管理TiDB集群

TiDB 應急運維腳本,更加方便的管理TiDB集群

使用方法

使用方法:[tidb@localhost ~]$ which tiup
~/.tiup/bin/tiup編輯腳本,MYSQL_PASSWD 和 PORT 根據實際替換 
[tidb@localhost ~]$ vi ~/.tiup/bin/ti#version 1.1
#@author guanguanglei
##########################################################
#date 2023/06/14 version 1.0#!/bin/shMYSQL_USER=root
MYSQL_PASSWD=root 
PORT=4000          
TIDB_HOST=127.0.0.1
TIDB_CONNSTR="mysql -u$MYSQL_USER -p$MYSQL_PASSWD -h$TIDB_HOST -P$PORT"
CLUSTER_NAME=gsc-quotation
case $1 in si)${TIDB_CONNSTR};;info)${TIDB_CONNSTR} -e "select * from information_schema.CLUSTER_INFO;";;user)${TIDB_CONNSTR} -e "select user,host from mysql.user;";;tidb)tiup cluster display  $CLUSTER_NAME;;edit)tiup cluster edit-config  $CLUSTER_NAME;;var)if [ "$2"x != x ]; then${TIDB_CONNSTR} -e "show variables like '%$2%';"else echo "please input second paramter with variable name"fi;;config)if [ "$2"x != x ]; then${TIDB_CONNSTR} -e "show config where name  like '%$2%';"elseecho "please input config "fi;;list)${TIDB_CONNSTR} -e "select * from information_schema.cluster_processlist;";;listt)${TIDB_CONNSTR} -e "select * from information_schema.cluster_processlist order by time desc ;";;active)${TIDB_CONNSTR} -e "select * from information_schema.cluster_processlist where info is not null order by time desc \G;";;kill)${TIDB_CONNSTR} -e "select concat(concat('mysql -u$MYSQL_USER -p$MYSQL_PASSWD -h ',substring_index(a.INSTANCE,':',1), ' -P',substring_index(a.INSTANCE,':',-1) ,' -e '  ),concat('\"kill tidb ',b.id,';\"')) from information_schema.CLUSTER_info a join information_schema.cluster_processlist b on a.STATUS_ADDRESS=b.instance;";;kstat)if [ "$2"x != x ]; then${TIDB_CONNSTR} -e "select concat(concat('mysql -u$MYSQL_USER -p$MYSQL_PASSWD -h ',substring_index(a.INSTANCE,':',1), ' -P',substring_index(a.INSTANCE,':',-1) ,' -e '  ),concat('\"kill tidb ',b.id,';\"')) from information_schema.CLUSTER_info a join information_schema.cluster_processlist b on a.STATUS_ADDRESS=b.instance where state='$2';"else echo "please input second paramter with session state"fi;;ksql)if [ "$2"x != x ]; then${TIDB_CONNSTR} -e "select concat(concat('mysql -u$MYSQL_USER -p$MYSQL_PASSWD -h ',substring_index(a.INSTANCE,':',1), ' -P',substring_index(a.INSTANCE,':',-1) ,' -e '  ),concat('\"kill tidb ',b.id,';\"')) from information_schema.CLUSTER_info a join information_schema.cluster_processlist b on a.STATUS_ADDRESS=b.instance where digest='$2';"elseecho "please input second paramter with sql digest"fi;;kid)if [ "$2"x != x ]; then${TIDB_CONNSTR} -e "select concat(concat('mysql -u$MYSQL_USER -p$MYSQL_PASSWD -h ',substring_index(a.INSTANCE,':',1), ' -P',substring_index(a.INSTANCE,':',-1) ,' -e '  ),concat('\"kill tidb ',b.id,';\"')) from information_schema.CLUSTER_info a join information_schema.cluster_processlist b on a.STATUS_ADDRESS=b.instance  where id='$2';"elseecho "please input second paramter with connect id"fi;;klike)if [ "$2"x != x ]; then${TIDB_CONNSTR} -e "select concat(concat('mysql -u$MYSQL_USER -p$MYSQL_PASSWD -h ',substring_index(a.INSTANCE,':',1), ' -P',substring_index(a.INSTANCE,':',-1) ,' -e '  ),concat('\"kill tidb ',b.id,';\"')) from information_schema.CLUSTER_info a join information_schema.cluster_processlist b on a.STATUS_ADDRESS=b.instance  where info like '%$2%';"elseecho "please input info like "fi;;plan)if [ "$2"x != x ]; then${TIDB_CONNSTR} -e  "select SUMMARY_BEGIN_TIME,SUMMARY_END_TIME,STMT_TYPE,SCHEMA_NAME,DIGEST,DIGEST_TEXT,TABLE_NAMES,INDEX_NAMES,QUERY_SAMPLE_TEXT,PLAN_DIGEST,PLAN from information_schema.statements_summary where digest='$2'\G;"elseecho "please input second paramter with sql digest"fi;;size)if [ "$2"x != x ] && [ "$3"x != x ]; then${TIDB_CONNSTR} -e  "SELECT TABLE_NAME,(DATA_LENGTH+INDEX_LENGTH)/1024/1024 mb,TABLE_ROWS FROM information_schema.TABLES WHERE TABLE_SCHEMA='$2' AND TABLE_NAME='$3';"elseecho "please input second paramter with table owner and table_name"fi;;index)if [ "$2"x != x ] && [ "$3"x != x ]; then${TIDB_CONNSTR} -e  "show indexes from $2.$3;"elseecho "please input second paramter table_owner table_name"fi;;  stats_meta)if [ "$2"x != x ] && [ "$3"x != x ]; then${TIDB_CONNSTR} -e  "show stats_meta where db_name='$2' table_name='$3';"elseecho "please input second paramter table_owner table_name"fi;; stats_histograms)if [ "$2"x != x ] && [ "$3"x != x ]; then${TIDB_CONNSTR} -e  "show stats_histograms where  db_name='$2' and db_name='$3';"elseecho "please input second paramter table_owner table_name"fi;;dump)if [ "$2"x != x ] && [ "$3"x != x ]; then${TIDB_CONNSTR} -e  "select concat(' tiup dumpling -uroot -p   -h --filetype csv -t 8 -o /tmp/backup -f   ', '''', table_schema,'.',table_name,'''' ' --sql ''select * from ',table_name,'''') from tables where  table_schema='$2' and table_name='$3';"elseecho "please input second paramter table_owner table_name"fi;;ctl)${TIDB_CONNSTR} -e  "select concat('tiup ctl:',(select substring(version(),13,19)),'  pd  -u  http://',  (select INSTANCE from information_schema.cluster_info where TYPE='pd' limit 1),'  -i') from dual;
";;*)echoecho "Usage: mib keyword [value1] ";echo echo "  -----------------------------------------------------------------";echo "  si                          -- login tidb database";echo "  info                        -- show cluster info";echo "  tidb                        -- tiup cluster display";echo "  edit                        -- show cluster edit";echo "  user                        -- list all user";echo "  var                         -- show variables like ";echo "  config                      -- show config where name like ";echo "  list                        -- show  processlist";echo "  listt                       -- processlist order by time";  echo "  active                       -- processlist order by time limit 10";echo "  kill                        -- kill all session ";echo "  kstat                       -- kill session state";echo "  ksql                        -- kill sql session;";    echo "  kid                         -- kill session id";  echo "  klike                       -- kill info like "; echo "  plan                        -- list sql plan";  echo "  size                        -- get table size ";echo "  index                       -- get  on table index";echo "  stats_meta                  -- getstats_meta on table";echo "  stats_histograms            -- get cloumn statistics on table";echo "  ctl                         -- print tiup ctl command";    
;;
esac

修改權限

[tidb@localhost ~]$ chmod 775 ~/.tiup/bin/ti

使用示例


1. 查看集群狀態
ti  tidb 2. 登錄數據庫
[tidb@localhost ~]$ ti si
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 820992
Server version: 5.7.25-TiDB-v4.0.13-1-g7eeeda700 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatibleCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> 3.查看活躍會話
[tidb@localhost ~]$ ti active 
*************************** 1. row ***************************
INSTANCE: xxxxxxxx :10080ID: 820997USER: rootHOST: 127.0.0.1DB: NULLCOMMAND: QueryTIME: 0STATE: 2INFO: select * from information_schema.cluster_processlist where info is not null order by time descDIGEST: 6140c4093c70debc9c729807414f36c32fad049daecf2d5655afd10a2374fae9MEM: 6
TxnStart: 08-10 15:22:29.866(443456461174472707)4. 登錄pd 
[root@vm10-2-103-65 ~]# ti ctl
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| concat('tiup ctl:',(select substring(version(),13,19)),'  pd  -u  http://',  (select INSTANCE from information_schema.cluster_info where TYPE='pd' limit 1),'  -i') |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tiup ctl:v7.1.0  pd  -u  http://10.2.103.65:2379  -i                                                                                                                |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@vm10-2-103-65 ~]# tiup ctl:v7.1.0  pd  -u  http://10.2.103.65:2379  -i 
Starting component `ctl`: /root/.tiup/components/ctl/v7.1.0/ctl pd -u http://10.2.103.65:2379 -i
?  5. 查看參數
[root@vm10-2-103-65 ~]# ti var oom
+--------------------------------+--------+
| Variable_name                  | Value  |
+--------------------------------+--------+
| tidb_enable_tmp_storage_on_oom | ON     |
| tidb_mem_oom_action            | CANCEL |
+--------------------------------+--------+查看config參數 
root@vm10-2-103-65 ~]# ti config block-cache
+------+--------------------+-------------------------------------------+----------+
| Type | Instance           | Name                                      | Value    |
+------+--------------------+-------------------------------------------+----------+
| tikv | 10.2.103.199:20160 | raftdb.defaultcf.block-cache-size         | 317MiB   |
| tikv | 10.2.103.199:20160 | raftdb.defaultcf.disable-block-cache      | false    |
| tikv | 10.2.103.199:20160 | raftdb.defaultcf.prepopulate-block-cache  | disabled |
| tikv | 10.2.103.199:20160 | rocksdb.defaultcf.block-cache-size        | 3971MiB  |
| tikv | 10.2.103.199:20160 | rocksdb.defaultcf.disable-block-cache     | false    |
| tikv | 10.2.103.199:20160 | rocksdb.defaultcf.prepopulate-block-cache | disabled |6.查看執行計劃
[root@vm10-2-103-65 ~]# ti plan 76069b6abc74fc855272108f656d4d1132948a55a3b12f66eaa4373648380d81
*************************** 1. row ***************************
SUMMARY_BEGIN_TIME: 2023-08-10 15:30:00SUMMARY_END_TIME: 2023-08-10 16:00:00STMT_TYPE: SelectSCHEMA_NAME: NULLDIGEST: 76069b6abc74fc855272108f656d4d1132948a55a3b12f66eaa4373648380d81DIGEST_TEXT: select * from `information_schema` . `cluster_processlist` where `info` is not ? order by time descTABLE_NAMES: information_schema.cluster_processlistINDEX_NAMES: NULLQUERY_SAMPLE_TEXT: select * from information_schema.cluster_processlist where info is not null order by time descPLAN_DIGEST: deabf06ff5a37585b637b6bc4ddf0bb2affc0aa92148953d10f678359c7cda69PLAN:     id                      task            estRows operator info                                                   actRows execution info                                                                                                                                                                      memory          diskSort_5                  root            9990    information_schema.cluster_processlist.time:desc                1       time:41.9ms, loops:2                                                                                                                                                                7.70 KB         0 Bytes└─TableReader_10        root            9990    data:Selection_9                                                1       time:41.9ms, loops:2, cop_task: {num: 2, max: 41.8ms, min: 41.5ms, avg: 41.6ms, p95: 41.8ms, rpc_num: 2, rpc_time: 83.2ms, copr_cache_hit_ratio: 0.00, max_distsql_concurrency: 2}  727 Bytes       N/A└─Selection_9         cop[tidb]       9990    not(isnull(information_schema.cluster_processlist.info))        0                                                                                                                                                                                           N/A             N/A└─TableFullScan_8   cop[tidb]       10000   table:CLUSTER_PROCESSLIST, keep order:false, stats:pseudo       0                                                                                                                                                                                           N/A             N/A7. kill 會話 
[root@vm10-2-103-65 ~]# ti kid 716063544658887111
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| concat(concat('mysql -uroot -pM4Ab_d03%pQ27^1Xa# -h ',substring_index(a.INSTANCE,':',1), ' -P',substring_index(a.INSTANCE,':',-1) ,' -e '  ),concat('"kill tidb ',b.id,';"')) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| mysql -uroot -pM4Ab_d03%pQ27^1Xa# -h 10.2.103.65 -P4000 -e "kill tidb 716063544658887111;"                                                                                    |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@vm10-2-103-65 ~]#  mysql -uroot -pM4Ab_d03%pQ27^1Xa# -h 10.2.103.65 -P4000 -e "kill tidb 716063544658887111;"  8.常用命令
[root@vm10-2-103-65 ~]# ti Usage: mib keyword [value1] -----------------------------------------------------------------si                          -- login tidb databaseinfo                        -- show cluster infouser                        -- list all uservar                         -- show variables like config                      -- show config where name like list                        -- show  processlistlistt                       -- processlist order by timeactive                       -- processlist order by time limit 10kill                        -- kill all session kstat                       -- kill session stateksql                        -- kill sql session;kid                         -- kill session idklike                       -- kill info like plan                        -- list sql plansize                        -- get table size index                       -- get  on table indexstats_meta                  -- getstats_meta on tablestats_histograms            -- get cloumn statistics on tablectl                         -- print tiup ctl command

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37006.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37006.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37006.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Base64編碼-算法特別的理解

Base64 在DES加密和AES加密的過程中,加密的編碼會出現負數,在ascii碼表中找不到對應的字符,就會出現亂碼。為了解決亂碼的問題,一般結合base64使用 所謂Base64,即是說在編碼過程中使用了64種字符:大寫A到Z、…

【GO】配置環境使加速下載 go 模塊

問題 在使用 go 語言編譯時,需要安裝一些包,這些包在使用 go build 或 go install 時,go 自己去下載,但是會有網絡不通導致無法下載的問題 解決 配置 go 的環境變量 go env -w GOPROXYhttps://goproxy.io,direct

chartGPT生成:python中連接函數的使用

在Python中,連接函數用于將多個字符串拼接在一起。常見的連接函數有join和操作符。 join函數: strings ["Hello", "world", "!"] result " ".join(strings) print(result) # 輸出:Hello world …

Azure資源命名和標記決策指南

參考 azure創建虛擬機在虛擬機中選擇編輯標簽,并添加標記,點擊應用 3.到主頁中轉到所有資源 4. 添加篩選器并應用 5.查看結果,篩選根據給服務器定義的標簽篩選出結果。 參考鏈接: https://learn.microsoft.com/zh-cn/azure/cloud-adoption…

在Java中操作Redis(詳細-->從環境配置到代碼實現)

在Java中操作Redis 文章目錄 在Java中操作Redis1、介紹2、Jedis3、Spring Data Redis3.1、對String的操作3.2、對哈希類型數據的操作3.3、對list的操作3.4、對set類型的操作3.5、對 ZSet類型的數據(有序集合)3.6、通用類型的操作 1、介紹 Redis 的Java客…

基于Echarts的數據可視化大屏

本項目學習于b站up主(視頻鏈接) up主分享的資料,gitee倉庫: 其中有筆記,筆記鏈接 項目總結 項目主要分為前端頁面的布局和Echarts圖表的嵌入,頁面主要就是css較為繁瑣,圖表畢竟官網有模板&…

Python 2.x 中如何使用pandas模塊進行數據分析

Python 2.x 中如何使用pandas模塊進行數據分析 概述: 在數據分析和數據處理過程中,pandas是一個非常強大且常用的Python庫。它提供了數據結構和數據分析工具,可以實現快速高效的數據處理和分析。本文將介紹如何在Python 2.x中使用pandas進行數據分析&am…

【深度學習_TensorFlow】自定義層實現cifar10

寫在前面 盡管 tf.keras 提供了很多的常用網絡層類,但深度學習可以使用的網絡層遠遠不止這些。科研工作者一般是自行實現了較為新穎的網絡層,經過大量實驗驗證有效后,深度學習框架才會跟進,內置對這些網絡層的支持。因此掌握自定…

學習筆記整理-面向對象-01-認識對象

一、認識對象 1. 對象 對象(object)是鍵值對的集合,表示屬性和值的映射關系。 對象的語法 k和v之間用冒號分割,每組k:v之間用逗號分割,最后一個k:v對后可以不書寫逗號。 屬性是否加引號 如果對象的屬性鍵名不符合命名規范,則這…

數組slice、splice字符串substr、split

一、定義 這篇文章主要對數組操作的兩種方法進行介紹和使用,包括:slice、splice。對字符串操作的兩種方法進行介紹和使用,包括:substr、split (一)、數組 slice:可以操作的數據類型有:數組字符串 splice:數組 操作數組…

一個基礎但全面的Vue的表單范例,很基礎,但是很容易,也很全面。

下面這個案例,路人朋友們可以直接粘貼到html文件類型中運行,注意引入Vuejs的路徑即可,不會改的可以參考我第一篇Vue入門,同時建議同志們手打,真的前端都不能熟能生巧,既不要編程了, 可以詳細看注…

計算機網絡-物理層(一)物理層的概念與傳輸媒體

計算機網絡-物理層(一)物理層的概念與傳輸媒體 物理層相關概念 物理層的作用用來解決在各種傳輸媒體上傳輸比特0和1的問題,進而為數據鏈路層提供透明(看不見)傳輸比特流的服務物理層為數據鏈路層屏蔽了各種傳輸媒體的差異,使數據…

最新Kali Linux安裝教程:從零開始打造網絡安全之旅

Kali Linux,全稱為Kali Linux Distribution,是一個操作系統(2013-03-13誕生),是一款基于Debian的Linux發行版,基于包含了約600個安全工具,省去了繁瑣的安裝、編譯、配置、更新步驟,為所有工具運行提供了一個…

[低端局][cx32L003] 移植U8G2

文章目錄 一、簡介(1)U8g2(2)U8x8 二、配置要求三、移植步驟(1)文件準備和添加(2)實現回調接口(I2C的讀寫函數)①軟件I2C②硬件I2C (3)功能裁剪① u8g2_d_set…

Gof23設計模式之模板方法模式

1.定義 定義一個操作中的算法骨架,而將算法的一些步驟延遲到子類中,使得子類可以不改變該算法結構的情況下重定義該算法的某些特定步驟。 2.結構 模板方法(Template Method)模式包含以下主要角色: 抽象類&#xff0…

Kerberos 重新認識 From Oracle安全

參考 https://docs.oracle.com/cd/E24847_01/html/819-7061/seamtm-1.html#scrolltoc Kerberos服務 Kerberos服務是一種網絡身份認證協議,由麻省理工學院(MIT)開發。它提供了強大的身份驗證功能,用于在計算機網絡中驗證用戶和服務…

買愛心氣球(nim博弈)

鏈接:登錄—專業IT筆試面試備考平臺_牛客網 來源:牛客網 Alice 和 Bob 是一對競技編程選手,他們路過了一家氣球店,發現有 m 個大愛心氣球和 n個小愛心氣球。他們決定玩一個游戲,游戲規則如下: Alice先手拿…

Python Selenium 設置帶賬號密碼的socks5代理,啟動瀏覽器

selenium添加帶有賬密的socks5代理 我們都知道在使用selenium開發爬蟲的時候不可避免的會使用socks5高匿名代理。一般情況下我們使用方法如下(開發語言為python): from selenium import webdriver chrome_options webdriver.ChromeOptions() chrome_options.add_…

Java并發之ReentrantLock

AQS AQS(AbstractQueuedSynchronizer):抽象隊列同步器,是一種用來構建鎖和同步器的框架。在是JUC下一個重要的并發類,例如:ReentrantLock、Semaphore、CountDownLatch、LimitLatch等并發都是由AQS衍生出來…

React Native Expo項目,復制文本到剪切板

裝包: npx expo install expo-clipboard import * as Clipboard from expo-clipboardconst handleCopy async (text) > {await Clipboard.setStringAsync(text)Toast.show(復制成功, {duration: 3000,position: Toast.positions.CENTER,})} 參考鏈接&#xff1a…