TiDB 基礎(chǔ)操作集

一祭刚、硬件選型

1、測試環(huán)境推薦配置

2、生產(chǎn)環(huán)境推薦配置

3、 如果 tikv 服務(wù)器的 CPU及磁盤配置較高扔亥,可以考慮多實(shí)例部署柒瓣,按照每個 tikv 實(shí)例16~20core + 64G 內(nèi)存 + 800G 磁盤的比例分配硬件資源褪秀。

同時需要注意 inventory.ini 及 ansible/conf/tikv.yml 的相關(guān)配置。


4捶牢、tidb 服務(wù)器視業(yè)務(wù)類型,如果業(yè)務(wù)邏輯有偏 AP 類的 SQL杏慰,需要考慮配置大內(nèi)存擎颖,防止出現(xiàn) OOM聋丝。

如果是純 TP 類業(yè)務(wù)焦读,tidb 服務(wù)器 CPU 配置較高的話,也可以考慮多實(shí)例部署羡亩,每個 tidb-server 分配20~32core瓦灶,可以避免無謂的CPU上下文切換眨层, 減少 system cpu 消耗捺疼。


5卧秘、pd 服務(wù)器的磁盤可以配置200~500G 的SSD 盤赶促,主要用來保存源數(shù)據(jù)信息鸥滨。在集群規(guī)模較大橘券,源數(shù)據(jù)信息較多的時候毯焕,SSD 磁盤能夠避免源數(shù)據(jù)信息存取成為集群的瓶頸點(diǎn)。


二、部署安裝

1蜀铲、操作系統(tǒng)版本要求

建議 centos 7.3及以上边琉,支持 redhat 7.3版本及以上,不推薦其他版本的系統(tǒng)记劝。


2变姨、ansible、jinja 等軟件依賴包版本厌丑,只需要驗(yàn)證中控機(jī)(運(yùn)行ansible 機(jī)器)上軟件版本滿足條件即可

中控機(jī):

ansible --version

ansible 2.5.0

pip -V

pip 8.1.2

pip show jinja2

Metadata-Version: 2.0

Name: Jinja2

Version: 2.10

pip show jmespath

Metadata-Version: 2.0

Name: jmespath

Version: 0.9.3

監(jiān)控機(jī)(grafana):

rpm -qa | grep fontconfig

fontconfig-2.10.95-11.el7.x86_64

rpm -qa | grep open-sans-fonts

open-sans-fonts-1.10-1.el7.noarch


3定欧、測試環(huán)境磁盤 IO 不滿足需求

ansible-playbook bootstrap.yml --extra-vars "dev_mode=True"

加上 dev_mode=True 可以在部署時,繞過系統(tǒng)磁盤相關(guān)的 benchmark


4怒竿、關(guān)閉防火墻砍鸠、開啟時鐘同步

systemctl status firewalld

systemctl status chronyd/ntpd


5、集群下所有服務(wù)器要配置不同的 hostname

如果否耕驰,可以編輯 inventory.ini 的配置項(xiàng) set_hostname=True 來自動修改 hostname


6爷辱、調(diào)整參數(shù)

參數(shù)在 ansible/conf/目錄下,tidb.yml,tikv.yml饭弓,常見的可能需要調(diào)整的參數(shù)

tidb.yml:

grpc-connection-count: 如果服務(wù)器 CPU 配置較高双饥,tikv 實(shí)例個數(shù)較多,該參數(shù)可以調(diào)整至20~32之間

slow-threshold:slow-query 記錄的閾值示启,默認(rèn)300ms

level:日志級別兢哭,默認(rèn) info,可以視情況調(diào)整為 debug 或 error


tikv.yml:

sync-log:raft-log sync配置夫嗓,默認(rèn)值true迟螺,對于磁盤 io 消耗較高,測試/非金融生產(chǎn)環(huán)境建議設(shè)置為 false

region-split-check-diff:檢測 region 分裂的閾值舍咖,非 SSD 磁盤建議調(diào)大至32MB

