六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

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)存

其中:

  1. “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ù))。
  2. “mnode 內(nèi)存”指的是集群中管理節(jié)點(diǎn)所占用的資源。如果一個(gè) taosd 節(jié)點(diǎn)上分布有 mnode 管理節(jié)點(diǎn),則內(nèi)存消耗還需要增加“0.2KB * 集群中數(shù)據(jù)表總數(shù)”。
  3. “查詢內(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)用才能生效。

  1. firstEP

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 taosd 啟動(dòng)時(shí),主動(dòng)連接的集群中首個(gè) dnode 的 end point
    缺省值 localhost:6030
  2. secondEP

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 服務(wù)端和客戶端均適用
    含義 taosd 啟動(dòng)時(shí),如果 firstEp 連接不上,嘗試連接集群中第二個(gè) dnode 的 end point
    缺省值 無(wú)
  3. 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)。
  4. 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 接口)。
  5. logDir

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 日志文件目錄,客戶端和服務(wù)器的運(yùn)行日志將寫入該目錄
    缺省值 /var/log/taos
  6. scriptDir

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 僅服務(wù)端適用
    含義
    缺省值
  7. dataDir

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 數(shù)據(jù)文件目錄,所有的數(shù)據(jù)文件都將寫入該目錄
    缺省值 /var/lib/taos
  8. arbitrator

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 系統(tǒng)中裁決器的 end point
    缺省值
  9. numOfThreadsPerCore

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 每個(gè) CPU 核生成的隊(duì)列消費(fèi)者線程數(shù)量
    缺省值 1.0
  10. 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ù)一半的查詢線程。
  11. numOfMnodes

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 系統(tǒng)中管理節(jié)點(diǎn)個(gè)數(shù)
    缺省值 3
  12. vnodeBak

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 刪除 vnode 時(shí)是否備份 vnode 目錄
    取值范圍 0:否,1:是
    缺省值 1
  13. telemetryRePorting

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 是否允許 TDengine 采集和上報(bào)基本使用信息
    取值范圍 0:不允許
    1:允許
    缺省值 1
  14. balance

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 是否啟動(dòng)負(fù)載均衡
    取值范圍 0,1
    缺省值 1
  15. balanceInterval

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 僅服務(wù)端適用
    含義 管理節(jié)點(diǎn)在正常運(yùn)行狀態(tài)下,檢查負(fù)載均衡的時(shí)間間隔
    單位
    取值范圍 1-30000
    缺省值 300
  16. role

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 dnode 的可選角色
    取值范圍 0:any(既可作為 mnode,也可分配 vnode)
    1:mgmt(只能作為 mnode,不能分配 vnode)
    2:dnode(不能作為 mnode,只能分配 vnode)
    缺省值 0
  17. maxTmerCtrl

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 定時(shí)器個(gè)數(shù)
    單位 個(gè)
    取值范圍 8-2048
    缺省值 512
  18. monitorInterval

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 監(jiān)控?cái)?shù)據(jù)庫(kù)記錄系統(tǒng)參數(shù)(CPU/內(nèi)存)的時(shí)間間隔
    單位
    取值范圍 1-600
    缺省值 30
  19. offlineThreshold

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 dnode 離線閾值,超過(guò)該時(shí)間將導(dǎo)致 dnode 離線
    單位
    取值范圍 5-7200000
    缺省值 86400*10(10 天)
  20. rpcTimer

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 rpc 重試時(shí)長(zhǎng)
    單位 毫秒
    取值范圍 100-3000
    缺省值 300
  21. rpcMaxTime

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 rpc 等待應(yīng)答最大時(shí)長(zhǎng)
    單位
    取值范圍 100-7200
    缺省值 600
  22. statusInterval

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 dnode 向 mnode 報(bào)告狀態(tài)間隔
    單位
    取值范圍 1-10
    缺省值 1
  23. shellActivityTimer

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 shell 客戶端向 mnode 發(fā)送心跳間隔
    單位
    取值范圍 1-120
    缺省值 3
  24. tableMetaKeepTimer

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 表的元數(shù)據(jù) cache 時(shí)長(zhǎng)
    單位
    取值范圍 1-8640000
    缺省值 7200
  25. minSlidingTime

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 最小滑動(dòng)窗口時(shí)長(zhǎng)
    單位 毫秒
    取值范圍 10-1000000
    缺省值 10
    補(bǔ)充說(shuō)明 支持 us 補(bǔ)值后,這個(gè)值就是 1us 了。
  26. minIntervalTime

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 時(shí)間窗口最小值
    單位 毫秒
    取值范圍 1-1000000
    缺省值 10
  27. stream

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 是否啟用連續(xù)查詢(流計(jì)算功能)
    取值范圍 0:不允許
    1:允許
    缺省值 1
  28. 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ī)值。
  29. maxFirstStreamCompDelay

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 第一次連續(xù)查詢啟動(dòng)最大延遲
    單位 毫秒
    取值范圍 10-1000000000
    缺省值 10000
  30. retryStreamCompDelay

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 連續(xù)查詢重試等待間隔
    單位 毫秒
    取值范圍 10-1000000000
    缺省值 10
  31. streamCompDelayRatio

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 連續(xù)查詢的延遲時(shí)間計(jì)算系數(shù)
    取值范圍 0.1-0.9
    缺省值 0.1
  32. maxVgroupsPerDb

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 每個(gè) DB 中 能夠使用的最大 vnode 個(gè)數(shù)
    取值范圍 0-8192
    缺省值
  33. maxTablesPerVnode

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 每個(gè) vnode 中能夠創(chuàng)建的最大表個(gè)數(shù)
    缺省值 1000000
  34. minTablesPerVnode

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 僅服務(wù)端適用
    含義 每個(gè) vnode 中必須創(chuàng)建的最小表個(gè)數(shù)
    缺省值 1000
  35. tableIncStepPerVnode

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 僅服務(wù)端適用
    含義 每個(gè) vnode 中超過(guò)最小表數(shù)后遞增步長(zhǎng)
    缺省值 1000
  36. cache

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 內(nèi)存塊的大小
    單位 MB
    缺省值 16
  37. blocks

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 每個(gè) vnode(tsdb)中有多少 cache 大小的內(nèi)存塊。因此一個(gè) vnode 的用的內(nèi)存大小粗略為(cache * blocks)
    缺省值 6
  38. days

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 數(shù)據(jù)文件存儲(chǔ)數(shù)據(jù)的時(shí)間跨度
    單位
    缺省值 10
  39. keep

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 數(shù)據(jù)保留的天數(shù)
    單位
    缺省值 3650
  40. minRows

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 文件塊中記錄的最小條數(shù)
    缺省值 100
  41. maxRows

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 文件塊中記錄的最大條數(shù)
    缺省值 4096
  42. quorum

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 多副本環(huán)境下指令執(zhí)行的確認(rèn)數(shù)要求
    取值范圍 1,2
    缺省值 1
  43. comp

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 文件壓縮標(biāo)志位
    取值范圍 0:關(guān)閉,1:一階段壓縮,2:兩階段壓縮
    缺省值 2
  44. walLevel

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 WAL 級(jí)別
    取值范圍 1:寫 wal, 但不執(zhí)行 fsync
    2:寫 wal, 而且執(zhí)行 fsync
    缺省值 1
  45. fsync

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 當(dāng) wal 設(shè)置為 2 時(shí),執(zhí)行 fsync 的周期
    單位 毫秒
    取值范圍 最小為 0,表示每次寫入,立即執(zhí)行 fsync
    最大為 180000(三分鐘)
    缺省值 3000
  46. replica

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 副本個(gè)數(shù)
    取值范圍 1-3
    缺省值 1
  47. 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
  48. maxSQLLength

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 單條 SQL 語(yǔ)句允許的最長(zhǎng)限制
    單位 bytes
    取值范圍 65480-1048576
    缺省值 1048576
  49. maxNumOfOrderedRes

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 支持超級(jí)表時(shí)間排序允許的最多記錄數(shù)限制
    缺省值 10 萬(wàn)
  50. timezone

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 時(shí)區(qū)
    缺省值 從系統(tǒng)中動(dòng)態(tài)獲取當(dāng)前的時(shí)區(qū)設(shè)置
  51. locale

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 系統(tǒng)區(qū)位信息及編碼格式
    缺省值 系統(tǒng)中動(dòng)態(tài)獲取,如果自動(dòng)獲取失敗,需要用戶在配置文件設(shè)置或通過(guò) API 設(shè)置
  52. charset

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 字符集編碼
    缺省值 系統(tǒng)中動(dòng)態(tài)獲取,如果自動(dòng)獲取失敗,需要用戶在配置文件設(shè)置或通過(guò) API 設(shè)置
  53. maxShellConns

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 一個(gè) dnode 容許的連接數(shù)
    取值范圍 10-50000000
    缺省值 5000
  54. 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
  55. minimalLogDirGB

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 當(dāng)日志文件夾的磁盤大小小于該值時(shí),停止寫日志
    單位 GB
    缺省值 1.0
  56. minimalTmpDirGB

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 當(dāng)日志文件夾的磁盤大小小于該值時(shí),停止寫臨時(shí)文件
    單位 GB
    缺省值 1.0
  57. minimalDataDirGB

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 當(dāng)日志文件夾的磁盤大小小于該值時(shí),停止寫時(shí)序數(shù)據(jù)
    單位 GB
    缺省值 2.0
  58. mnodeEqualVnodeNum

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 一個(gè) mnode 等同于 vnode 消耗的個(gè)數(shù)
    缺省值 4
  59. http

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 服務(wù)器內(nèi)部的 http 服務(wù)開關(guān)。
    取值范圍 0:關(guān)閉 http 服務(wù), 1:激活 http 服務(wù)。
    缺省值 1
  60. 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
  61. 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ù)端日志所在目錄相同。
  62. httpMaxThreads

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 RESTFul 接口的線程數(shù)。taosAdapter 配置或有不同,請(qǐng)參考相應(yīng)文檔。
    缺省值 2
  63. telegrafUseFieldNum

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍
    含義
    缺省值
  64. restfulRowLimit

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 RESTFul 接口單次返回的記錄條數(shù)。taosAdapter 配置或有不同,請(qǐng)參考相應(yīng)文檔。
    缺省值 10240
    補(bǔ)充說(shuō)明 最大 10,000,000
  65. numOfLogLines

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 單個(gè)日志文件允許的最大行數(shù)。
    缺省值 10,000,000
  66. asyncLog

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 日志寫入模式
    取值范圍 0:同步、1:異步
    缺省值 1
  67. logKeepDays

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 日志文件的最長(zhǎng)保存時(shí)間
    單位
    缺省值 0
    補(bǔ)充說(shuō)明 大于 0 時(shí),日志文件會(huì)被重命名為 taosdlog.xxx,其中 xxx 為日志文件最后修改的時(shí)間戳。
  68. debugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 運(yùn)行日志開關(guān)
    取值范圍 131(輸出錯(cuò)誤和警告日志),135(輸出錯(cuò)誤、警告和調(diào)試日志),143(輸出錯(cuò)誤、警告、調(diào)試和跟蹤日志)
    缺省值 131 或 135(不同模塊有不同的默認(rèn)值)
  69. mDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 管理模塊的日志開關(guān)
    取值范圍 同上
    缺省值 135
  70. dDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 dnode 模塊的日志開關(guān)
    取值范圍 同上
    缺省值 135
  71. sDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 sync 模塊的日志開關(guān)
    取值范圍 同上
    缺省值 135
  72. wDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 wal 模塊的日志開關(guān)
    取值范圍 同上
    缺省值 135
  73. sdbDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 sdb 模塊的日志開關(guān)
    取值范圍 同上
    缺省值 135
  74. rpcDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 rpc 模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  75. tmrDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 定時(shí)器模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  76. cDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 client 模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  77. jniDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 jni 模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  78. odbcDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 odbc 模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  79. uDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 共用功能模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  80. httpDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 http 模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  81. monitorDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 監(jiān)控模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  82. qDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 查詢模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  83. vDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 vnode 模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  84. tsdbDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 TSDB 模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  85. cqDebugFlag

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 連續(xù)查詢模塊的日志開關(guān)
    取值范圍 同上
    缺省值
  86. tscEnableRecordSql

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 是否記錄客戶端 sql 語(yǔ)句到文件
    取值范圍 0:否,1:是
    缺省值 0
    補(bǔ)充說(shuō)明 生成的文件(tscnote-xxxx.0/tscnote-xxx.1,xxxx 是 pid),與客戶端日志所在目錄相同。
  87. 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í)行目錄下。
  88. gitinfo

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 服務(wù)端和客戶端均適用
    含義
    取值范圍 1
    缺省值
  89. gitinfoofInternal

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 服務(wù)端和客戶端均適用
    含義
    取值范圍 2
    缺省值
  90. Buildinfo

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 服務(wù)端和客戶端均適用
    含義
    取值范圍 3
    缺省值
  91. version

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 服務(wù)端和客戶端均適用
    含義
    取值范圍 4
    缺省值
  92. 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)
  93. 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é))
  94. 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ù)一半的查詢線程。
  95. 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ù)。
  96. 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ù)。
  97. numOfCommitThreads

    屬性 說(shuō)明
    內(nèi)部配置 Yes
    適用范圍 僅服務(wù)端適用
    含義 設(shè)置寫入線程的最大數(shù)量
    缺省值
  98. maxWildCardsLength

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 設(shè)定 LIKE 算子的通配符字符串允許的最大長(zhǎng)度
    單位 bytes
    取值范圍 0-16384
    缺省值 100
    補(bǔ)充說(shuō)明 2.1.6.1 版本新增。
  99. 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 版本新增。
  100. tsdbMetaCompactRatio

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 tsdb meta 文件中冗余數(shù)據(jù)超過(guò)多少閾值,開啟 meta 文件的壓縮功能
    取值范圍 0:不開啟,[1-100]:冗余數(shù)據(jù)比例
    缺省值 0
  101. rpcForceTcp

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 強(qiáng)制使用 TCP 傳輸
    取值范圍 0: 不開啟 1: 開啟
    缺省值 0
    補(bǔ)充說(shuō)明 在網(wǎng)絡(luò)比較差的環(huán)境中,建議開啟。
    2.0 版本新增。
  102. maxNumOfDistinctRes

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 允許返回的 distinct 結(jié)果最大行數(shù)
    取值范圍 默認(rèn)值為 10 萬(wàn),最大值 1 億
    缺省值 10 萬(wàn)
    補(bǔ)充說(shuō)明 2.3 版本新增。
  103. clientMerge

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 是否允許客戶端對(duì)寫入數(shù)據(jù)去重
    取值范圍 0:不開啟,1:開啟
    缺省值 0
    補(bǔ)充說(shuō)明 2.3 版本新增。
  104. httpDBNameMandatory

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 是否在 URL 中輸入 數(shù)據(jù)庫(kù)名稱
    取值范圍 0:不開啟,1:開啟
    缺省值 0
    補(bǔ)充說(shuō)明 2.3 版本新增。
  105. maxRegexStringLen

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 正則表達(dá)式最大允許長(zhǎng)度
    取值范圍 默認(rèn)值 128,最大長(zhǎng)度 16384
    缺省值 128
    補(bǔ)充說(shuō)明 2.3 版本新增。
  106. 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版本新增。
  107. 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版本新增。
  108. 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版本新增。
  109. maxRange

    屬性 說(shuō)明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 要壓縮數(shù)據(jù)可能的最大波動(dòng)范圍
    取值范圍 無(wú)限制
    缺省值 自動(dòng)預(yù)測(cè)
    補(bǔ)充說(shuō)明 2.4.0.10版本新增。
  110. 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 REPLICA n
