目的
在使用 TiDB 的過程中,經(jīng)常會遇到一些慢 SQL 的問題,當(dāng)需要尋求 TIDB 原廠協(xié)助,或者在官方論壇發(fā)帖的時候,大概率需要收集以下信息:
- 版本信息:
select tidb_version();
- 版本信息:
- 表結(jié)構(gòu):
show create table table_name;
- 表結(jié)構(gòu):
- 表的統(tǒng)計信息:
curl http://tidb_ip:status_port/stats/dump/db_name/table_name >table_name.json(默認(rèn)端口為 10080)
- 表的統(tǒng)計信息:
- 執(zhí)行 SQL 和執(zhí)行計劃
統(tǒng)計信息相關(guān)官方介紹: 統(tǒng)計信息簡介
為了快速拿到相關(guān)表的統(tǒng)計信息,表結(jié)構(gòu),并且方便官方快速導(dǎo)入表結(jié)構(gòu)和統(tǒng)計信息。因此寫了相關(guān)腳本,進行一鍵導(dǎo)出導(dǎo)入。
注意: 導(dǎo)入統(tǒng)計信息的時候,需要創(chuàng)建對應(yīng)的庫,否則導(dǎo)入會報錯。
腳本書寫
功能:
可以導(dǎo)出整個集群的表結(jié)構(gòu)和統(tǒng)計信息
可以指定庫導(dǎo)出表結(jié)構(gòu)和統(tǒng)計信息
可以指定表進行導(dǎo)出相關(guān)表結(jié)構(gòu)和統(tǒng)計信息
會生成一個壓縮文件,其中 schema.sql 中是創(chuàng)建表/庫語句,和 load 統(tǒng)計信息語句。
用法
./Stats_dump.py -h
usage: Stats_dump.py [-h] [-tu TIDB] [-H MYSQL] [-u USER] [-p PASSWORD]
[-d DATABASE] [-t TABLES]
Export statistics and table structures
optional arguments:
-h, --help show this help message and exit
-tu TIDB tidb status url, default: 127.0.0.1:10080
-H MYSQL Database address and port, default: 127.0.0.1:4000
-u USER Database account, default: root
-p PASSWORD Database password, default: null
-d DATABASE Database name, for example: test,test1, default: None
-t TABLES Table name (database.table), for example: test.test,test.test2, default: None
-
參數(shù)說明
-
-tu后填 TIDB 的 IP 地址和 status 端口,端口默認(rèn)為 10080 -
-H后填 TiDB 的 IP 地址和連接端口,端口默認(rèn)是 4000 -
-u為數(shù)據(jù)庫登錄賬戶 -
-p為數(shù)據(jù)庫登錄密碼 -
-d為需要導(dǎo)出統(tǒng)計信息的庫,如果使用該參數(shù),就是代表將會導(dǎo)出對應(yīng)庫所有表的統(tǒng)計信息和表結(jié)構(gòu)。比如填-d test1,test2,就是講test1和test2庫下的表的統(tǒng)計信息和表結(jié)構(gòu)導(dǎo)出 -
-t導(dǎo)出對應(yīng)表的統(tǒng)計信息、表結(jié)構(gòu)。需要注意格式:database_name.table_name。比如填-t test1.t1,test2.t2,代表將會導(dǎo)出 test1 庫 t1 表和 test2 庫 t2 表的表結(jié)構(gòu)和統(tǒng)計信息。
-
-
注意
- 如果
-d和-t都沒有指定,默認(rèn)是導(dǎo)出除了系統(tǒng)表以外所有表的統(tǒng)計信息和表結(jié)構(gòu)。 - 不會導(dǎo)出
"INFORMATION_SCHEMA", "PERFORMANCE_SCHEMA","mysql", "default"庫的表結(jié)構(gòu)和統(tǒng)計信息。
- 如果