rocksdb defaultcf block-cache-size(GB)?= MEM * 80% / TiKV 實(shí)例數(shù)量 * 30%(多實(shí)例部署下配置矩父,單實(shí)例部署不需要修改)

rocksdb writecf block-cache-size(GB)?= MEM * 80% / TiKV 實(shí)例數(shù)量 * 45%(多實(shí)例部署下配置,單實(shí)例部署不需要修改)

rocksdb lockcf block-cache-size(GB)?= MEM * 80% / TiKV 實(shí)例數(shù)量 * 2.5% (最小 128 MB)(多實(shí)例部署下配置排霉,單實(shí)例部署不需要修改)

raftdb defaultcf block-cache-size(GB)?= MEM * 80% / TiKV 實(shí)例數(shù)量 * 2.5% (最小 128 MB)(多實(shí)例部署下配置窍株,單實(shí)例部署不需要修改)

多實(shí)例情況下,需要修改?

readpool:

? coprocessor:

? high-concurrency

? normal-concurrency

? low-concurrency

三個參數(shù)攻柠,推薦為實(shí)例數(shù)*參數(shù)值 = CPU 核數(shù) * 0.8球订。

?raftstore:

? ?capacity

?磁盤總?cè)萘?/ TiKV 實(shí)例數(shù)量,例如 “100GB”

修改完后瑰钮,可以使用下面命令驗(yàn)證

cat tidb-ansible/conf/tikv.yml |grep -Ev "^$|#"

無誤后執(zhí)行?

ansible-playbook rolling_update.yml --tags=tidb/tikv

滾動升級冒滩,tags 可選


7、官網(wǎng)有比較完善的在線+離線部署方案浪谴、在線升級指導(dǎo)开睡、在線擴(kuò)容縮容文檔,具體參考:

https://pingcap.com/docs-cn/op-guide/ansible-deployment/

https://pingcap.com/docs-cn/op-guide/offline-ansible-deployment/

https://pingcap.com/docs-cn/op-guide/ansible-deployment-scale/


三苟耻、數(shù)據(jù)遷移

1篇恒、從 MySQL 遷移

TiDB 兼容 MySQL 語法,小數(shù)據(jù)量建議直接使用 mysqldump凶杖、mydumper 來全量導(dǎo)出數(shù)據(jù)胁艰,再通過 source、myloader 的方式導(dǎo)入 TiDB官卡。

./bin/mydumper -h?127.0.0.1 -P?3306?-u root -t?16?-F?64?-B test -T t1,t2 --skip-tz-utc -o ./var/test

./bin/loader -h?127.0.0.1 -u root -P?4000?-t?32?-d ./var/test

詳情請參考:https://pingcap.com/docs-cn/op-guide/migration/#使用-mydumper-loader-全量導(dǎo)入數(shù)據(jù)

如果數(shù)據(jù)量較大蝗茁,超過幾百 G,可以聯(lián)系原廠申請?jiān)囉?lightning 工具寻咒,loader 導(dǎo)入數(shù)據(jù)平均速度是20G/小時哮翘,lightning 約為100~150G/小時


2、從 Oracle 遷移

目前有幾種方式可以參考

使用 OGG 做全量+增量同步

使用 Navicat Premium 版的 data transfer 功能毛秘,支持從 Oracle/SqlServer 遷移全量數(shù)據(jù)至 TiDB

通過 kafka 等消息隊(duì)列工具饭寺,解析 OGG 的日志阻课,開發(fā)寫入 TiDB/MySQL 的工具

目前我們也在積極跟專業(yè)的數(shù)據(jù)異構(gòu)平臺合作,爭取能夠盡快在更多的數(shù)據(jù)遷移工具中兼容 TiDB 數(shù)據(jù)源艰匙。


四限煞、常用操作

1、啟動集群

ansible-playbook start.yml --tags=tidb/tikv/pd

在正確的 ansible 目錄下员凝,確保 inventory.ini 里的配置正確署驻,tags 可選