quorum YES 1-2 ALTER DATABASE QUORUM n
days
keep YES days-365000 ALTER DATABASE KEEP n
cache
blocks YES 3-1000 ALTER DATABASE BLOCKS n
minrows
maxrows
wal
fsync
comp YES 0-2 ALTER DATABASE COMP n
precision
status
update
cachelast YES 0 | 1 | 2 | 3 ALTER DATABASE CACHELAST n

說(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-8

    charset 的有效值是 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)備:

  1. TDengine Server 信息:

    • TDengine RESTful 服務(wù):對(duì)本地而言,可以是 http://localhost:6041,使用參數(shù) -a。
    • TDengine 用戶名和密碼,使用 -u -p 參數(shù)設(shè)置。
  2. 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ù):

      1. 阿里云短信服務(wù)Key ID,參數(shù) -I
      2. 阿里云短信服務(wù)Key Secret,參數(shù) K
      3. 阿里云短信服務(wù)簽名,參數(shù) -S
      4. 短信通知模板號(hào),參數(shù) -C
      5. 短信通知模板輸入?yún)?shù),JSON格式,參數(shù) -T,如 {"alarm_level":"%s","time":"%s","name":"%s","content":"%s"}
      6. 逗號(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"}'

運(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ī)則

  1. 合法字符:英文字符、數(shù)字和下劃線
  2. 允許英文字符或下劃線開頭,不允許以數(shù)字開頭
  3. 不區(qū)分大小寫
  4. 轉(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ī)則

    1. 標(biāo)識(shí)符里有轉(zhuǎn)義字符(數(shù)據(jù)庫(kù)名、表名、列名)
      1. 普通標(biāo)識(shí)符: 直接提示錯(cuò)誤的標(biāo)識(shí)符,因?yàn)闃?biāo)識(shí)符規(guī)定必須是數(shù)字、字母和下劃線,并且不能以數(shù)字開頭。
      2. 反引號(hào) `` 標(biāo)識(shí)符: 保持原樣,不轉(zhuǎn)義
    2. 數(shù)據(jù)里有轉(zhuǎn)義字符
      1. 遇到上面定義的轉(zhuǎn)義字符會(huì)轉(zhuǎn)義(%和_見(jiàn)下面說(shuō)明),如果沒(méi)有匹配的轉(zhuǎn)義字符會(huì)忽略掉轉(zhuǎn)義符\。
      2. 對(duì)于 % 和 ,因?yàn)樵?like 里這兩個(gè)字符是通配符,所以在模式匹配 like 里用\%%和\_表示字符里本身的 % 和 ,如果在 like 模式匹配上下文之外使用 \%\_,則它們的計(jì)算結(jié)果為字符串 \%\_,而不是 % 和 _。

診斷及其他

網(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è)試。

診斷步驟:

  1. 如擬診斷的端口范圍與服務(wù)器 taosd 實(shí)例的端口范圍相同,須先停掉 taosd 實(shí)例
  2. 服務(wù)端命令行輸入:taos -n server -P <port> 以服務(wù)端身份啟動(dòng)對(duì)端口 port 為基準(zhǔn)端口的監(jiān)聽(tīng)
  3. 客戶端命令行輸入: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ù)丟失的可能。