TDengine的運(yùn)營(yíng)與維護(hù)
容量規(guī)劃
使用 TDengine 來(lái)搭建一個(gè)物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái),計(jì)算資源、存儲(chǔ)資源需要根據(jù)業(yè)務(wù)場(chǎng)景進(jìn)行規(guī)劃。下面分別討論系統(tǒng)運(yùn)行所需要的內(nèi)存、CPU 以及硬盤空間。
內(nèi)存需求
每個(gè) Database 可以創(chuàng)建固定數(shù)目的 vgroup,默認(rèn)與 CPU 核數(shù)相同,可通過(guò) maxVgroupsPerDb 配置;vgroup 中的每個(gè)副本會(huì)是一個(gè) vnode;每個(gè) vnode 會(huì)占用固定大小的內(nèi)存(大小與數(shù)據(jù)庫(kù)的配置參數(shù) blocks 和 cache 有關(guān));每個(gè) Table 會(huì)占用與標(biāo)簽總長(zhǎng)度有關(guān)的內(nèi)存;此外,系統(tǒng)會(huì)有一些固定的內(nèi)存開銷。因此,每個(gè) DB 需要的系統(tǒng)內(nèi)存可通過(guò)如下公式計(jì)算:
Database Memory Size = maxVgroupsPerDb * (blocks * cache + 10MB) + numOfTables * (tagSizePerTable + 0.5KB)
示例:假設(shè)是 4 核機(jī)器,cache 是缺省大小 16M, blocks 是缺省值 6,并且一個(gè) DB 中有 10 萬(wàn)張表,標(biāo)簽總長(zhǎng)度是 256 字節(jié),則這個(gè) DB 總的內(nèi)存需求為:4 * (16 * 6 + 10) + 100000 * (0.25 + 0.5) / 1000 = 499M。
在實(shí)際的系統(tǒng)運(yùn)維中,我們通常會(huì)更關(guān)心 TDengine 服務(wù)進(jìn)程(taosd)會(huì)占用的內(nèi)存量。
taosd 內(nèi)存總量 = vnode 內(nèi)存 + mnode 內(nèi)存 + 查詢內(nèi)存
其中:
- “vnode 內(nèi)存”指的是集群中所有的 Database 存儲(chǔ)分?jǐn)偟疆?dāng)前 taosd 節(jié)點(diǎn)上所占用的內(nèi)存資源??梢园瓷衔摹癉atabase Memory Size”計(jì)算公式估算每個(gè) DB 的內(nèi)存占用量進(jìn)行加總,再按集群中總共的 TDengine 節(jié)點(diǎn)數(shù)做平均(如果設(shè)置為多副本,則還需要乘以對(duì)應(yīng)的副本倍數(shù))。
- “mnode 內(nèi)存”指的是集群中管理節(jié)點(diǎn)所占用的資源。如果一個(gè) taosd 節(jié)點(diǎn)上分布有 mnode 管理節(jié)點(diǎn),則內(nèi)存消耗還需要增加“0.2KB * 集群中數(shù)據(jù)表總數(shù)”。
- “查詢內(nèi)存”指的是服務(wù)端處理查詢請(qǐng)求時(shí)所需要占用的內(nèi)存。單條查詢語(yǔ)句至少會(huì)占用“0.2KB * 查詢涉及的數(shù)據(jù)表總數(shù)”的內(nèi)存量。
注意:以上內(nèi)存估算方法,主要講解了系統(tǒng)的“必須內(nèi)存需求”,而不是“內(nèi)存總數(shù)上限”。在實(shí)際運(yùn)行的生產(chǎn)環(huán)境中,由于操作系統(tǒng)緩存、資源管理調(diào)度等方面的原因,內(nèi)存規(guī)劃應(yīng)當(dāng)在估算結(jié)果的基礎(chǔ)上保留一定冗余,以維持系統(tǒng)狀態(tài)和系統(tǒng)性能的穩(wěn)定性。并且,生產(chǎn)環(huán)境通常會(huì)配置系統(tǒng)資源的監(jiān)控工具,以便及時(shí)發(fā)現(xiàn)硬件資源的緊缺情況。
最后,如果內(nèi)存充裕,可以考慮加大 Blocks 的配置,這樣更多數(shù)據(jù)將保存在內(nèi)存里,提高查詢速度。
客戶端內(nèi)存需求
客戶端應(yīng)用采用 taosc 客戶端驅(qū)動(dòng)連接服務(wù)端,會(huì)有內(nèi)存需求的開銷。
客戶端的內(nèi)存開銷主要由寫入過(guò)程中的 SQL 語(yǔ)句、表的元數(shù)據(jù)信息緩存、以及結(jié)構(gòu)性開銷構(gòu)成。系統(tǒng)最大容納的表數(shù)量為 N(每個(gè)通過(guò)超級(jí)表創(chuàng)建的表的 meta data 開銷約 256 字節(jié)),最大并行寫入線程數(shù)量 T,最大 SQL 語(yǔ)句長(zhǎng)度 S(通常是 1 Mbytes)。由此可以進(jìn)行客戶端內(nèi)存開銷的估算(單位 MBytes):
M = (T * S * 3 + (N / 4096) + 100)
舉例如下:用戶最大并發(fā)寫入線程數(shù) 100,子表數(shù)總數(shù) 10,000,000,那么客戶端的內(nèi)存最低要求是:
100 * 3 + (10000000 / 4096) + 100 = 2741 (MBytes)
即配置 3 GBytes 內(nèi)存是最低要求。
CPU 需求
CPU 的需求取決于如下兩方面:
- 數(shù)據(jù)插入 TDengine 單核每秒能至少處理一萬(wàn)個(gè)插入請(qǐng)求。每個(gè)插入請(qǐng)求可以帶多條記錄,一次插入一條記錄與插入 10 條記錄,消耗的計(jì)算資源差別很小。因此每次插入,條數(shù)越大,插入效率越高。如果一個(gè)插入請(qǐng)求帶 200 條以上記錄,單核就能達(dá)到每秒插入 100 萬(wàn)條記錄的速度。但對(duì)前端數(shù)據(jù)采集的要求越高,因?yàn)樾枰彺嬗涗?,然后一批插入?/li>
- 查詢需求 TDengine 提供高效的查詢,但是每個(gè)場(chǎng)景的查詢差異很大,查詢頻次變化也很大,難以給出客觀數(shù)字。需要用戶針對(duì)自己的場(chǎng)景,寫一些查詢語(yǔ)句,才能確定。
因此僅對(duì)數(shù)據(jù)插入而言,CPU 是可以估算出來(lái)的,但查詢所耗的計(jì)算資源無(wú)法估算。在實(shí)際運(yùn)營(yíng)過(guò)程中,不建議 CPU 使用率超過(guò) 50%,超過(guò)后,需要增加新的節(jié)點(diǎn),以獲得更多計(jì)算資源。
存儲(chǔ)需求
TDengine 相對(duì)于通用數(shù)據(jù)庫(kù),有超高的壓縮比,在絕大多數(shù)場(chǎng)景下,TDengine 的壓縮比不會(huì)低于 5 倍,有的場(chǎng)合,壓縮比可達(dá)到 10 倍以上,取決于實(shí)際場(chǎng)景的數(shù)據(jù)特征。壓縮前的原始數(shù)據(jù)大小可通過(guò)如下方式計(jì)算:
Raw DataSize = numOfTables * rowSizePerTable * rowsPerTable
示例:1000 萬(wàn)臺(tái)智能電表,每臺(tái)電表每 15 分鐘采集一次數(shù)據(jù),每次采集的數(shù)據(jù) 128 字節(jié),那么一年的原始數(shù)據(jù)量是:10000000 * 128 * 24 * 60 / 15 * 365 = 44.8512T。TDengine大概需要消耗 44.851 / 5 = 8.97024T 空間。
用戶可以通過(guò)參數(shù) keep,設(shè)置數(shù)據(jù)在磁盤中的最大保存時(shí)長(zhǎng)。為進(jìn)一步減少存儲(chǔ)成本,TDengine 還提供多級(jí)存儲(chǔ),最冷的數(shù)據(jù)可以存放在最廉價(jià)的存儲(chǔ)介質(zhì)上,應(yīng)用的訪問(wèn)不用做任何調(diào)整,只是讀取速度降低了。
為提高速度,可以配置多塊硬盤,這樣可以并發(fā)寫入或讀取數(shù)據(jù)。需要提醒的是,TDengine 采取多副本的方式提供數(shù)據(jù)的高可靠,因此不再需要采用昂貴的磁盤陣列。
物理機(jī)或虛擬機(jī)臺(tái)數(shù)
根據(jù)上面的內(nèi)存、CPU、存儲(chǔ)的預(yù)估,就可以知道整個(gè)系統(tǒng)需要多少核、多少內(nèi)存、多少存儲(chǔ)空間。如果數(shù)據(jù)副本數(shù)不為 1,總需求量需要再乘以副本數(shù)。
因?yàn)?TDengine 具有很好的水平擴(kuò)展能力,根據(jù)總量,再根據(jù)單個(gè)物理機(jī)或虛擬機(jī)的資源,就可以輕松決定需要購(gòu)置多少臺(tái)物理機(jī)或虛擬機(jī)了。
立即計(jì)算 CPU、內(nèi)存、存儲(chǔ),請(qǐng)參見(jiàn):資源估算方法。
容錯(cuò)和災(zāi)備
容錯(cuò)
TDengine 支持 WAL (Write Ahead Log)機(jī)制,實(shí)現(xiàn)數(shù)據(jù)的容錯(cuò)能力,保證數(shù)據(jù)的高可用。
TDengine 接收到應(yīng)用的請(qǐng)求數(shù)據(jù)包時(shí),先將請(qǐng)求的原始數(shù)據(jù)包寫入數(shù)據(jù)庫(kù)日志文件,等數(shù)據(jù)成功寫入數(shù)據(jù)庫(kù)數(shù)據(jù)文件后,再刪除相應(yīng)的 WAL 。這樣保證了 TDengine 能夠在斷電等因素導(dǎo)致的服務(wù)重啟時(shí)從數(shù)據(jù)庫(kù)日志文件中恢復(fù)數(shù)據(jù),避免數(shù)據(jù)的丟失。
涉及的系統(tǒng)配置參數(shù)有兩個(gè):
- walLevel:WAL 級(jí)別,0:不寫 WAL ; 1:寫 wal, 但不執(zhí)行 fsync; 2:寫 wal, 而且執(zhí)行 fsync。
- fsync:當(dāng) walLevel 設(shè)置為 2 時(shí),執(zhí)行 fsync 的周期。設(shè)置為 0,表示每次寫入,立即執(zhí)行 fsync。
如果要100%的保證數(shù)據(jù)不丟失,需要將 walLevel 設(shè)置為 2,fsync 設(shè)置為0。這時(shí)寫入速度將會(huì)下降。但如果應(yīng)用側(cè)啟動(dòng)的寫數(shù)據(jù)的線程數(shù)達(dá)到一定的數(shù)量(超過(guò) 50),那么寫入數(shù)據(jù)的性能也會(huì)很不錯(cuò),只會(huì)比 fsync 設(shè)置為 3000 毫秒下降 30% 左右。
災(zāi)備
TDengine 的集群通過(guò)多個(gè)副本的機(jī)制,來(lái)提供系統(tǒng)的高可用性,實(shí)現(xiàn)災(zāi)備能力。
TDengine 集群是由 mnode 負(fù)責(zé)管理的,為保證 mnode 的高可靠,可以配置多個(gè) mnode 副本,副本數(shù)由系統(tǒng)配置參數(shù) numOfMnodes 決定,為了支持高可靠,需要設(shè)置大于 1。為保證元數(shù)據(jù)的強(qiáng)一致性,mnode 副本之間通過(guò)同步方式進(jìn)行數(shù)據(jù)復(fù)制,保證了元數(shù)據(jù)的強(qiáng)一致性。
TDengine 集群中的時(shí)序數(shù)據(jù)的副本數(shù)是與數(shù)據(jù)庫(kù)關(guān)聯(lián)的,一個(gè)集群里可以有多個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)可以配置不同的副本數(shù)。創(chuàng)建數(shù)據(jù)庫(kù)時(shí),通過(guò)參數(shù) replica 指定副本數(shù)。為了支持高可靠,需要設(shè)置副本數(shù)大于1。
TDengine 集群的節(jié)點(diǎn)數(shù)必須大于等于副本數(shù),否則創(chuàng)建表時(shí)將報(bào)錯(cuò)。
當(dāng) TDengine 集群中的節(jié)點(diǎn)部署在不同的物理機(jī)上,并設(shè)置多個(gè)副本數(shù)時(shí),就實(shí)現(xiàn)了系統(tǒng)的高可靠性,無(wú)需再使用其他軟件或工具。TDengine 企業(yè)版還可以將副本部署在不同機(jī)房,從而實(shí)現(xiàn)異地容災(zāi)。
服務(wù)端配置
TDengine 系統(tǒng)后臺(tái)服務(wù)由 taosd 提供,可以在配置文件 taos.cfg 里修改配置參數(shù),以滿足不同場(chǎng)景的需求。配置文件的缺省位置在 /etc/taos 目錄,可以通過(guò) taosd 命令行執(zhí)行參數(shù)-c指定配置文件目錄。比如 taosd -c /home/user 來(lái)指定配置文件位于 /home/user 這個(gè)目錄。
另外可以使用 “-C” 顯示當(dāng)前服務(wù)器配置參數(shù):
taosd -C
下面僅僅列出一些重要的配置參數(shù),更多的參數(shù)請(qǐng)看配置文件里的說(shuō)明。各個(gè)參數(shù)的詳細(xì)介紹及作用請(qǐng)看前述章節(jié),而且這些參數(shù)的缺省配置都是可以工作的,一般無(wú)需設(shè)置。注意:配置文件參數(shù)修改后,需要重啟taosd服務(wù),或客戶端應(yīng)用才能生效。
-
firstEP
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 taosd 啟動(dòng)時(shí),主動(dòng)連接的集群中首個(gè) dnode 的 end point 缺省值 localhost:6030 -
secondEP
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 服務(wù)端和客戶端均適用 含義 taosd 啟動(dòng)時(shí),如果 firstEp 連接不上,嘗試連接集群中第二個(gè) dnode 的 end point 缺省值 無(wú) -
fqdn
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 數(shù)據(jù)節(jié)點(diǎn)的 FQDN。如果習(xí)慣 IP 地址訪問(wèn),可設(shè)置為該節(jié)點(diǎn)的 IP 地址。 缺省值 缺省為操作系統(tǒng)配置的第一個(gè) hostname。 補(bǔ)充說(shuō)明 這個(gè)參數(shù)值的長(zhǎng)度需要控制在 96 個(gè)字符以內(nèi)。 -
serverPort
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 taosd 啟動(dòng)后,對(duì)外服務(wù)的端口號(hào) 缺省值 6030 補(bǔ)充說(shuō)明 RESTful 服務(wù)使用的端口號(hào)是在此基礎(chǔ)上+11,即默認(rèn)值為 6041(注意 2.4 及后續(xù)版本使用 taosAdapter 提供 RESTful 接口)。 -
logDir
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 日志文件目錄,客戶端和服務(wù)器的運(yùn)行日志將寫入該目錄 缺省值 /var/log/taos -
scriptDir
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 僅服務(wù)端適用 含義 缺省值 -
dataDir
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 數(shù)據(jù)文件目錄,所有的數(shù)據(jù)文件都將寫入該目錄 缺省值 /var/lib/taos -
arbitrator
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 系統(tǒng)中裁決器的 end point 缺省值 空 -
numOfThreadsPerCore
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 每個(gè) CPU 核生成的隊(duì)列消費(fèi)者線程數(shù)量 缺省值 1.0 -
ratioOfQueryThreads
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 設(shè)置查詢線程的最大數(shù)量 取值范圍 0:表示只有 1 個(gè)查詢線程
1:表示最大和 CPU 核數(shù)相等的查詢線程
2:表示最大建立 2 倍 CPU 核數(shù)的查詢線程。缺省值 1 補(bǔ)充說(shuō)明 該值可以為小數(shù),即 0.5 表示最大建立 CPU 核數(shù)一半的查詢線程。 -
numOfMnodes
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 系統(tǒng)中管理節(jié)點(diǎn)個(gè)數(shù) 缺省值 3 -
vnodeBak
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 刪除 vnode 時(shí)是否備份 vnode 目錄 取值范圍 0:否,1:是 缺省值 1 -
telemetryRePorting
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 是否允許 TDengine 采集和上報(bào)基本使用信息 取值范圍 0:不允許
1:允許缺省值 1 -
balance
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 是否啟動(dòng)負(fù)載均衡 取值范圍 0,1 缺省值 1 -
balanceInterval
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 僅服務(wù)端適用 含義 管理節(jié)點(diǎn)在正常運(yùn)行狀態(tài)下,檢查負(fù)載均衡的時(shí)間間隔 單位 秒 取值范圍 1-30000 缺省值 300 -
role
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 dnode 的可選角色 取值范圍 0:any(既可作為 mnode,也可分配 vnode)
1:mgmt(只能作為 mnode,不能分配 vnode)
2:dnode(不能作為 mnode,只能分配 vnode)缺省值 0 -
maxTmerCtrl
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 定時(shí)器個(gè)數(shù) 單位 個(gè) 取值范圍 8-2048 缺省值 512 -
monitorInterval
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 監(jiān)控?cái)?shù)據(jù)庫(kù)記錄系統(tǒng)參數(shù)(CPU/內(nèi)存)的時(shí)間間隔 單位 秒 取值范圍 1-600 缺省值 30 -
offlineThreshold
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 dnode 離線閾值,超過(guò)該時(shí)間將導(dǎo)致 dnode 離線 單位 秒 取值范圍 5-7200000 缺省值 86400*10(10 天) -
rpcTimer
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 rpc 重試時(shí)長(zhǎng) 單位 毫秒 取值范圍 100-3000 缺省值 300 -
rpcMaxTime
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 rpc 等待應(yīng)答最大時(shí)長(zhǎng) 單位 秒 取值范圍 100-7200 缺省值 600 -
statusInterval
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 dnode 向 mnode 報(bào)告狀態(tài)間隔 單位 秒 取值范圍 1-10 缺省值 1 -
shellActivityTimer
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 shell 客戶端向 mnode 發(fā)送心跳間隔 單位 秒 取值范圍 1-120 缺省值 3 -
tableMetaKeepTimer
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 表的元數(shù)據(jù) cache 時(shí)長(zhǎng) 單位 秒 取值范圍 1-8640000 缺省值 7200 -
minSlidingTime
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 最小滑動(dòng)窗口時(shí)長(zhǎng) 單位 毫秒 取值范圍 10-1000000 缺省值 10 補(bǔ)充說(shuō)明 支持 us 補(bǔ)值后,這個(gè)值就是 1us 了。 -
minIntervalTime
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 時(shí)間窗口最小值 單位 毫秒 取值范圍 1-1000000 缺省值 10 -
stream
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 是否啟用連續(xù)查詢(流計(jì)算功能) 取值范圍 0:不允許
1:允許缺省值 1 -
maxStreamCompDelay
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 連續(xù)查詢啟動(dòng)最大延遲 單位 毫秒 取值范圍 10-1000000000 缺省值 20000 補(bǔ)充說(shuō)明 為避免多個(gè) stream 同時(shí)執(zhí)行占用太多系統(tǒng)資源,程序中對(duì) stream 的執(zhí)行時(shí)間人為增加了一些隨機(jī)的延時(shí)。
maxFirstStreamCompDelay 是 stream 第一次執(zhí)行前最少要等待的時(shí)間。
streamCompDelayRatio 是延遲時(shí)間的計(jì)算系數(shù),它乘以查詢的 interval 后為延遲時(shí)間基準(zhǔn)。
maxStreamCompDelay 是延遲時(shí)間基準(zhǔn)的上限。
實(shí)際延遲時(shí)間為一個(gè)不超過(guò)延遲時(shí)間基準(zhǔn)的隨機(jī)值。
stream 某次計(jì)算失敗后需要重試,retryStreamCompDelay 是重試的等待時(shí)間基準(zhǔn)。
實(shí)際重試等待時(shí)間為不超過(guò)等待時(shí)間基準(zhǔn)的隨機(jī)值。 -
maxFirstStreamCompDelay
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 第一次連續(xù)查詢啟動(dòng)最大延遲 單位 毫秒 取值范圍 10-1000000000 缺省值 10000 -
retryStreamCompDelay
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 連續(xù)查詢重試等待間隔 單位 毫秒 取值范圍 10-1000000000 缺省值 10 -
streamCompDelayRatio
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 連續(xù)查詢的延遲時(shí)間計(jì)算系數(shù) 取值范圍 0.1-0.9 缺省值 0.1 -
maxVgroupsPerDb
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 每個(gè) DB 中 能夠使用的最大 vnode 個(gè)數(shù) 取值范圍 0-8192 缺省值 -
maxTablesPerVnode
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 每個(gè) vnode 中能夠創(chuàng)建的最大表個(gè)數(shù) 缺省值 1000000 -
minTablesPerVnode
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 僅服務(wù)端適用 含義 每個(gè) vnode 中必須創(chuàng)建的最小表個(gè)數(shù) 缺省值 1000 -
tableIncStepPerVnode
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 僅服務(wù)端適用 含義 每個(gè) vnode 中超過(guò)最小表數(shù)后遞增步長(zhǎng) 缺省值 1000 -
cache
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 內(nèi)存塊的大小 單位 MB 缺省值 16 -
blocks
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 每個(gè) vnode(tsdb)中有多少 cache 大小的內(nèi)存塊。因此一個(gè) vnode 的用的內(nèi)存大小粗略為(cache * blocks) 缺省值 6 -
days
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 數(shù)據(jù)文件存儲(chǔ)數(shù)據(jù)的時(shí)間跨度 單位 天 缺省值 10 -
keep
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 數(shù)據(jù)保留的天數(shù) 單位 天 缺省值 3650 -
minRows
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 文件塊中記錄的最小條數(shù) 缺省值 100 -
maxRows
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 文件塊中記錄的最大條數(shù) 缺省值 4096 -
quorum
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 多副本環(huán)境下指令執(zhí)行的確認(rèn)數(shù)要求 取值范圍 1,2 缺省值 1 -
comp
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 文件壓縮標(biāo)志位 取值范圍 0:關(guān)閉,1:一階段壓縮,2:兩階段壓縮 缺省值 2 -
walLevel
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 WAL 級(jí)別 取值范圍 1:寫 wal, 但不執(zhí)行 fsync
2:寫 wal, 而且執(zhí)行 fsync缺省值 1 -
fsync
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 當(dāng) wal 設(shè)置為 2 時(shí),執(zhí)行 fsync 的周期 單位 毫秒 取值范圍 最小為 0,表示每次寫入,立即執(zhí)行 fsync
最大為 180000(三分鐘)缺省值 3000 -
replica
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 副本個(gè)數(shù) 取值范圍 1-3 缺省值 1 -
compressMsgSize
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 客戶端與服務(wù)器之間進(jìn)行消息通訊過(guò)程中,對(duì)通訊的消息進(jìn)行壓縮的閾值。如果要壓縮消息,建議設(shè)置為 64330 字節(jié),即大于 64330 字節(jié)的消息體才進(jìn)行壓縮。 單位 bytes 取值范圍 0表示對(duì)所有的消息均進(jìn)行壓縮 >0: 超過(guò)該值的消息才進(jìn)行壓縮 -1: 不壓縮缺省值 -1 -
maxSQLLength
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 單條 SQL 語(yǔ)句允許的最長(zhǎng)限制 單位 bytes 取值范圍 65480-1048576 缺省值 1048576 -
maxNumOfOrderedRes
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 支持超級(jí)表時(shí)間排序允許的最多記錄數(shù)限制 缺省值 10 萬(wàn) -
timezone
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 時(shí)區(qū) 缺省值 從系統(tǒng)中動(dòng)態(tài)獲取當(dāng)前的時(shí)區(qū)設(shè)置 -
locale
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 系統(tǒng)區(qū)位信息及編碼格式 缺省值 系統(tǒng)中動(dòng)態(tài)獲取,如果自動(dòng)獲取失敗,需要用戶在配置文件設(shè)置或通過(guò) API 設(shè)置 -
charset
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 字符集編碼 缺省值 系統(tǒng)中動(dòng)態(tài)獲取,如果自動(dòng)獲取失敗,需要用戶在配置文件設(shè)置或通過(guò) API 設(shè)置 -
maxShellConns
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 一個(gè) dnode 容許的連接數(shù) 取值范圍 10-50000000 缺省值 5000 -
maxConnections
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 一個(gè)數(shù)據(jù)庫(kù)連接所容許的 dnode 連接數(shù) 取值范圍 1-100000 缺省值 5000 補(bǔ)充說(shuō)明 實(shí)際測(cè)試下來(lái),如果默認(rèn)沒(méi)有配,選 50 個(gè) worker thread 會(huì)產(chǎn)生 Network unavailable -
minimalLogDirGB
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 當(dāng)日志文件夾的磁盤大小小于該值時(shí),停止寫日志 單位 GB 缺省值 1.0 -
minimalTmpDirGB
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 當(dāng)日志文件夾的磁盤大小小于該值時(shí),停止寫臨時(shí)文件 單位 GB 缺省值 1.0 -
minimalDataDirGB
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 當(dāng)日志文件夾的磁盤大小小于該值時(shí),停止寫時(shí)序數(shù)據(jù) 單位 GB 缺省值 2.0 -
mnodeEqualVnodeNum
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 一個(gè) mnode 等同于 vnode 消耗的個(gè)數(shù) 缺省值 4 -
http
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 服務(wù)器內(nèi)部的 http 服務(wù)開關(guān)。 取值范圍 0:關(guān)閉 http 服務(wù), 1:激活 http 服務(wù)。 缺省值 1 -
monitor
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 服務(wù)器內(nèi)部的系統(tǒng)監(jiān)控開關(guān)。監(jiān)控主要負(fù)責(zé)收集物理節(jié)點(diǎn)的負(fù)載狀況,包括 CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)帶寬、HTTP 請(qǐng)求量的監(jiān)控記錄,記錄信息存儲(chǔ)在 LOG庫(kù)中。取值范圍 0:關(guān)閉監(jiān)控服務(wù), 1:激活監(jiān)控服務(wù)。 缺省值 0 -
httpEnableRecordSql
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 內(nèi)部使用,記錄通過(guò) RESTFul 接口,產(chǎn)生的 SQL 調(diào)用。taosAdapter 配置或有不同,請(qǐng)參考相應(yīng)文檔。 缺省值 0 補(bǔ)充說(shuō)明 生成的文件(httpnote.0/httpnote.1),與服務(wù)端日志所在目錄相同。 -
httpMaxThreads
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 RESTFul 接口的線程數(shù)。taosAdapter 配置或有不同,請(qǐng)參考相應(yīng)文檔。 缺省值 2 -
telegrafUseFieldNum
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 含義 缺省值 -
restfulRowLimit
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 RESTFul 接口單次返回的記錄條數(shù)。taosAdapter 配置或有不同,請(qǐng)參考相應(yīng)文檔。 缺省值 10240 補(bǔ)充說(shuō)明 最大 10,000,000 -
numOfLogLines
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 單個(gè)日志文件允許的最大行數(shù)。 缺省值 10,000,000 -
asyncLog
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 日志寫入模式 取值范圍 0:同步、1:異步 缺省值 1 -
logKeepDays
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 日志文件的最長(zhǎng)保存時(shí)間 單位 天 缺省值 0 補(bǔ)充說(shuō)明 大于 0 時(shí),日志文件會(huì)被重命名為 taosdlog.xxx,其中 xxx 為日志文件最后修改的時(shí)間戳。 -
debugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 運(yùn)行日志開關(guān) 取值范圍 131(輸出錯(cuò)誤和警告日志),135(輸出錯(cuò)誤、警告和調(diào)試日志),143(輸出錯(cuò)誤、警告、調(diào)試和跟蹤日志) 缺省值 131 或 135(不同模塊有不同的默認(rèn)值) -
mDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 管理模塊的日志開關(guān) 取值范圍 同上 缺省值 135 -
dDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 dnode 模塊的日志開關(guān) 取值范圍 同上 缺省值 135 -
sDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 sync 模塊的日志開關(guān) 取值范圍 同上 缺省值 135 -
wDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 wal 模塊的日志開關(guān) 取值范圍 同上 缺省值 135 -
sdbDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 sdb 模塊的日志開關(guān) 取值范圍 同上 缺省值 135 -
rpcDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 rpc 模塊的日志開關(guān) 取值范圍 同上 缺省值 -
tmrDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 定時(shí)器模塊的日志開關(guān) 取值范圍 同上 缺省值 -
cDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 client 模塊的日志開關(guān) 取值范圍 同上 缺省值 -
jniDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 jni 模塊的日志開關(guān) 取值范圍 同上 缺省值 -
odbcDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 odbc 模塊的日志開關(guān) 取值范圍 同上 缺省值 -
uDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 共用功能模塊的日志開關(guān) 取值范圍 同上 缺省值 -
httpDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 http 模塊的日志開關(guān) 取值范圍 同上 缺省值 -
monitorDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 監(jiān)控模塊的日志開關(guān) 取值范圍 同上 缺省值 -
qDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 查詢模塊的日志開關(guān) 取值范圍 同上 缺省值 -
vDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 vnode 模塊的日志開關(guān) 取值范圍 同上 缺省值 -
tsdbDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 TSDB 模塊的日志開關(guān) 取值范圍 同上 缺省值 -
cqDebugFlag
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 連續(xù)查詢模塊的日志開關(guān) 取值范圍 同上 缺省值 -
tscEnableRecordSql
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 是否記錄客戶端 sql 語(yǔ)句到文件 取值范圍 0:否,1:是 缺省值 0 補(bǔ)充說(shuō)明 生成的文件(tscnote-xxxx.0/tscnote-xxx.1,xxxx 是 pid),與客戶端日志所在目錄相同。 -
enableCoreFile
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 是否開啟服務(wù) crash 時(shí)生成 core 文件 取值范圍 0:否,1:是 缺省值 1 補(bǔ)充說(shuō)明 不同的啟動(dòng)方式,生成 core 文件的目錄如下:1、systemctl start taosd 啟動(dòng):生成的 core 在根目錄下
2、手動(dòng)啟動(dòng),就在 taosd 執(zhí)行目錄下。 -
gitinfo
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 服務(wù)端和客戶端均適用 含義 取值范圍 1 缺省值 -
gitinfoofInternal
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 服務(wù)端和客戶端均適用 含義 取值范圍 2 缺省值 -
Buildinfo
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 服務(wù)端和客戶端均適用 含義 取值范圍 3 缺省值 -
version
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 服務(wù)端和客戶端均適用 含義 取值范圍 4 缺省值 -
maxBinaryDisplayWidth
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 Taos shell 中 binary 和 nchar 字段的顯示寬度上限,超過(guò)此限制的部分將被隱藏 取值范圍 5 - 缺省值 30 補(bǔ)充說(shuō)明 實(shí)際上限按以下規(guī)則計(jì)算:如果字段值的長(zhǎng)度大于 maxBinaryDisplayWidth,則顯示上限為 字段名長(zhǎng)度 和 maxBinaryDisplayWidth 的較大者。
否則,上限為 字段名長(zhǎng)度 和 字段值長(zhǎng)度 的較大者。
可在 shell 中通過(guò)命令 set max_binary_display_width nn 動(dòng)態(tài)修改此選項(xiàng) -
queryBufferSize
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 為所有并發(fā)查詢占用保留的內(nèi)存大小。 單位 MB 缺省值 補(bǔ)充說(shuō)明 計(jì)算規(guī)則可以根據(jù)實(shí)際應(yīng)用可能的最大并發(fā)數(shù)和表的數(shù)字相乘,再乘 170 。
(2.0.15 以前的版本中,此參數(shù)的單位是字節(jié)) -
ratioOfQueryCores
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 設(shè)置查詢線程的最大數(shù)量。 缺省值 補(bǔ)充說(shuō)明 最小值 0 表示只有 1 個(gè)查詢線程
最大值 2 表示最大建立 2 倍 CPU 核數(shù)的查詢線程。
默認(rèn)為 1,表示最大和 CPU 核數(shù)相等的查詢線程。
該值可以為小數(shù),即 0.5 表示最大建立 CPU 核數(shù)一半的查詢線程。 -
update
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 允許更新已存在的數(shù)據(jù)行 取值范圍 0:不允許更新
1:允許整行更新
2:允許部分列更新。(2.1.7.0 版本開始此參數(shù)支持設(shè)為 2,在此之前取值只能是 [0, 1])缺省值 0 補(bǔ)充說(shuō)明 2.0.8.0 版本之前,不支持此參數(shù)。 -
cacheLast
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 是否在內(nèi)存中緩存子表的最近數(shù)據(jù) 取值范圍 0:關(guān)閉
1:緩存子表最近一行數(shù)據(jù)
2:緩存子表每一列的最近的非 NULL 值
3:同時(shí)打開緩存最近行和列功能。(2.1.2.0 版本開始此參數(shù)支持 0 ~ 3 的取值范圍,在此之前取值只能是 [0, 1])缺省值 0 補(bǔ)充說(shuō)明 2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此參數(shù)。 -
numOfCommitThreads
屬性 說(shuō)明 內(nèi)部配置 Yes 適用范圍 僅服務(wù)端適用 含義 設(shè)置寫入線程的最大數(shù)量 缺省值 -
maxWildCardsLength
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 設(shè)定 LIKE 算子的通配符字符串允許的最大長(zhǎng)度 單位 bytes 取值范圍 0-16384 缺省值 100 補(bǔ)充說(shuō)明 2.1.6.1 版本新增。 -
compressColData
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 客戶端與服務(wù)器之間進(jìn)行消息通訊過(guò)程中,對(duì)服務(wù)器端查詢結(jié)果進(jìn)行列壓縮的閾值。 單位 bytes 取值范圍 0: 對(duì)所有查詢結(jié)果均進(jìn)行壓縮 >0: 查詢結(jié)果中任意列大小超過(guò)該值的消息才進(jìn)行壓縮 -1: 不壓縮 缺省值 -1 補(bǔ)充說(shuō)明 2.3.0.0 版本新增。 -
tsdbMetaCompactRatio
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 tsdb meta 文件中冗余數(shù)據(jù)超過(guò)多少閾值,開啟 meta 文件的壓縮功能 取值范圍 0:不開啟,[1-100]:冗余數(shù)據(jù)比例 缺省值 0 -
rpcForceTcp
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 服務(wù)端和客戶端均適用 含義 強(qiáng)制使用 TCP 傳輸 取值范圍 0: 不開啟 1: 開啟 缺省值 0 補(bǔ)充說(shuō)明 在網(wǎng)絡(luò)比較差的環(huán)境中,建議開啟。
2.0 版本新增。 -
maxNumOfDistinctRes
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 允許返回的 distinct 結(jié)果最大行數(shù) 取值范圍 默認(rèn)值為 10 萬(wàn),最大值 1 億 缺省值 10 萬(wàn) 補(bǔ)充說(shuō)明 2.3 版本新增。 -
clientMerge
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 是否允許客戶端對(duì)寫入數(shù)據(jù)去重 取值范圍 0:不開啟,1:開啟 缺省值 0 補(bǔ)充說(shuō)明 2.3 版本新增。 -
httpDBNameMandatory
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 是否在 URL 中輸入 數(shù)據(jù)庫(kù)名稱 取值范圍 0:不開啟,1:開啟 缺省值 0 補(bǔ)充說(shuō)明 2.3 版本新增。 -
maxRegexStringLen
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅客戶端適用 含義 正則表達(dá)式最大允許長(zhǎng)度 取值范圍 默認(rèn)值 128,最大長(zhǎng)度 16384 缺省值 128 補(bǔ)充說(shuō)明 2.3 版本新增。 -
lossyColumns
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 配置要進(jìn)行有損壓縮的浮點(diǎn)數(shù)據(jù)類型 取值范圍 float:只對(duì)float類型進(jìn)行有損壓縮
double:只對(duì)double類型進(jìn)行有損壓縮
float|double:float double都進(jìn)行有損壓縮缺省值 默認(rèn)為空字符串,關(guān)閉有損壓縮 補(bǔ)充說(shuō)明 2.4.0.10版本新增。 -
fPrecision
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 設(shè)置float類型浮點(diǎn)數(shù)壓縮精度 取值范圍 0.1 ~ 0.00000001 缺省值 0.00000001(1E-8) 補(bǔ)充說(shuō)明 2.4.0.10版本新增。 -
dPrecision
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 設(shè)置double類型浮點(diǎn)數(shù)壓縮精度 取值范圍 0.1 ~ 0.0000000000000001 缺省值 0.0000000000000001(1E-16) 補(bǔ)充說(shuō)明 2.4.0.10版本新增。 -
maxRange
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 要壓縮數(shù)據(jù)可能的最大波動(dòng)范圍 取值范圍 無(wú)限制 缺省值 自動(dòng)預(yù)測(cè) 補(bǔ)充說(shuō)明 2.4.0.10版本新增。 -
Range
屬性 說(shuō)明 內(nèi)部配置 No 適用范圍 僅服務(wù)端適用 含義 要壓縮數(shù)據(jù)可能的平均波動(dòng)范圍 取值范圍 無(wú)限制 缺省值 自動(dòng)預(yù)測(cè) 補(bǔ)充說(shuō)明 2.4.0.10版本新增。
注意: 對(duì)于端口,TDengine會(huì)使用從serverPort起13個(gè)連續(xù)的TCP和UDP端口號(hào),請(qǐng)務(wù)必在防火墻打開。因此如果是缺省配置,需要打開從6030到6042共13個(gè)端口,而且必須TCP和UDP都打開。(詳細(xì)的端口情況請(qǐng)參見(jiàn) TDengine 2.0 端口說(shuō)明)
不同應(yīng)用場(chǎng)景的數(shù)據(jù)往往具有不同的數(shù)據(jù)特征,比如保留天數(shù)、副本數(shù)、采集頻次、記錄大小、采集點(diǎn)的數(shù)量、壓縮等都可完全不同。為獲得在存儲(chǔ)上的最高效率,TDengine 提供如下存儲(chǔ)相關(guān)的系統(tǒng)配置參數(shù)(既可以作為 create database 指令的參數(shù),也可以寫在 taos.cfg 配置文件中用來(lái)設(shè)定創(chuàng)建新數(shù)據(jù)庫(kù)時(shí)所采用的默認(rèn)值):
| # | 配置參數(shù)名稱 | 單位 | 含義 | 取值范圍 | 缺省值 |
|---|---|---|---|---|---|
| 1 | days | 天 | 一個(gè)數(shù)據(jù)文件存儲(chǔ)數(shù)據(jù)的時(shí)間跨度 | 10 | |
| 2 | keep | 天 | (可通過(guò) alter database 修改)數(shù)據(jù)庫(kù)中數(shù)據(jù)保留的天數(shù)。 | 3650 | |
| 3 | cache | MB | 內(nèi)存塊的大小 | 16 | |
| 4 | blocks | (可通過(guò) alter database 修改)每個(gè) VNODE(TSDB)中有多少個(gè) cache 大小的內(nèi)存塊。因此一個(gè) VNODE 使用的內(nèi)存大小粗略為(cache * blocks)。 | 6 | ||
| 5 | quorum | (可通過(guò) alter database 修改)多副本環(huán)境下指令執(zhí)行的確認(rèn)數(shù)要求 | 1-2 | 1 | |
| 6 | minRows | 文件塊中記錄的最小條數(shù) | 100 | ||
| 7 | maxRows | 文件塊中記錄的最大條數(shù) | 4096 | ||
| 8 | comp | (可通過(guò) alter database 修改)文件壓縮標(biāo)志位 | 0:關(guān)閉,1:一階段壓縮,2:兩階段壓縮 | 2 | |
| 9 | walLevel | (作為 database 的參數(shù)時(shí)名為 wal;在 taos.cfg 中作為參數(shù)時(shí)需要寫作 walLevel)WAL級(jí)別 | 1:寫 WAL,但不執(zhí)行 fsync;2:寫 WAL, 而且執(zhí)行 fsync | 1 | |
| 10 | fsync | 毫秒 | 當(dāng) wal 設(shè)置為 2 時(shí),執(zhí)行 fsync 的周期。設(shè)置為 0,表示每次寫入,立即執(zhí)行 fsync。 | 3000 | |
| 11 | replica | (可通過(guò) alter database 修改)副本個(gè)數(shù) | 1-3 | 1 | |
| 12 | precision | 時(shí)間戳精度標(biāo)識(shí)(2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此參數(shù)。)(從 2.1.5.0 版本開始,新增對(duì)納秒時(shí)間精度的支持) | ms 表示毫秒,us 表示微秒,ns 表示納秒 | ms | |
| 13 | update | 是否允許數(shù)據(jù)更新(從 2.1.7.0 版本開始此參數(shù)支持 0~2 的取值范圍,在此之前取值只能是 [0, 1];而 2.0.8.0 之前的版本在 SQL 指令中不支持此參數(shù)。) | 0:不允許;1:允許更新整行;2:允許部分列更新。 | 0 | |
| 14 | cacheLast | (可通過(guò) alter database 修改)是否在內(nèi)存中緩存子表的最近數(shù)據(jù)(從 2.1.2.0 版本開始此參數(shù)支持 0~3 的取值范圍,在此之前取值只能是 [0, 1];而 2.0.11.0 之前的版本在 SQL 指令中不支持此參數(shù)。)(2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此參數(shù)。) | 0:關(guān)閉;1:緩存子表最近一行數(shù)據(jù);2:緩存子表每一列的最近的非 NULL 值;3:同時(shí)打開緩存最近行和列功能 | 0 |
對(duì)于一個(gè)應(yīng)用場(chǎng)景,可能有多種數(shù)據(jù)特征的數(shù)據(jù)并存,最佳的設(shè)計(jì)是將具有相同數(shù)據(jù)特征的表放在一個(gè)庫(kù)里,這樣一個(gè)應(yīng)用有多個(gè)庫(kù),而每個(gè)庫(kù)可以配置不同的存儲(chǔ)參數(shù),從而保證系統(tǒng)有最優(yōu)的性能。TDengine 允許應(yīng)用在創(chuàng)建庫(kù)時(shí)指定上述存儲(chǔ)參數(shù),如果指定,該參數(shù)就將覆蓋對(duì)應(yīng)的系統(tǒng)配置參數(shù)。舉例,有下述 SQL:
CREATE DATABASE demo DAYS 10 CACHE 32 BLOCKS 8 REPLICA 3 UPDATE 1;
該SQL創(chuàng)建了一個(gè)庫(kù) demo, 每個(gè)數(shù)據(jù)文件存儲(chǔ) 10 天數(shù)據(jù),內(nèi)存塊為 32 兆字節(jié),每個(gè) VNODE 占用 8 個(gè)內(nèi)存塊,副本數(shù)為3,允許更新,而其他參數(shù)與系統(tǒng)配置完全一致。
一個(gè)數(shù)據(jù)庫(kù)創(chuàng)建成功后,僅部分參數(shù)可以修改并實(shí)時(shí)生效,其余參數(shù)不能修改:
| 參數(shù)名 | 能否修改 | 范圍 | 修改語(yǔ)法示例 |
|---|---|---|---|
| name | |||
| create time | |||
| ntables | |||
| vgroups | |||
| replica | YES | 在線 dnode 數(shù)目為: 1:1-1; 2:1-2; >=3:1-3 |
ALTER DATABASE |
| quorum | YES | 1-2 | ALTER DATABASE |
| days | |||
| keep | YES | days-365000 | ALTER DATABASE |
| cache | |||
| blocks | YES | 3-1000 | ALTER DATABASE |
| minrows | |||
| maxrows | |||
| wal | |||
| fsync | |||
| comp | YES | 0-2 | ALTER DATABASE |
| precision | |||
| status | |||
| update | |||
| cachelast | YES | 0 | 1 | 2 | 3 | ALTER DATABASE |
說(shuō)明:在 2.1.3.0 版本之前,通過(guò) ALTER DATABASE 語(yǔ)句修改這些參數(shù)后,需要重啟服務(wù)器才能生效。
TDengine 集群中加入一個(gè)新的 dnode 時(shí),涉及集群相關(guān)的一些參數(shù)必須與已有集群的配置相同,否則不能成功加入到集群中。會(huì)進(jìn)行校驗(yàn)的參數(shù)如下:
- numOfMnodes:系統(tǒng)中管理節(jié)點(diǎn)個(gè)數(shù)。默認(rèn)值:3。(2.0 版本從 2.0.20.11 開始、2.1 及以上版本從 2.1.6.0 開始,numOfMnodes 默認(rèn)值改為 1。)
- mnodeEqualVnodeNum: 一個(gè) mnode 等同于 vnode 消耗的個(gè)數(shù)。默認(rèn)值:4。
- offlineThreshold: dnode 離線閾值,超過(guò)該時(shí)間將導(dǎo)致該 dnode 從集群中刪除。單位為秒,默認(rèn)值:86400*10(即10天)。
- statusInterval: dnode 向 mnode 報(bào)告狀態(tài)時(shí)長(zhǎng)。單位為秒,默認(rèn)值:1。
- maxTablesPerVnode: 每個(gè) vnode 中能夠創(chuàng)建的最大表個(gè)數(shù)。默認(rèn)值:1000000。
- maxVgroupsPerDb: 每個(gè)數(shù)據(jù)庫(kù)中能夠使用的最大 vgroup 個(gè)數(shù)。
- arbitrator: 系統(tǒng)中裁決器的 end point,缺省為空。
- timezone、locale、charset 的配置見(jiàn)客戶端配置。(2.0.20.0 及以上的版本里,集群中加入新節(jié)點(diǎn)已不要求 locale 和 charset 參數(shù)取值一致)
- balance:是否啟用負(fù)載均衡。0:否,1:是。默認(rèn)值:1。
- flowctrl:是否啟用非阻塞流控。0:否,1:是。默認(rèn)值:1。
- slaveQuery:是否啟用 slave vnode 參與查詢。0:否,1:是。默認(rèn)值:1。
- adjustMaster:是否啟用 vnode master 負(fù)載均衡。0:否,1:是。默認(rèn)值:1。
為方便調(diào)試,可通過(guò) SQL 語(yǔ)句臨時(shí)調(diào)整每個(gè) dnode 的日志配置,系統(tǒng)重啟后會(huì)失效:
ALTER DNODE <dnode_id> <config>
- dnode_id: 可以通過(guò) SQL 語(yǔ)句"SHOW DNODES"命令獲取
- config: 要調(diào)整的日志參數(shù),在如下列表中取值
resetlog 截?cái)嗯f日志文件,創(chuàng)建一個(gè)新日志文件 debugFlag < 131 | 135 | 143 > 設(shè)置 debugFlag 為 131、135 或者 143
例如:
alter dnode 1 debugFlag 135;
客戶端及應(yīng)用驅(qū)動(dòng)配置
TDengine 系統(tǒng)的前臺(tái)交互客戶端應(yīng)用程序?yàn)?taos,以及應(yīng)用驅(qū)動(dòng),它與 taosd 共享同一個(gè)配置文件 taos.cfg。運(yùn)行 taos 時(shí),使用參數(shù) -c 指定配置文件目錄,如 taos -c /home/cfg,表示使用/home/cfg/目錄下的 taos.cfg 配置文件中的參數(shù),缺省目錄是 /etc/taos。更多 taos 的使用方法請(qǐng)見(jiàn)幫助信息 taos --help。本節(jié)主要說(shuō)明 taos 客戶端應(yīng)用在配置文件 taos.cfg 文件中使用到的參數(shù)。
2.0.10.0 之后版本支持命令行以下參數(shù)顯示當(dāng)前客戶端參數(shù)的配置
taos -C 或 taos --dump-config
客戶端及應(yīng)用驅(qū)動(dòng)配置參數(shù)列表及解釋
-
firstEp: taos 啟動(dòng)時(shí),主動(dòng)連接的集群中第一個(gè) taosd 實(shí)例的 end point, 缺省值為 localhost:6030。
-
secondEp: taos 啟動(dòng)時(shí),如果 firstEp 連不上,將嘗試連接 secondEp。
-
locale:系統(tǒng)區(qū)位信息及編碼格式。
默認(rèn)值:系統(tǒng)中動(dòng)態(tài)獲取,如果自動(dòng)獲取失敗,需要用戶在配置文件設(shè)置或通過(guò)API設(shè)置。
TDengine 為存儲(chǔ)中文、日文、韓文等非 ASCII 編碼的寬字符,提供一種專門的字段類型 nchar。寫入 nchar 字段的數(shù)據(jù)將統(tǒng)一采用 UCS4-LE 格式進(jìn)行編碼并發(fā)送到服務(wù)器。需要注意的是,編碼正確性是客戶端來(lái)保證。因此,如果用戶想要正常使用 nchar 字段來(lái)存儲(chǔ)諸如中文、日文、韓文等非 ASCII 字符,需要正確設(shè)置客戶端的編碼格式。
客戶端的輸入的字符均采用操作系統(tǒng)當(dāng)前默認(rèn)的編碼格式,在 Linux 系統(tǒng)上多為 UTF-8,部分中文系統(tǒng)編碼則可能是 GB18030 或 GBK 等。在 docker 環(huán)境中默認(rèn)的編碼是 POSIX。在中文版 Windows 系統(tǒng)中,編碼則是 CP936??蛻舳诵枰_保正確設(shè)置自己所使用的字符集,即客戶端運(yùn)行的操作系統(tǒng)當(dāng)前編碼字符集,才能保證 nchar 中的數(shù)據(jù)正確轉(zhuǎn)換為 UCS4-LE 編碼格式。
在 Linux 中 locale 的命名規(guī)則為: <語(yǔ)言>_<地區(qū)>.<字符集編碼> 如:zh_CN.UTF-8,zh 代表中文,CN 代表大陸地區(qū),UTF-8 表示字符集。字符集編碼為客戶端正確解析本地字符串提供編碼轉(zhuǎn)換的說(shuō)明。Linux 系統(tǒng)與 macOS 系統(tǒng)可以通過(guò)設(shè)置 locale 來(lái)確定系統(tǒng)的字符編碼,由于 Windows 使用的 locale 中不是 POSIX 標(biāo)準(zhǔn)的 locale 格式,因此在 Windows 下需要采用另一個(gè)配置參數(shù) charset 來(lái)指定字符編碼。在 Linux 系統(tǒng)中也可以使用charset來(lái)指定字符編碼。
-
charset:字符集編碼。
默認(rèn)值:系統(tǒng)中動(dòng)態(tài)獲取,如果自動(dòng)獲取失敗,需要用戶在配置文件設(shè)置或通過(guò) API 設(shè)置。
如果配置文件中不設(shè)置 charset,在 Linux 系統(tǒng)中,taos 在啟動(dòng)時(shí)候,自動(dòng)讀取系統(tǒng)當(dāng)前的 locale 信息,并從 locale 信息中解析提取 charset 編碼格式。如果自動(dòng)讀取 locale 信息失敗,則嘗試讀取 charset 配置,如果讀取 charset 配置也失敗,則中斷啟動(dòng)過(guò)程。
在 Linux 系統(tǒng)中,locale 信息包含了字符編碼信息,因此正確設(shè)置了 Linux 系統(tǒng) locale 以后可以不用再單獨(dú)設(shè)置 charset。例如:
locale zh_CN.UTF-8在 Windows 系統(tǒng)中,無(wú)法從 locale 獲取系統(tǒng)當(dāng)前編碼。如果無(wú)法從配置文件中讀取字符串編碼信息,taos 默認(rèn)設(shè)置為字符編碼為 CP936。其等效在配置文件中添加如下配置:
charset CP936如果需要調(diào)整字符編碼,請(qǐng)查閱當(dāng)前操作系統(tǒng)使用的編碼,并在配置文件中正確設(shè)置。
在 Linux 系統(tǒng)中,如果用戶同時(shí)設(shè)置了 locale 和字符集編碼 charset,并且 locale 和 charset 的不一致,后設(shè)置的值將覆蓋前面設(shè)置的值。
locale zh_CN.UTF-8 charset GBK則 charset 的有效值是 GBK。
charset GBK locale zh_CN.UTF-8charset 的有效值是 UTF-8。
日志的配置參數(shù),與 server 的配置參數(shù)完全一樣。
-
timezone
默認(rèn)值:動(dòng)態(tài)獲取當(dāng)前客戶端運(yùn)行系統(tǒng)所在的時(shí)區(qū)。
為應(yīng)對(duì)多時(shí)區(qū)的數(shù)據(jù)寫入和查詢問(wèn)題,TDengine 采用 Unix 時(shí)間戳(Unix Timestamp)來(lái)記錄和存儲(chǔ)時(shí)間戳。Unix 時(shí)間戳的特點(diǎn)決定了任一時(shí)刻不論在任何時(shí)區(qū),產(chǎn)生的時(shí)間戳均一致。需要注意的是,Unix時(shí)間戳是在客戶端完成轉(zhuǎn)換和記錄。為了確??蛻舳似渌问降臅r(shí)間轉(zhuǎn)換為正確的 Unix 時(shí)間戳,需要設(shè)置正確的時(shí)區(qū)。
在Linux系統(tǒng)中,客戶端會(huì)自動(dòng)讀取系統(tǒng)設(shè)置的時(shí)區(qū)信息。用戶也可以采用多種方式在配置文件設(shè)置時(shí)區(qū)。例如:
timezone UTC-8 timezone GMT-8 timezone Asia/Shanghai均是合法的設(shè)置東八區(qū)時(shí)區(qū)的格式。但需注意,Windows 下并不支持
timezone Asia/Shanghai這樣的寫法,而必須寫成timezone UTC-8。時(shí)區(qū)的設(shè)置對(duì)于查詢和寫入SQL語(yǔ)句中非 Unix 時(shí)間戳的內(nèi)容(時(shí)間戳字符串、關(guān)鍵詞 now 的解析)產(chǎn)生影響。例如:
SELECT count(*) FROM table_name WHERE TS<'2019-04-11 12:01:08';在東八區(qū),SQL 語(yǔ)句等效于
SELECT count(*) FROM table_name WHERE TS<1554955268000;在 UTC 時(shí)區(qū),SQL 語(yǔ)句等效于
SELECT count(*) FROM table_name WHERE TS<1554984068000;為了避免使用字符串時(shí)間格式帶來(lái)的不確定性,也可以直接使用 Unix 時(shí)間戳。此外,還可以在 SQL 語(yǔ)句中使用帶有時(shí)區(qū)的時(shí)間戳字符串,例如:RFC3339 格式的時(shí)間戳字符串,2013-04-12T15:52:01.123+08:00 或者 ISO-8601 格式時(shí)間戳字符串 2013-04-12T15:52:01.123+0800。上述兩個(gè)字符串轉(zhuǎn)化為 Unix 時(shí)間戳不受系統(tǒng)所在時(shí)區(qū)的影響。
啟動(dòng) taos 時(shí),也可以從命令行指定一個(gè) taosd 實(shí)例的 end point,否則就從 taos.cfg 讀取。
-
maxBinaryDisplayWidth
Shell 中 binary 和 nchar 字段的顯示寬度上限,超過(guò)此限制的部分將被隱藏。默認(rèn)值:30??稍?taos shell 中通過(guò)命令 set max_binary_display_width nn 動(dòng)態(tài)修改此選項(xiàng)。
用戶管理
系統(tǒng)管理員可以在 CLI 界面里添加、刪除用戶,也可以修改密碼。CLI 里 SQL 語(yǔ)法如下:
CREATE USER <user_name> PASS <'password'>;
創(chuàng)建用戶,并指定用戶名和密碼,密碼需要用單引號(hào)引起來(lái),單引號(hào)為英文半角
DROP USER <user_name>;
刪除用戶,限 root 用戶使用
ALTER USER <user_name> PASS <'password'>;
修改用戶密碼,為避免被轉(zhuǎn)換為小寫,密碼需要用單引號(hào)引用,單引號(hào)為英文半角
ALTER USER <user_name> PRIVILEGE <write|read>;
修改用戶權(quán)限為:write 或 read,不需要添加單引號(hào)
說(shuō)明:系統(tǒng)內(nèi)共有 super/write/read 三種權(quán)限級(jí)別,但目前不允許通過(guò) alter 指令把 super 權(quán)限賦予用戶。
SHOW USERS;
顯示所有用戶
注意:SQL 語(yǔ)法中,< >表示需要用戶輸入的部分,但請(qǐng)不要輸入< >本身。
數(shù)據(jù)導(dǎo)入
TDengine 提供多種方便的數(shù)據(jù)導(dǎo)入功能,一種按腳本文件導(dǎo)入,一種按數(shù)據(jù)文件導(dǎo)入,一種是 taosdump 工具導(dǎo)入本身導(dǎo)出的文件。
按腳本文件導(dǎo)入
TDengine 的 shell 支持 source filename 命令,用于批量運(yùn)行文件中的 SQL 語(yǔ)句。用戶可將建庫(kù)、建表、寫數(shù)據(jù)等 SQL 命令寫在同一個(gè)文件中,每條命令單獨(dú)一行,在 shell 中運(yùn)行 source 命令,即可按順序批量運(yùn)行文件中的SQL語(yǔ)句。以‘#’開頭的 SQL 語(yǔ)句被認(rèn)為是注釋,shell 將自動(dòng)忽略。
按數(shù)據(jù)文件導(dǎo)入
TDengine 也支持在 shell 對(duì)已存在的表從 CSV 文件中進(jìn)行數(shù)據(jù)導(dǎo)入。CSV 文件只屬于一張表且 CSV 文件中的數(shù)據(jù)格式需與要導(dǎo)入表的結(jié)構(gòu)相同,在導(dǎo)入的時(shí)候,其語(yǔ)法如下:
insert into tb1 file 'path/data.csv';
注意:如果 CSV 文件首行存在描述信息,請(qǐng)手動(dòng)刪除后再導(dǎo)入。如某列為空,填NULL,無(wú)引號(hào)。
例如,現(xiàn)在存在一個(gè)子表 d1001, 其表結(jié)構(gòu)如下:
taos> DESCRIBE d1001
Field | Type | Length | Note |
=================================================================================
ts | TIMESTAMP | 8 | |
current | FLOAT | 4 | |
voltage | INT | 4 | |
phase | FLOAT | 4 | |
location | BINARY | 64 | TAG |
groupid | INT | 4 | TAG |
要導(dǎo)入的 data.csv 的格式如下:
'2018-10-04 06:38:05.000',10.30000,219,0.31000
'2018-10-05 06:38:15.000',12.60000,218,0.33000
'2018-10-06 06:38:16.800',13.30000,221,0.32000
'2018-10-07 06:38:05.000',13.30000,219,0.33000
'2018-10-08 06:38:05.000',14.30000,219,0.34000
'2018-10-09 06:38:05.000',15.30000,219,0.35000
'2018-10-10 06:38:05.000',16.30000,219,0.31000
'2018-10-11 06:38:05.000',17.30000,219,0.32000
'2018-10-12 06:38:05.000',18.30000,219,0.31000
那么可以用如下命令導(dǎo)入數(shù)據(jù):
taos> insert into d1001 file '~/data.csv';
Query OK, 9 row(s) affected (0.004763s)
taosdump工具導(dǎo)入
TDengine 提供了方便的數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出工具 taosdump。用戶可以將 taosdump 從一個(gè)系統(tǒng)導(dǎo)出的數(shù)據(jù),導(dǎo)入到其他系統(tǒng)中。具體使用方法,請(qǐng)參見(jiàn):TDengine 數(shù)據(jù)備份工具: taosdump。
數(shù)據(jù)導(dǎo)出
為方便數(shù)據(jù)導(dǎo)出,TDengine 提供了兩種導(dǎo)出方式,分別是按表導(dǎo)出和用 taosdump 導(dǎo)出。
按表導(dǎo)出CSV文件
如果用戶需要導(dǎo)出一個(gè)表或一個(gè) STable 中的數(shù)據(jù),可在 taos shell 中運(yùn)行:
select * from <tb_name> >> data.csv;
這樣,表 tb_name 中的數(shù)據(jù)就會(huì)按照 CSV 格式導(dǎo)出到文件 data.csv 中。
用taosdump導(dǎo)出數(shù)據(jù)
利用 taosdump,用戶可以根據(jù)需要選擇導(dǎo)出所有數(shù)據(jù)庫(kù)、一個(gè)數(shù)據(jù)庫(kù)或者數(shù)據(jù)庫(kù)中的一張表,所有數(shù)據(jù)或一時(shí)間段的數(shù)據(jù),甚至僅僅表的定義。
具體使用方法,請(qǐng)參見(jiàn)博客:TDengine DUMP 工具使用指南。
系統(tǒng)連接、任務(wù)查詢管理
系統(tǒng)管理員可以從 CLI 查詢系統(tǒng)的連接、正在進(jìn)行的查詢、流式計(jì)算,并且可以關(guān)閉連接、停止正在進(jìn)行的查詢和流式計(jì)算。CLI 里 SQL 語(yǔ)法如下:
SHOW CONNECTIONS;
顯示數(shù)據(jù)庫(kù)的連接,其中一列顯示 ip:port, 為連接的 IP 地址和端口號(hào)。
KILL CONNECTION <connection-id>;
強(qiáng)制關(guān)閉數(shù)據(jù)庫(kù)連接,其中的 connection-id 是 SHOW CONNECTIONS 中顯示的第一列的數(shù)字。
SHOW QUERIES;
顯示數(shù)據(jù)查詢,其中第一列顯示的以冒號(hào)隔開的兩個(gè)數(shù)字為 query-id,為發(fā)起該 query 應(yīng)用連接的 connection-id 和查詢次數(shù)。
KILL QUERY <query-id>;
強(qiáng)制關(guān)閉數(shù)據(jù)查詢,其中query-id是SHOW QUERIES中顯示的 connection-id:query-no字串,如“105:2”,拷貝粘貼即可。
SHOW STREAMS;
顯示流式計(jì)算,其中第一列顯示的以冒號(hào)隔開的兩個(gè)數(shù)字為 stream-id, 為啟動(dòng)該 stream 應(yīng)用連接的 connection-id 和發(fā)起 stream 的次數(shù)。
KILL STREAM <stream-id>;
強(qiáng)制關(guān)閉流式計(jì)算,其中的中 stream-id 是 SHOW STREAMS 中顯示的 connection-id:stream-no 字串,如 103:2,拷貝粘貼即可。
系統(tǒng)監(jiān)控
TDengine 啟動(dòng)后,會(huì)自動(dòng)創(chuàng)建一個(gè)監(jiān)測(cè)數(shù)據(jù)庫(kù) log,并自動(dòng)將服務(wù)器的 CPU、內(nèi)存、硬盤空間、帶寬、請(qǐng)求數(shù)、磁盤讀寫速度、慢查詢等信息定時(shí)寫入該數(shù)據(jù)庫(kù)。TDengine 還將重要的系統(tǒng)操作(比如登錄、創(chuàng)建、刪除數(shù)據(jù)庫(kù)等)日志以及各種錯(cuò)誤報(bào)警信息記錄下來(lái)存放在 log 庫(kù)里。系統(tǒng)管理員可以從 CLI 直接查看這個(gè)數(shù)據(jù)庫(kù),也可以在 WEB 通過(guò)圖形化界面查看這些監(jiān)測(cè)信息。
這些監(jiān)測(cè)信息的采集缺省是打開的,但可以修改配置文件里的選項(xiàng) monitor 將其關(guān)閉或打開。
TDinsight - 使用監(jiān)控?cái)?shù)據(jù)庫(kù) + Grafana 對(duì) TDengine 進(jìn)行監(jiān)控的解決方案
從 2.3.3.0 開始,監(jiān)控?cái)?shù)據(jù)庫(kù)將提供更多的監(jiān)控項(xiàng),您可以從 TDinsight Grafana Dashboard 了解如何使用 TDinsight 方案對(duì) TDengine 進(jìn)行監(jiān)控。
我們提供了一個(gè)自動(dòng)化腳本 TDinsight.sh 對(duì)TDinsight進(jìn)行部署。
下載 TDinsight.sh:
wget https://github.com/taosdata/grafanaplugin/raw/master/dashboards/TDinsight.sh
chmod +x TDinsight.sh
準(zhǔn)備:
-
TDengine Server 信息:
- TDengine RESTful 服務(wù):對(duì)本地而言,可以是
http://localhost:6041,使用參數(shù)-a。 - TDengine 用戶名和密碼,使用
-u-p參數(shù)設(shè)置。
- TDengine RESTful 服務(wù):對(duì)本地而言,可以是
-
Grafana 告警通知
-
使用已經(jīng)存在的Grafana Notification Channel
uid,參數(shù)-E。該參數(shù)可以使用curl -u admin:admin localhost:3000/api/alert-notifications |jq來(lái)獲取。sudo ./TDinsight.sh -a http://localhost:6041 -u root -p taosdata -E <notifier uid> -
使用 TDengine 數(shù)據(jù)源插件內(nèi)置的阿里云短信告警通知,使用
-s啟用之,并設(shè)置如下參數(shù):- 阿里云短信服務(wù)Key ID,參數(shù)
-I - 阿里云短信服務(wù)Key Secret,參數(shù)
K - 阿里云短信服務(wù)簽名,參數(shù)
-S - 短信通知模板號(hào),參數(shù)
-C - 短信通知模板輸入?yún)?shù),JSON格式,參數(shù)
-T,如{"alarm_level":"%s","time":"%s","name":"%s","content":"%s"} - 逗號(hào)分隔的通知手機(jī)列表,參數(shù)
-B
sudo ./TDinsight.sh -a http://localhost:6041 -u root -p taosdata -s \ -I XXXXXXX -K XXXXXXXX -S taosdata -C SMS_1111111 -B 18900000000 \ -T '{"alarm_level":"%s","time":"%s","name":"%s","content":"%s"}' - 阿里云短信服務(wù)Key ID,參數(shù)
-
運(yùn)行程序并重啟 Grafana 服務(wù),打開面板:http://localhost:3000/d/tdinsight。
更多使用場(chǎng)景和限制請(qǐng)參考TDinsight 文檔。
性能優(yōu)化
注意:碎片重整操作會(huì)產(chǎn)生大量磁盤 I/O。因此在重整進(jìn)行期間,有可能會(huì)影響節(jié)點(diǎn)的寫入和查詢性能,甚至在極端情況下導(dǎo)致短時(shí)間的應(yīng)用寫入阻塞。
因數(shù)據(jù)行 update、表刪除、數(shù)據(jù)過(guò)期等原因,TDengine 的磁盤存儲(chǔ)文件有可能出現(xiàn)數(shù)據(jù)碎片,影響查詢操作的性能表現(xiàn)。從 2.1.3.0 版本開始,新增 SQL 指令 COMPACT 來(lái)啟動(dòng)碎片重整過(guò)程:
COMPACT VNODES IN (vg_id1, vg_id2, ...)
COMPACT 命令對(duì)指定的一個(gè)或多個(gè) VGroup 啟動(dòng)碎片重整,系統(tǒng)會(huì)通過(guò)任務(wù)隊(duì)列盡快安排重整操作的具體執(zhí)行。COMPACT 指令所需的 VGroup id,可以通過(guò) SHOW VGROUPS; 指令的輸出結(jié)果獲?。欢以?SHOW VGROUPS; 中會(huì)有一個(gè) compacting 列,值為 2 時(shí)表示對(duì)應(yīng)的 VGroup 處于排隊(duì)等待進(jìn)行重整的狀態(tài),值為 1 時(shí)表示正在進(jìn)行碎片重整,為 0 時(shí)則表示并沒(méi)有處于重整狀態(tài)(未要求進(jìn)行重整或已經(jīng)完成重整)。
TSZ 壓縮算法
TSZ 壓縮算法簡(jiǎn)介
TSZ 壓縮算法是 TDengine 為浮點(diǎn)數(shù)據(jù)類型提供更加豐富的壓縮功能,可以實(shí)現(xiàn)浮點(diǎn)數(shù)的有損至無(wú)損全狀態(tài)壓縮,相比原來(lái)在 TDengine 中原有壓縮算法,TSZ 壓縮算法壓縮選項(xiàng)更豐富,壓縮率更高,即使切到無(wú)損狀態(tài)下對(duì)浮點(diǎn)數(shù)壓縮,壓縮率也會(huì)比原來(lái)的壓縮算法高一倍。
適合場(chǎng)景
TSZ 壓縮算法壓縮率比原來(lái)的要高,但壓縮時(shí)間會(huì)更長(zhǎng),即開啟 TSZ 壓縮算法寫入速度會(huì)有一些下降,通常情況下會(huì)有 20% 左右的下降。影響寫入速度是因?yàn)樾枰嗟?CPU 計(jì)算,所以從原始數(shù)據(jù)到壓縮好數(shù)據(jù)的交付時(shí)間變長(zhǎng),導(dǎo)致寫入速度變慢。如果您的服務(wù)器 CPU 配置很高的話,這個(gè)影響會(huì)變小甚至沒(méi)有。
另外如果設(shè)備產(chǎn)生了大量的高精度浮點(diǎn)數(shù),存儲(chǔ)占用的空間非常龐大,但實(shí)際使用并不需要那么高的精度時(shí),可以通過(guò) TSZ 壓縮的有損壓縮功能,把精度壓縮至指定的長(zhǎng)度,節(jié)約存儲(chǔ)空間。
總結(jié):采集到了大量浮點(diǎn)數(shù),存儲(chǔ)時(shí)占用空間過(guò)大或出有存儲(chǔ)空間不足,需要超高壓縮率的場(chǎng)景。
使用步驟
-
檢查版本支持,2.4.0.10 及之后 TDengine 的版本都支持此功能
-
配置選項(xiàng)開啟功能,在 TDengine 的配置文件 taos.cfg 增加一行以下內(nèi)容,打開 TSZ 功能
lossyColumns float|double
-
根據(jù)自己需要配置其它選項(xiàng),如果不配置都會(huì)按默認(rèn)值處理。
-
重啟服務(wù),配置生效。
-
確認(rèn)功能已開啟,在服務(wù)啟動(dòng)過(guò)程中輸出的信息如果有前面配置的內(nèi)容,表明功能已生效:
02/22 10:49:27.607990 00002933 UTL lossyColumns float|double
注意事項(xiàng)
-
確認(rèn)版本是否支持
-
除了服務(wù)器啟動(dòng)時(shí)的輸出的配置成功信息外,不再會(huì)有其它的信息輸出是使用的哪種壓縮算法,可以通過(guò)配置前后數(shù)據(jù)庫(kù)文件大小來(lái)比較效果
-
如果浮點(diǎn)數(shù)類型列較少,看整體數(shù)據(jù)文件大小效果會(huì)不太明顯
-
此壓縮產(chǎn)生的數(shù)據(jù)文件中浮點(diǎn)數(shù)據(jù)部分將不能被 2.4.0.10 以下的版本解析,即不向下兼容,使用時(shí)避免更換回舊版本,以免數(shù)據(jù)不能被讀取出來(lái)。
-
在使用過(guò)程中允許反復(fù)開啟和關(guān)閉 TSZ 壓縮選項(xiàng)的操作,前后兩種壓縮算法產(chǎn)生的數(shù)據(jù)都能正常讀取。
文件目錄結(jié)構(gòu)
安裝 TDengine 后,默認(rèn)會(huì)在操作系統(tǒng)中生成下列目錄或文件:
| 目錄/文件 | 說(shuō)明 |
|---|---|
| /usr/local/taos/bin | TDengine 可執(zhí)行文件目錄。其中的執(zhí)行文件都會(huì)軟鏈接到 /usr/bin 目錄下。 |
| /usr/local/taos/connector | TDengine 各種連接器目錄。 |
| /usr/local/taos/driver | TDengine 動(dòng)態(tài)鏈接庫(kù)目錄。會(huì)軟鏈接到 /usr/lib 目錄下。 |
| /usr/local/taos/examples | TDengine 各種語(yǔ)言應(yīng)用示例目錄。 |
| /usr/local/taos/include | TDengine 對(duì)外提供的 C 語(yǔ)言接口的頭文件。 |
| /etc/taos/taos.cfg | TDengine 默認(rèn)[配置文件] |
| /var/lib/taos | TDengine 默認(rèn)數(shù)據(jù)文件目錄??赏ㄟ^(guò)[配置文件]修改位置。 |
| /var/log/taos | TDengine 默認(rèn)日志文件目錄??赏ㄟ^(guò)[配置文件]修改位置。 |
可執(zhí)行文件
TDengine 的所有可執(zhí)行文件默認(rèn)存放在 /usr/local/taos/bin 目錄下。其中包括:
- taosd:TDengine 服務(wù)端可執(zhí)行文件
- taos:TDengine Shell 可執(zhí)行文件
- taosdump:數(shù)據(jù)導(dǎo)入導(dǎo)出工具
- taosBenchmark:TDengine 測(cè)試工具
- remove.sh:卸載 TDengine 的腳本,請(qǐng)謹(jǐn)慎執(zhí)行,鏈接到 /usr/bin 目錄下的 rmtaos 命令。會(huì)刪除 TDengine 的安裝目錄 /usr/local/taos,但會(huì)保留 /etc/taos、/var/lib/taos、/var/log/taos。
注意:2.4.0.0 版本之后的 taosBenchmark 和 taosdump 需要安裝獨(dú)立安裝包 taosTools。
您可以通過(guò)修改系統(tǒng)配置文件 taos.cfg 來(lái)配置不同的數(shù)據(jù)目錄和日志目錄。
TDengine 的啟動(dòng)、停止、卸載
TDengine 使用 Linux 系統(tǒng)的 systemd/systemctl/service 來(lái)管理系統(tǒng)的啟動(dòng)和、停止、重啟操作。TDengine 的服務(wù)進(jìn)程是 taosd,默認(rèn)情況下 TDengine 在系統(tǒng)啟動(dòng)后將自動(dòng)啟動(dòng)。DBA 可以通過(guò) systemd/systemctl/service 手動(dòng)操作停止、啟動(dòng)、重新啟動(dòng)服務(wù)。
以 systemctl 為例,命令如下:
-
啟動(dòng)服務(wù)進(jìn)程:
systemctl start taosd -
停止服務(wù)進(jìn)程:
systemctl stop taosd -
重啟服務(wù)進(jìn)程:
systemctl restart taosd -
查看服務(wù)狀態(tài):
systemctl status taosd
如果服務(wù)進(jìn)程處于活動(dòng)狀態(tài),則 status 指令會(huì)顯示如下的相關(guān)信息:
......
Active: active (running)
......
如果后臺(tái)服務(wù)進(jìn)程處于停止?fàn)顟B(tài),則 status 指令會(huì)顯示如下的相關(guān)信息:
......
Active: inactive (dead)
......
卸載 TDengine,只需要執(zhí)行如下命令:
rmtaos
警告:執(zhí)行該命令后,TDengine 程序?qū)⒈煌耆珓h除,務(wù)必謹(jǐn)慎使用。
TDengine參數(shù)限制與保留關(guān)鍵字
名稱命名規(guī)則
- 合法字符:英文字符、數(shù)字和下劃線
- 允許英文字符或下劃線開頭,不允許以數(shù)字開頭
- 不區(qū)分大小寫
-
轉(zhuǎn)義后表(列)名規(guī)則: 為了兼容支持更多形式的表(列)名,TDengine 引入新的轉(zhuǎn)義符 "`"??捎米尡砻c關(guān)鍵詞不沖突,同時(shí)不受限于上述表名稱合法性約束檢查。 轉(zhuǎn)義后的表(列)名同樣受到長(zhǎng)度限制要求,且長(zhǎng)度計(jì)算的時(shí)候不計(jì)算轉(zhuǎn)義符。使用轉(zhuǎn)義字符以后,不再對(duì)轉(zhuǎn)義字符中的內(nèi)容進(jìn)行大小寫統(tǒng)一。
例如:`aBc` 和 `abc` 是不同的表(列)名,但是 abc 和 aBc 是相同的表(列)名。 需要注意的是轉(zhuǎn)義字符中的內(nèi)容必須是可打印字符。 支持轉(zhuǎn)義符的功能從 2.3.0.1 版本開始。
密碼合法字符集
[a-zA-Z0-9!?$%^&*()_–+={[}]:;@~#|<,>.?/]
去掉了 ‘“`\ (單雙引號(hào)、撇號(hào)、反斜杠、空格)
- 數(shù)據(jù)庫(kù)名:不能包含“.”以及特殊字符,不能超過(guò) 32 個(gè)字符
- 表名:不能包含“.”以及特殊字符,與所屬數(shù)據(jù)庫(kù)名一起,不能超過(guò) 192 個(gè)字符。每行數(shù)據(jù)最大長(zhǎng)度 48K 個(gè)字符(2.1.7.0 之前的版本為 16K,每個(gè) BINARY/NCHAR 類型的列還會(huì)額外占用 2 個(gè) byte 的存儲(chǔ)位置)
- 表的列名:不能包含特殊字符,不能超過(guò) 64 個(gè)字符
- 數(shù)據(jù)庫(kù)名、表名、列名,都不能以數(shù)字開頭,合法的可用字符集是“英文字符、數(shù)字和下劃線”
- 表的列數(shù):不能超過(guò) 1024 列,最少需要 2 列,第一列必須是時(shí)間戳(從 2.1.7.0 版本開始,改為最多支持 4096 列)
- 記錄的最大長(zhǎng)度:包括時(shí)間戳 8 byte,不能超過(guò) 48KB(2.1.7.0 之前的版本為 16K,每個(gè) BINARY/NCHAR 類型的列還會(huì)額外占用 2 個(gè) byte 的存儲(chǔ)位置)
- 單條 SQL 語(yǔ)句默認(rèn)最大字符串長(zhǎng)度:1048576 byte,但可通過(guò)系統(tǒng)配置參數(shù) maxSQLLength 修改,取值范圍 65480 ~ 1048576 byte
- 數(shù)據(jù)庫(kù)副本數(shù):不能超過(guò) 3
- 用戶名:不能超過(guò) 23 個(gè) byte
- 用戶密碼:不能超過(guò) 15 個(gè) byte
- 標(biāo)簽(Tags)數(shù)量:不能超過(guò) 128 個(gè),可以 0 個(gè)
- 標(biāo)簽的總長(zhǎng)度:不能超過(guò) 16K byte
- 記錄條數(shù):僅受存儲(chǔ)空間限制
- 表的個(gè)數(shù):僅受節(jié)點(diǎn)個(gè)數(shù)限制
- 庫(kù)的個(gè)數(shù):僅受節(jié)點(diǎn)個(gè)數(shù)限制
- 單個(gè)庫(kù)上虛擬節(jié)點(diǎn)個(gè)數(shù):不能超過(guò) 64 個(gè)
- 庫(kù)的數(shù)目,超級(jí)表的數(shù)目、表的數(shù)目,系統(tǒng)不做限制,僅受系統(tǒng)資源限制
- SELECT 語(yǔ)句的查詢結(jié)果,最多允許返回 1024 列(語(yǔ)句中的函數(shù)調(diào)用可能也會(huì)占用一些列空間),超限時(shí)需要顯式指定較少的返回?cái)?shù)據(jù)列,以避免語(yǔ)句執(zhí)行報(bào)錯(cuò)。(從 2.1.7.0 版本開始,改為最多允許 4096 列)
目前 TDengine 有將近 200 個(gè)內(nèi)部保留關(guān)鍵字,這些關(guān)鍵字無(wú)論大小寫均不可以用作庫(kù)名、表名、STable 名、數(shù)據(jù)列名及標(biāo)簽列名等。這些關(guān)鍵字列表如下:
| 關(guān)鍵字列表 | ||||
|---|---|---|---|---|
| ABORT | CREATE | IGNORE | NULL | STAR |
| ACCOUNT | CTIME | IMMEDIATE | OF | STATE |
| ACCOUNTS | DATABASE | IMPORT | OFFSET | STATEMENT |
| ADD | DATABASES | IN | OR | STATE_WINDOW |
| AFTER | DAYS | INITIALLY | ORDER | STORAGE |
| ALL | DBS | INSERT | PARTITIONS | STREAM |
| ALTER | DEFERRED | INSTEAD | PASS | STREAMS |
| AND | DELIMITERS | INT | PLUS | STRING |
| AS | DESC | INTEGER | PPS | SYNCDB |
| ASC | DESCRIBE | INTERVAL | PRECISION | TABLE |
| ATTACH | DETACH | INTO | PREV | TABLES |
| BEFORE | DISTINCT | IS | PRIVILEGE | TAG |
| BEGIN | DIVIDE | ISNULL | QTIME | TAGS |
| BETWEEN | DNODE | JOIN | QUERIES | TBNAME |
| BIGINT | DNODES | KEEP | QUERY | TIMES |
| BINARY | DOT | KEY | QUORUM | TIMESTAMP |
| BITAND | DOUBLE | KILL | RAISE | TINYINT |
| BITNOT | DROP | LE | REM | TOPIC |
| BITOR | EACH | LIKE | REPLACE | TOPICS |
| BLOCKS | END | LIMIT | REPLICA | TRIGGER |
| BOOL | EQ | LINEAR | RESET | TSERIES |
| BY | EXISTS | LOCAL | RESTRICT | UMINUS |
| CACHE | EXPLAIN | LP | ROW | UNION |
| CACHELAST | FAIL | LSHIFT | RP | UNSIGNED |
| CASCADE | FILE | LT | RSHIFT | UPDATE |
| CHANGE | FILL | MATCH | SCORES | UPLUS |
| CLUSTER | FLOAT | MAXROWS | SELECT | USE |
| COLON | FOR | MINROWS | SEMI | USER |
| COLUMN | FROM | MINUS | SESSION | USERS |
| COMMA | FSYNC | MNODES | SET | USING |
| COMP | GE | MODIFY | SHOW | VALUES |
| COMPACT | GLOB | MODULES | SLASH | VARIABLE |
| CONCAT | GRANTS | NCHAR | SLIDING | VARIABLES |
| CONFLICT | GROUP | NE | SLIMIT | VGROUPS |
| CONNECTION | GT | NONE | SMALLINT | VIEW |
| CONNECTIONS | HAVING | NOT | SOFFSET | VNODES |
| CONNS | ID | NOTNULL | STABLE | WAL |
| COPY | IF | NOW | STABLES | WHERE |
轉(zhuǎn)義字符說(shuō)明
-
轉(zhuǎn)義字符表(轉(zhuǎn)義符的功能從 2.4.0.4 版本開始)
字符序列 代表的字符 \'單引號(hào)' \"雙引號(hào)" \n 換行符 \r 回車符 \t tab符 \\斜杠\ \%% 規(guī)則見(jiàn)下 \__ 規(guī)則見(jiàn)下 -
轉(zhuǎn)義字符使用規(guī)則
- 標(biāo)識(shí)符里有轉(zhuǎn)義字符(數(shù)據(jù)庫(kù)名、表名、列名)
- 普通標(biāo)識(shí)符: 直接提示錯(cuò)誤的標(biāo)識(shí)符,因?yàn)闃?biāo)識(shí)符規(guī)定必須是數(shù)字、字母和下劃線,并且不能以數(shù)字開頭。
- 反引號(hào) `` 標(biāo)識(shí)符: 保持原樣,不轉(zhuǎn)義
- 數(shù)據(jù)里有轉(zhuǎn)義字符
- 遇到上面定義的轉(zhuǎn)義字符會(huì)轉(zhuǎn)義(%和_見(jiàn)下面說(shuō)明),如果沒(méi)有匹配的轉(zhuǎn)義字符會(huì)忽略掉轉(zhuǎn)義符\。
- 對(duì)于 % 和 ,因?yàn)樵?like 里這兩個(gè)字符是通配符,所以在模式匹配 like 里用
\%%和\_表示字符里本身的 % 和 ,如果在 like 模式匹配上下文之外使用\%或\_,則它們的計(jì)算結(jié)果為字符串\%和\_,而不是 % 和 _。
- 標(biāo)識(shí)符里有轉(zhuǎn)義字符(數(shù)據(jù)庫(kù)名、表名、列名)
診斷及其他
網(wǎng)絡(luò)連接診斷
當(dāng)出現(xiàn)客戶端應(yīng)用無(wú)法訪問(wèn)服務(wù)端時(shí),需要確認(rèn)客戶端與服務(wù)端之間網(wǎng)絡(luò)的各端口連通情況,以便有針對(duì)性地排除故障。
目前網(wǎng)絡(luò)連接診斷支持在:Linux 與 Linux,Linux 與 Windows 之間進(jìn)行診斷測(cè)試。
診斷步驟:
- 如擬診斷的端口范圍與服務(wù)器 taosd 實(shí)例的端口范圍相同,須先停掉 taosd 實(shí)例
- 服務(wù)端命令行輸入:
taos -n server -P <port>以服務(wù)端身份啟動(dòng)對(duì)端口 port 為基準(zhǔn)端口的監(jiān)聽(tīng) - 客戶端命令行輸入:
taos -n client -h <fqdn of server> -P <port>以客戶端身份啟動(dòng)對(duì)指定的服務(wù)器、指定的端口發(fā)送測(cè)試包
服務(wù)端運(yùn)行正常的話會(huì)輸出以下信息:
# taos -n server -P 6000
12/21 14:50:13.522509 0x7f536f455200 UTL work as server, host:172.27.0.7 startPort:6000 endPort:6011 pkgLen:1000
12/21 14:50:13.522659 0x7f5352242700 UTL TCP server at port:6000 is listening
12/21 14:50:13.522727 0x7f5351240700 UTL TCP server at port:6001 is listening
...
...
...
12/21 14:50:13.523954 0x7f5342fed700 UTL TCP server at port:6011 is listening
12/21 14:50:13.523989 0x7f53437ee700 UTL UDP server at port:6010 is listening
12/21 14:50:13.524019 0x7f53427ec700 UTL UDP server at port:6011 is listening
12/21 14:50:22.192849 0x7f5352242700 UTL TCP: read:1000 bytes from 172.27.0.8 at 6000
12/21 14:50:22.192993 0x7f5352242700 UTL TCP: write:1000 bytes to 172.27.0.8 at 6000
12/21 14:50:22.237082 0x7f5351a41700 UTL UDP: recv:1000 bytes from 172.27.0.8 at 6000
12/21 14:50:22.237203 0x7f5351a41700 UTL UDP: send:1000 bytes to 172.27.0.8 at 6000
12/21 14:50:22.237450 0x7f5351240700 UTL TCP: read:1000 bytes from 172.27.0.8 at 6001
12/21 14:50:22.237576 0x7f5351240700 UTL TCP: write:1000 bytes to 172.27.0.8 at 6001
12/21 14:50:22.281038 0x7f5350a3f700 UTL UDP: recv:1000 bytes from 172.27.0.8 at 6001
12/21 14:50:22.281141 0x7f5350a3f700 UTL UDP: send:1000 bytes to 172.27.0.8 at 6001
...
...
...
12/21 14:50:22.677443 0x7f5342fed700 UTL TCP: read:1000 bytes from 172.27.0.8 at 6011
12/21 14:50:22.677576 0x7f5342fed700 UTL TCP: write:1000 bytes to 172.27.0.8 at 6011
12/21 14:50:22.721144 0x7f53427ec700 UTL UDP: recv:1000 bytes from 172.27.0.8 at 6011
12/21 14:50:22.721261 0x7f53427ec700 UTL UDP: send:1000 bytes to 172.27.0.8 at 6011
客戶端運(yùn)行正常會(huì)輸出以下信息:
# taos -n client -h 172.27.0.7 -P 6000
12/21 14:50:22.192434 0x7fc95d859200 UTL work as client, host:172.27.0.7 startPort:6000 endPort:6011 pkgLen:1000
12/21 14:50:22.192472 0x7fc95d859200 UTL server ip:172.27.0.7 is resolved from host:172.27.0.7
12/21 14:50:22.236869 0x7fc95d859200 UTL successed to test TCP port:6000
12/21 14:50:22.237215 0x7fc95d859200 UTL successed to test UDP port:6000
...
...
...
12/21 14:50:22.676891 0x7fc95d859200 UTL successed to test TCP port:6010
12/21 14:50:22.677240 0x7fc95d859200 UTL successed to test UDP port:6010
12/21 14:50:22.720893 0x7fc95d859200 UTL successed to test TCP port:6011
12/21 14:50:22.721274 0x7fc95d859200 UTL successed to test UDP port:6011
仔細(xì)閱讀打印出來(lái)的錯(cuò)誤信息,可以幫助管理員找到原因,以解決問(wèn)題。
啟動(dòng)狀態(tài)及RPC診斷
taos -n startup -h <fqdn of server>
判斷 taosd 服務(wù)端是否成功啟動(dòng),是數(shù)據(jù)庫(kù)管理員經(jīng)常遇到的一種情形。特別當(dāng)若干臺(tái)服務(wù)器組成集群時(shí),判斷每個(gè)服務(wù)端實(shí)例是否成功啟動(dòng)就會(huì)是一個(gè)重要問(wèn)題。除檢索 taosd 服務(wù)端日志文件進(jìn)行問(wèn)題定位、分析外,還可以通過(guò) taos -n startup -h <fqdn of server> 來(lái)診斷一個(gè) taosd 進(jìn)程的啟動(dòng)狀態(tài)。
針對(duì)多臺(tái)服務(wù)器組成的集群,當(dāng)服務(wù)啟動(dòng)過(guò)程耗時(shí)較長(zhǎng)時(shí),可通過(guò)該命令行來(lái)診斷每臺(tái)服務(wù)器的 taosd 實(shí)例的啟動(dòng)狀態(tài),以準(zhǔn)確定位問(wèn)題。
taos -n rpc -h <fqdn of server>
該命令用來(lái)診斷已經(jīng)啟動(dòng)的 taosd 實(shí)例的端口是否可正常訪問(wèn)。如果 taosd 程序異?;蛘呤ロ憫?yīng),可以通過(guò) taos -n rpc -h <fqdn of server> 來(lái)發(fā)起一個(gè)與指定 fqdn 的 rpc 通信,看看 taosd 是否能收到,以此來(lái)判定是網(wǎng)絡(luò)問(wèn)題還是 taosd 程序異常問(wèn)題。
sync 及 arbitrator 診斷
taos -n sync -P 6040 -h <fqdn of server>
taos -n sync -P 6042 -h <fqdn of server>
用來(lái)診斷 sync 端口是否工作正常,判斷服務(wù)端 sync 模塊是否成功工作。另外,-P 6042 用來(lái)診斷 arbitrator 是否配置正常,判斷指定服務(wù)器的 arbitrator 是否能正常工作。
網(wǎng)絡(luò)速度診斷
taos -n speed -h <fqdn of server> -P 6030 -N 10 -l 10000000 -S TCP
從 2.2.0.0 版本開始,taos 工具新提供了一個(gè)網(wǎng)絡(luò)速度診斷的模式,可以對(duì)一個(gè)正在運(yùn)行中的 taosd 實(shí)例或者 taos -n server 方式模擬的一個(gè)服務(wù)端實(shí)例,以非壓縮傳輸?shù)姆绞竭M(jìn)行網(wǎng)絡(luò)測(cè)速。這個(gè)模式下可供調(diào)整的參數(shù)如下:
-n:設(shè)為“speed”時(shí),表示對(duì)網(wǎng)絡(luò)速度進(jìn)行診斷。 -h:所要連接的服務(wù)端的 FQDN 或 ip 地址。如果不設(shè)置這一項(xiàng),會(huì)使用本機(jī) taos.cfg 文件中 FQDN 參數(shù)的設(shè)置作為默認(rèn)值。 -P:所連接服務(wù)端的網(wǎng)絡(luò)端口。默認(rèn)值為 6030。 -N:診斷過(guò)程中使用的網(wǎng)絡(luò)包總數(shù)。最小值是 1、最大值是 10000,默認(rèn)值為 100。 -l:?jiǎn)蝹€(gè)網(wǎng)絡(luò)包的大?。▎挝唬鹤止?jié))。最小值是 1024、最大值是 1024 1024 1024,默認(rèn)值為 1000。 -S:網(wǎng)絡(luò)封包的類型??梢允?TCP 或 UDP,默認(rèn)值為 TCP。
FQDN 解析速度診斷
taos -n fqdn -h <fqdn of server>
從 2.2.0.0 版本開始,taos 工具新提供了一個(gè) FQDN 解析速度的診斷模式,可以對(duì)一個(gè)目標(biāo) FQDN 地址嘗試解析,并記錄解析過(guò)程中所消耗的時(shí)間。這個(gè)模式下可供調(diào)整的參數(shù)如下:
-n:設(shè)為“fqdn”時(shí),表示對(duì) FQDN 解析進(jìn)行診斷。 -h:所要解析的目標(biāo) FQDN 地址。如果不設(shè)置這一項(xiàng),會(huì)使用本機(jī) taos.cfg 文件中 FQDN 參數(shù)的設(shè)置作為默認(rèn)值。
服務(wù)端日志
taosd 服務(wù)端日志文件標(biāo)志位 debugflag 默認(rèn)為 131,在 debug 時(shí)往往需要將其提升到 135 或 143 。
一旦設(shè)定為 135 或 143,日志文件增長(zhǎng)很快,特別是寫入、查詢請(qǐng)求量較大時(shí),增長(zhǎng)速度驚人。如合并保存日志,很容易把日志內(nèi)的關(guān)鍵信息(如配置信息、錯(cuò)誤信息等)沖掉。為此,服務(wù)端將重要信息日志與其他日志分開存放:
- taosinfo 存放重要信息日志, 包括:INFO/ERROR/WARNING 級(jí)別的日志信息。不記錄DEBUG、TRACE級(jí)別的日志。
- taosdlog 服務(wù)器端生成的日志,記錄taosinfo中全部信息外,還根據(jù)設(shè)置的日志輸出級(jí)別,記錄DEBUG(日志級(jí)別135)、TRACE(日志級(jí)別是 143)。
客戶端日志
每個(gè)獨(dú)立運(yùn)行的客戶端(一個(gè)進(jìn)程)生成一個(gè)獨(dú)立的客戶端日志,其命名方式采用 taoslog+<序號(hào)> 的方式命名。文件標(biāo)志位 debugflag 默認(rèn)為 131,在 debug 時(shí)往往需要將其提升到 135 或 143 。
- taoslog 客戶端(driver)生成的日志,默認(rèn)記錄客戶端INFO/ERROR/WARNING 級(jí)別日志,還根據(jù)設(shè)置的日志輸出級(jí)別,記錄DEBUG(日志級(jí)別135)、TRACE(日志級(jí)別是 143)。
其中,日志文件最大長(zhǎng)度由 numOfLogLines 來(lái)進(jìn)行配置,一個(gè) taosd 實(shí)例最多保留兩個(gè)文件。
taosd 服務(wù)端日志采用異步落盤寫入機(jī)制,優(yōu)點(diǎn)是可以避免硬盤寫入壓力太大,對(duì)性能造成很大影響。缺點(diǎn)是,在極端情況下,存在少量日志行數(shù)丟失的可能。
支持和反饋
感謝您成為我們社區(qū)的一員!歡迎您對(duì)本文檔或其他任何 TDengine 錯(cuò)誤進(jìn)行修改或報(bào)告。