2、停止集群

ansible-playbook stop.yml --tags=tidb/tikv/pd

在正確的 ansible 目錄下健霹,確保 inventory.ini 里的配置正確旺上,tags 可選


3、停止單個 tidb-server / tikv-server

ansible-playbook stop.yml --tags=tidb/tikv/pd -l IP

-l 后面接 inventory.ini 配置的IP 或別名


4糖埋、訪問 tidb

TiDB 兼容 MySQL 協(xié)議宣吱,所有連接 MySQL 的方式都適用于TiDB

mysql -uroot -h127.0.0.1 -P4000 -p

常見的圖形化界面工具,navicat 等都可以直接訪問 tidb

同時也支持jdbc瞳别、odbc 等征候,需要注意的是 mysql 8.0版本的客戶端,及 mariadb 客戶端可能存在兼容性問題祟敛,不建議使用

SQL 語法基本兼容 MySQL疤坝,某些不兼容的場景見:https://pingcap.com/docs-cn/sql/mysql-compatibility/#與-mysql-兼容性對比


5、修改參數(shù)

可以通過修改 tidb-ansible/conf/tidb.yml 配置文件馆铁,然后執(zhí)行

ansible-playbook rolling_update.yml --tags=tidb/tikv

也可以直接登錄服務(wù)器卒煞,找到deploy_dir/conf/tidb.toml,直接編輯文件叼架,然后 pkill tidb-server 來重啟服務(wù)


6、查看 tidb 版本信息

select tidb_version();

Release Version: v2.1.0-rc.3-24-g23f90a6

Git Commit Hash: 23f90a68be321e724280da6033a2b63ebf6cc7dd

Git Branch: HEAD

UTC Build Time: 2018-10-10 09:18:39

GoVersion: go version go1.11 linux/amd64

Race Enabled: false

TiKV Min Version: 2.1.0-alpha.1-ff3dd160846b7d1aed9079c389fc188f7f5ea13e

Check Table Before Drop: false


7衣撬、備份 tidb 數(shù)據(jù)

全量備份可以采用 mydumper乖订,增量備份需要開啟 binlog,實(shí)時恢復(fù)采用商業(yè)版工具 reparo具练。


8乍构、查看監(jiān)控?cái)?shù)據(jù)

在 ansible 的配置文件 inventory.ini 里,有一個監(jiān)控服務(wù)器的配置

[monitoring_servers]

10.1.163.87

deploy 的時候會默認(rèn)在這個配置服務(wù)器上部署 grafana 組件扛点,通過

http://10.1.163.87:3000admin/admin? 訪問

具體一些常見的監(jiān)控指標(biāo)哥遮,請參考:https://pingcap.com/docs-cn/op-guide/dashboard-overview-info/


9、收集統(tǒng)計(jì)信息

set @@tidb_build_stats_concurrency=20;

set @@tidb_distsql_scan_concurrency=100;

set @@tidb_index_serial_scan_concurrency=20;

analyze table xxx index xxx;

修改上面三個參數(shù)可以提升 scan 效率陵究。

具體統(tǒng)計(jì)信息相關(guān)眠饮,請參考:https://pingcap.com/docs-cn/sql/statistics/#統(tǒng)計(jì)信息簡介


五、常見問題

1铜邮、Transaction too large

TiDB 對于事務(wù)有限制仪召,簡單來說以下幾點(diǎn):

單個事務(wù)的SQL 語句數(shù)量不能超過5000寨蹋,( 在 tidb.yml 可配 stmt-count-limit )

單條 KV entry 不超過 6MB

KV entry 的總條數(shù)不超過 30w

KV entry 的總大小不超過 100MB

備注:假設(shè)某張表有4個索引,那么一條數(shù)據(jù)對應(yīng)的 kv entry 為數(shù)據(jù)+索引扔茅,一共5個kv 記錄已旧。

如果是批量 insert 或delete,建議先修改

set tidb_batch_insert = 1;?

set?tidb_batch_delete = 1;

update mysql.tidb set variable_value='24h' where variable_name='tikv_gc_life_time';

再執(zhí)行 SQL召娜。

如果是批量 update运褪,建議采用 limit 循環(huán)的方式執(zhí)行。


2玖瘸、GC life time is shorter than transaction duration

GC Life Time?間隔時間過短秸讹,長事務(wù)本應(yīng)讀到的數(shù)據(jù)可能被清理了,可使用如下命令增加?GC Life Time?:

update mysql.tidb set variable_value='30m' where variable_name='tikv_gc_life_time';


3店读、Lost connection to MySQL server during query

log 中是否有 panic

dmesg 中是否有 oom嗦枢,命令:?dmesg -T | grep -i oom

長時間沒有訪問,也會收到這個報(bào)錯屯断,一般是 tcp 超時導(dǎo)致的文虏,tcp 長時間不用, 會被操作系統(tǒng) kill。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殖演,一起剝皮案震驚了整個濱河市氧秘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趴久,老刑警劉巖丸相,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異彼棍,居然都是意外死亡灭忠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門座硕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弛作,“玉大人,你說我怎么就攤上這事华匾∮沉眨” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵蜘拉,是天一觀的道長萨西。 經(jīng)常有香客問我,道長旭旭,這世上最難降的妖魔是什么谎脯? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮您机,結(jié)果婚禮上穿肄,老公的妹妹穿的比我還像新娘年局。我一直安慰自己,他們只是感情好咸产,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布矢否。 她就那樣靜靜地躺著,像睡著了一般脑溢。 火紅的嫁衣襯著肌膚如雪僵朗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天屑彻,我揣著相機(jī)與錄音验庙,去河邊找鬼。 笑死社牲,一個胖子當(dāng)著我的面吹牛粪薛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搏恤,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼违寿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了熟空?” 一聲冷哼從身側(cè)響起藤巢,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎息罗,沒想到半個月后掂咒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迈喉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年绍刮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挨摸。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡录淡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出油坝,到底是詐尸還是另有隱情,我是刑警寧澤刨裆,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布澈圈,位于F島的核電站,受9級特大地震影響帆啃,放射性物質(zhì)發(fā)生泄漏瞬女。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一努潘、第九天 我趴在偏房一處隱蔽的房頂上張望诽偷。 院中可真熱鬧坤学,春花似錦、人聲如沸报慕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眠冈。三九已至飞苇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜗顽,已是汗流浹背布卡。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雇盖,地道東北人忿等。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像崔挖,于是被迫代替她去往敵國和親贸街。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一虚汛、分布式數(shù)據(jù)庫誕生背景 隨著互聯(lián)網(wǎng)的飛速發(fā)展匾浪,業(yè)務(wù)量可能在短短的時間內(nèi)爆發(fā)式地增長,對應(yīng)的數(shù)據(jù)量可能快速地從幾百...
    nightwish夜愿閱讀 3,524評論 0 12
  • 概述 對于生產(chǎn)環(huán)境卷哩,須使用 TiDB-Ansible 部署 TiDB 集群蛋辈。如果只是用于測試 TiDB ...
    張偉科閱讀 1,897評論 0 9
  • 一、了解TiDB 1.1 TiDB整體架構(gòu) 要深入了解 TiDB 的水平擴(kuò)展和高可用特點(diǎn)将谊,首先需要了解 TiDB ...
    什錦小沐閱讀 1,485評論 0 6
  • 摘要: 本文為今年年初 PingCAP 商業(yè)產(chǎn)品團(tuán)隊(duì)負(fù)責(zé)人劉寅在 TiDB DevCon2018 上分享的 《 T...
    nightwish夜愿閱讀 6,779評論 0 11
  • 我是早產(chǎn)兒冷溶,生下來只有七個月,四斤多尊浓〕哑担看過外婆給我做的小棉背心一個,用巴掌一量栋齿,只有巴掌大苗胀,直接笑不能抑,...
    湖心月另一專欄閱讀 321評論 1 3