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

TDengine的運營與維護

容量規(guī)劃

使用 TDengine 來搭建一個物聯(lián)網(wǎng)大數(shù)據(jù)平臺,計算資源、存儲資源需要根據(jù)業(yè)務(wù)場景進行規(guī)劃。下面分別討論系統(tǒng)運行所需要的內(nèi)存、CPU 以及硬盤空間。

內(nèi)存需求

每個 Database 可以創(chuàng)建固定數(shù)目的 vgroup,默認與 CPU 核數(shù)相同,可通過 maxVgroupsPerDb 配置;vgroup 中的每個副本會是一個 vnode;每個 vnode 會占用固定大小的內(nèi)存(大小與數(shù)據(jù)庫的配置參數(shù) blocks 和 cache 有關(guān));每個 Table 會占用與標簽總長度有關(guān)的內(nèi)存;此外,系統(tǒng)會有一些固定的內(nèi)存開銷。因此,每個 DB 需要的系統(tǒng)內(nèi)存可通過如下公式計算:

Database Memory Size = maxVgroupsPerDb * (blocks * cache + 10MB) + numOfTables * (tagSizePerTable + 0.5KB)

示例:假設(shè)是 4 核機器,cache 是缺省大小 16M, blocks 是缺省值 6,并且一個 DB 中有 10 萬張表,標簽總長度是 256 字節(jié),則這個 DB 總的內(nèi)存需求為:4 * (16 * 6 + 10) + 100000 * (0.25 + 0.5) / 1000 = 499M。

在實際的系統(tǒng)運維中,我們通常會更關(guān)心 TDengine 服務(wù)進程(taosd)會占用的內(nèi)存量。

taosd 內(nèi)存總量 = vnode 內(nèi)存 + mnode 內(nèi)存 + 查詢內(nèi)存

其中:

  1. “vnode 內(nèi)存”指的是集群中所有的 Database 存儲分攤到當前 taosd 節(jié)點上所占用的內(nèi)存資源。可以按上文“Database Memory Size”計算公式估算每個 DB 的內(nèi)存占用量進行加總,再按集群中總共的 TDengine 節(jié)點數(shù)做平均(如果設(shè)置為多副本,則還需要乘以對應(yīng)的副本倍數(shù))。
  2. “mnode 內(nèi)存”指的是集群中管理節(jié)點所占用的資源。如果一個 taosd 節(jié)點上分布有 mnode 管理節(jié)點,則內(nèi)存消耗還需要增加“0.2KB * 集群中數(shù)據(jù)表總數(shù)”。
  3. “查詢內(nèi)存”指的是服務(wù)端處理查詢請求時所需要占用的內(nèi)存。單條查詢語句至少會占用“0.2KB * 查詢涉及的數(shù)據(jù)表總數(shù)”的內(nèi)存量。

注意:以上內(nèi)存估算方法,主要講解了系統(tǒng)的“必須內(nèi)存需求”,而不是“內(nèi)存總數(shù)上限”。在實際運行的生產(chǎn)環(huán)境中,由于操作系統(tǒng)緩存、資源管理調(diào)度等方面的原因,內(nèi)存規(guī)劃應(yīng)當在估算結(jié)果的基礎(chǔ)上保留一定冗余,以維持系統(tǒng)狀態(tài)和系統(tǒng)性能的穩(wěn)定性。并且,生產(chǎn)環(huán)境通常會配置系統(tǒng)資源的監(jiān)控工具,以便及時發(fā)現(xiàn)硬件資源的緊缺情況。

最后,如果內(nèi)存充裕,可以考慮加大 Blocks 的配置,這樣更多數(shù)據(jù)將保存在內(nèi)存里,提高查詢速度。

客戶端內(nèi)存需求

客戶端應(yīng)用采用 taosc 客戶端驅(qū)動連接服務(wù)端,會有內(nèi)存需求的開銷。

客戶端的內(nèi)存開銷主要由寫入過程中的 SQL 語句、表的元數(shù)據(jù)信息緩存、以及結(jié)構(gòu)性開銷構(gòu)成。系統(tǒng)最大容納的表數(shù)量為 N(每個通過超級表創(chuàng)建的表的 meta data 開銷約 256 字節(jié)),最大并行寫入線程數(shù)量 T,最大 SQL 語句長度 S(通常是 1 Mbytes)。由此可以進行客戶端內(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 單核每秒能至少處理一萬個插入請求。每個插入請求可以帶多條記錄,一次插入一條記錄與插入 10 條記錄,消耗的計算資源差別很小。因此每次插入,條數(shù)越大,插入效率越高。如果一個插入請求帶 200 條以上記錄,單核就能達到每秒插入 100 萬條記錄的速度。但對前端數(shù)據(jù)采集的要求越高,因為需要緩存記錄,然后一批插入。
  • 查詢需求 TDengine 提供高效的查詢,但是每個場景的查詢差異很大,查詢頻次變化也很大,難以給出客觀數(shù)字。需要用戶針對自己的場景,寫一些查詢語句,才能確定。

因此僅對數(shù)據(jù)插入而言,CPU 是可以估算出來的,但查詢所耗的計算資源無法估算。在實際運營過程中,不建議 CPU 使用率超過 50%,超過后,需要增加新的節(jié)點,以獲得更多計算資源。

存儲需求

TDengine 相對于通用數(shù)據(jù)庫,有超高的壓縮比,在絕大多數(shù)場景下,TDengine 的壓縮比不會低于 5 倍,有的場合,壓縮比可達到 10 倍以上,取決于實際場景的數(shù)據(jù)特征。壓縮前的原始數(shù)據(jù)大小可通過如下方式計算:

Raw DataSize = numOfTables * rowSizePerTable * rowsPerTable

示例:1000 萬臺智能電表,每臺電表每 15 分鐘采集一次數(shù)據(jù),每次采集的數(shù)據(jù) 128 字節(jié),那么一年的原始數(shù)據(jù)量是:10000000 * 128 * 24 * 60 / 15 * 365 = 44.8512T。TDengine大概需要消耗 44.851 / 5 = 8.97024T 空間。

用戶可以通過參數(shù) keep,設(shè)置數(shù)據(jù)在磁盤中的最大保存時長。為進一步減少存儲成本,TDengine 還提供多級存儲,最冷的數(shù)據(jù)可以存放在最廉價的存儲介質(zhì)上,應(yīng)用的訪問不用做任何調(diào)整,只是讀取速度降低了。

為提高速度,可以配置多塊硬盤,這樣可以并發(fā)寫入或讀取數(shù)據(jù)。需要提醒的是,TDengine 采取多副本的方式提供數(shù)據(jù)的高可靠,因此不再需要采用昂貴的磁盤陣列。

物理機或虛擬機臺數(shù)

根據(jù)上面的內(nèi)存、CPU、存儲的預(yù)估,就可以知道整個系統(tǒng)需要多少核、多少內(nèi)存、多少存儲空間。如果數(shù)據(jù)副本數(shù)不為 1,總需求量需要再乘以副本數(shù)。

因為 TDengine 具有很好的水平擴展能力,根據(jù)總量,再根據(jù)單個物理機或虛擬機的資源,就可以輕松決定需要購置多少臺物理機或虛擬機了。

立即計算 CPU、內(nèi)存、存儲,請參見:資源估算方法。

容錯和災(zāi)備

容錯

TDengine 支持 WAL (Write Ahead Log)機制,實現(xiàn)數(shù)據(jù)的容錯能力,保證數(shù)據(jù)的高可用。

TDengine 接收到應(yīng)用的請求數(shù)據(jù)包時,先將請求的原始數(shù)據(jù)包寫入數(shù)據(jù)庫日志文件,等數(shù)據(jù)成功寫入數(shù)據(jù)庫數(shù)據(jù)文件后,再刪除相應(yīng)的 WAL 。這樣保證了 TDengine 能夠在斷電等因素導(dǎo)致的服務(wù)重啟時從數(shù)據(jù)庫日志文件中恢復(fù)數(shù)據(jù),避免數(shù)據(jù)的丟失。

涉及的系統(tǒng)配置參數(shù)有兩個:

  • walLevel:WAL 級別,0:不寫 WAL ; 1:寫 wal, 但不執(zhí)行 fsync; 2:寫 wal, 而且執(zhí)行 fsync。
  • fsync:當 walLevel 設(shè)置為 2 時,執(zhí)行 fsync 的周期。設(shè)置為 0,表示每次寫入,立即執(zhí)行 fsync。

如果要100%的保證數(shù)據(jù)不丟失,需要將 walLevel 設(shè)置為 2,fsync 設(shè)置為0。這時寫入速度將會下降。但如果應(yīng)用側(cè)啟動的寫數(shù)據(jù)的線程數(shù)達到一定的數(shù)量(超過 50),那么寫入數(shù)據(jù)的性能也會很不錯,只會比 fsync 設(shè)置為 3000 毫秒下降 30% 左右。

災(zāi)備

TDengine 的集群通過多個副本的機制,來提供系統(tǒng)的高可用性,實現(xiàn)災(zāi)備能力。

TDengine 集群是由 mnode 負責管理的,為保證 mnode 的高可靠,可以配置多個 mnode 副本,副本數(shù)由系統(tǒng)配置參數(shù) numOfMnodes 決定,為了支持高可靠,需要設(shè)置大于 1。為保證元數(shù)據(jù)的強一致性,mnode 副本之間通過同步方式進行數(shù)據(jù)復(fù)制,保證了元數(shù)據(jù)的強一致性。

TDengine 集群中的時序數(shù)據(jù)的副本數(shù)是與數(shù)據(jù)庫關(guān)聯(lián)的,一個集群里可以有多個數(shù)據(jù)庫,每個數(shù)據(jù)庫可以配置不同的副本數(shù)。創(chuàng)建數(shù)據(jù)庫時,通過參數(shù) replica 指定副本數(shù)。為了支持高可靠,需要設(shè)置副本數(shù)大于1。

TDengine 集群的節(jié)點數(shù)必須大于等于副本數(shù),否則創(chuàng)建表時將報錯。

當 TDengine 集群中的節(jié)點部署在不同的物理機上,并設(shè)置多個副本數(shù)時,就實現(xiàn)了系統(tǒng)的高可靠性,無需再使用其他軟件或工具。TDengine 企業(yè)版還可以將副本部署在不同機房,從而實現(xiàn)異地容災(zāi)。

服務(wù)端配置

TDengine 系統(tǒng)后臺服務(wù)由 taosd 提供,可以在配置文件 taos.cfg 里修改配置參數(shù),以滿足不同場景的需求。配置文件的缺省位置在 /etc/taos 目錄,可以通過 taosd 命令行執(zhí)行參數(shù)-c指定配置文件目錄。比如 taosd -c /home/user 來指定配置文件位于 /home/user 這個目錄。

另外可以使用 “-C” 顯示當前服務(wù)器配置參數(shù):

taosd -C

下面僅僅列出一些重要的配置參數(shù),更多的參數(shù)請看配置文件里的說明。各個參數(shù)的詳細介紹及作用請看前述章節(jié),而且這些參數(shù)的缺省配置都是可以工作的,一般無需設(shè)置。注意:配置文件參數(shù)修改后,需要重啟taosd服務(wù),或客戶端應(yīng)用才能生效。

  1. firstEP

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

    屬性 說明
    內(nèi)部配置 Yes
    適用范圍 服務(wù)端和客戶端均適用
    含義 taosd 啟動時,如果 firstEp 連接不上,嘗試連接集群中第二個 dnode 的 end point
    缺省值
  3. fqdn

    屬性 說明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 數(shù)據(jù)節(jié)點的 FQDN。如果習慣 IP 地址訪問,可設(shè)置為該節(jié)點的 IP 地址。
    缺省值 缺省為操作系統(tǒng)配置的第一個 hostname。
    補充說明 這個參數(shù)值的長度需要控制在 96 個字符以內(nèi)。
  4. serverPort

    屬性 說明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 taosd 啟動后,對外服務(wù)的端口號
    缺省值 6030
    補充說明 RESTful 服務(wù)使用的端口號是在此基礎(chǔ)上+11,即默認值為 6041(注意 2.4 及后續(xù)版本使用 taosAdapter 提供 RESTful 接口)。
  5. logDir

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 每個 CPU 核生成的隊列消費者線程數(shù)量
    缺省值 1.0
  10. ratioOfQueryThreads

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 設(shè)置查詢線程的最大數(shù)量
    取值范圍 0:表示只有 1 個查詢線程
    1:表示最大和 CPU 核數(shù)相等的查詢線程
    2:表示最大建立 2 倍 CPU 核數(shù)的查詢線程。
    缺省值 1
    補充說明 該值可以為小數(shù),即 0.5 表示最大建立 CPU 核數(shù)一半的查詢線程。
  11. numOfMnodes

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 是否啟用連續(xù)查詢(流計算功能)
    取值范圍 0:不允許
    1:允許
    缺省值 1
  28. maxStreamCompDelay

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 連續(xù)查詢啟動最大延遲
    單位 毫秒
    取值范圍 10-1000000000
    缺省值 20000
    補充說明 為避免多個 stream 同時執(zhí)行占用太多系統(tǒng)資源,程序中對 stream 的執(zhí)行時間人為增加了一些隨機的延時。
    maxFirstStreamCompDelay 是 stream 第一次執(zhí)行前最少要等待的時間。
    streamCompDelayRatio 是延遲時間的計算系數(shù),它乘以查詢的 interval 后為延遲時間基準。
    maxStreamCompDelay 是延遲時間基準的上限。
    實際延遲時間為一個不超過延遲時間基準的隨機值。
    stream 某次計算失敗后需要重試,retryStreamCompDelay 是重試的等待時間基準。
    實際重試等待時間為不超過等待時間基準的隨機值。
  29. maxFirstStreamCompDelay

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 副本個數(shù)
    取值范圍 1-3
    缺省值 1
  47. compressMsgSize

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 客戶端與服務(wù)器之間進行消息通訊過程中,對通訊的消息進行壓縮的閾值。如果要壓縮消息,建議設(shè)置為 64330 字節(jié),即大于 64330 字節(jié)的消息體才進行壓縮。
    單位 bytes
    取值范圍 0表示對所有的消息均進行壓縮 >0: 超過該值的消息才進行壓縮 -1: 不壓縮
    缺省值 -1
  48. maxSQLLength

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

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 一個 dnode 容許的連接數(shù)
    取值范圍 10-50000000
    缺省值 5000
  54. maxConnections

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 一個數(shù)據(jù)庫連接所容許的 dnode 連接數(shù)
    取值范圍 1-100000
    缺省值 5000
    補充說明 實際測試下來,如果默認沒有配,選 50 個 worker thread 會產(chǎn)生 Network unavailable
  55. minimalLogDirGB

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 服務(wù)器內(nèi)部的 http 服務(wù)開關(guān)。
    取值范圍 0:關(guān)閉 http 服務(wù), 1:激活 http 服務(wù)。
    缺省值 1
  60. monitor

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 服務(wù)器內(nèi)部的系統(tǒng)監(jiān)控開關(guān)。監(jiān)控主要負責收集物理節(jié)點的負載狀況,包括 CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)帶寬、HTTP 請求量的監(jiān)控記錄,記錄信息存儲在LOG庫中。
    取值范圍 0:關(guān)閉監(jiān)控服務(wù), 1:激活監(jiān)控服務(wù)。
    缺省值 0
  61. httpEnableRecordSql

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 內(nèi)部使用,記錄通過 RESTFul 接口,產(chǎn)生的 SQL 調(diào)用。taosAdapter 配置或有不同,請參考相應(yīng)文檔。
    缺省值 0
    補充說明 生成的文件(httpnote.0/httpnote.1),與服務(wù)端日志所在目錄相同。
  62. httpMaxThreads

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 是否記錄客戶端 sql 語句到文件
    取值范圍 0:否,1:是
    缺省值 0
    補充說明 生成的文件(tscnote-xxxx.0/tscnote-xxx.1,xxxx 是 pid),與客戶端日志所在目錄相同。
  87. enableCoreFile

    屬性 說明
    內(nèi)部配置 No
    適用范圍 服務(wù)端和客戶端均適用
    含義 是否開啟服務(wù) crash 時生成 core 文件
    取值范圍 0:否,1:是
    缺省值 1
    補充說明 不同的啟動方式,生成 core 文件的目錄如下:1、systemctl start taosd 啟動:生成的 core 在根目錄下
    2、手動啟動,就在 taosd 執(zhí)行目錄下。
  88. gitinfo

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 Taos shell 中 binary 和 nchar 字段的顯示寬度上限,超過此限制的部分將被隱藏
    取值范圍 5 -
    缺省值 30
    補充說明 實際上限按以下規(guī)則計算:如果字段值的長度大于 maxBinaryDisplayWidth,則顯示上限為 字段名長度maxBinaryDisplayWidth 的較大者。
    否則,上限為 字段名長度字段值長度 的較大者。
    可在 shell 中通過命令 set max_binary_display_width nn 動態(tài)修改此選項
  93. queryBufferSize

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 為所有并發(fā)查詢占用保留的內(nèi)存大小。
    單位 MB
    缺省值
    補充說明 計算規(guī)則可以根據(jù)實際應(yīng)用可能的最大并發(fā)數(shù)和表的數(shù)字相乘,再乘 170 。
    (2.0.15 以前的版本中,此參數(shù)的單位是字節(jié))
  94. ratioOfQueryCores

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 設(shè)置查詢線程的最大數(shù)量。
    缺省值
    補充說明 最小值 0 表示只有 1 個查詢線程
    最大值 2 表示最大建立 2 倍 CPU 核數(shù)的查詢線程。
    默認為 1,表示最大和 CPU 核數(shù)相等的查詢線程。
    該值可以為小數(shù),即 0.5 表示最大建立 CPU 核數(shù)一半的查詢線程。
  95. update

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 允許更新已存在的數(shù)據(jù)行
    取值范圍 0:不允許更新
    1:允許整行更新
    2:允許部分列更新。(2.1.7.0 版本開始此參數(shù)支持設(shè)為 2,在此之前取值只能是 [0, 1])
    缺省值 0
    補充說明 2.0.8.0 版本之前,不支持此參數(shù)。
  96. cacheLast

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 是否在內(nèi)存中緩存子表的最近數(shù)據(jù)
    取值范圍 0:關(guān)閉
    1:緩存子表最近一行數(shù)據(jù)
    2:緩存子表每一列的最近的非 NULL 值
    3:同時打開緩存最近行和列功能。(2.1.2.0 版本開始此參數(shù)支持 0 ~ 3 的取值范圍,在此之前取值只能是 [0, 1])
    缺省值 0
    補充說明 2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此參數(shù)。
  97. numOfCommitThreads

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 設(shè)定 LIKE 算子的通配符字符串允許的最大長度
    單位 bytes
    取值范圍 0-16384
    缺省值 100
    補充說明 2.1.6.1 版本新增。
  99. compressColData

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 客戶端與服務(wù)器之間進行消息通訊過程中,對服務(wù)器端查詢結(jié)果進行列壓縮的閾值。
    單位 bytes
    取值范圍 0: 對所有查詢結(jié)果均進行壓縮 >0: 查詢結(jié)果中任意列大小超過該值的消息才進行壓縮 -1: 不壓縮
    缺省值 -1
    補充說明 2.3.0.0 版本新增。
  100. tsdbMetaCompactRatio

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

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

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

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

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

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅客戶端適用
    含義 正則表達式最大允許長度
    取值范圍 默認值 128,最大長度 16384
    缺省值 128
    補充說明 2.3 版本新增。
  106. lossyColumns

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 配置要進行有損壓縮的浮點數(shù)據(jù)類型
    取值范圍 float:只對float類型進行有損壓縮
    double:只對double類型進行有損壓縮
    float|double:float double都進行有損壓縮
    缺省值 默認為空字符串,關(guān)閉有損壓縮
    補充說明 2.4.0.10版本新增。
  107. fPrecision

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 設(shè)置float類型浮點數(shù)壓縮精度
    取值范圍 0.1 ~ 0.00000001
    缺省值 0.00000001(1E-8)
    補充說明 2.4.0.10版本新增。
  108. dPrecision

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 設(shè)置double類型浮點數(shù)壓縮精度
    取值范圍 0.1 ~ 0.0000000000000001
    缺省值 0.0000000000000001(1E-16)
    補充說明 2.4.0.10版本新增。
  109. maxRange

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 要壓縮數(shù)據(jù)可能的最大波動范圍
    取值范圍 無限制
    缺省值 自動預(yù)測
    補充說明 2.4.0.10版本新增。
  110. Range

    屬性 說明
    內(nèi)部配置 No
    適用范圍 僅服務(wù)端適用
    含義 要壓縮數(shù)據(jù)可能的平均波動范圍
    取值范圍 無限制
    缺省值 自動預(yù)測
    補充說明 2.4.0.10版本新增。

注意: 對于端口,TDengine會使用從serverPort起13個連續(xù)的TCP和UDP端口號,請務(wù)必在防火墻打開。因此如果是缺省配置,需要打開從6030到6042共13個端口,而且必須TCP和UDP都打開。(詳細的端口情況請參見 TDengine 2.0 端口說明

不同應(yīng)用場景的數(shù)據(jù)往往具有不同的數(shù)據(jù)特征,比如保留天數(shù)、副本數(shù)、采集頻次、記錄大小、采集點的數(shù)量、壓縮等都可完全不同。為獲得在存儲上的最高效率,TDengine 提供如下存儲相關(guān)的系統(tǒng)配置參數(shù)(既可以作為 create database 指令的參數(shù),也可以寫在 taos.cfg 配置文件中用來設(shè)定創(chuàng)建新數(shù)據(jù)庫時所采用的默認值):

# 配置參數(shù)名稱 單位 含義 取值范圍 缺省值
1 days 一個數(shù)據(jù)文件存儲數(shù)據(jù)的時間跨度 10
2 keep (可通過 alter database 修改)數(shù)據(jù)庫中數(shù)據(jù)保留的天數(shù)。 3650
3 cache MB 內(nèi)存塊的大小 16
4 blocks (可通過 alter database 修改)每個 VNODE(TSDB)中有多少個 cache 大小的內(nèi)存塊。因此一個 VNODE 使用的內(nèi)存大小粗略為(cache * blocks)。 6
5 quorum (可通過 alter database 修改)多副本環(huán)境下指令執(zhí)行的確認數(shù)要求 1-2 1
6 minRows 文件塊中記錄的最小條數(shù) 100
7 maxRows 文件塊中記錄的最大條數(shù) 4096
8 comp (可通過 alter database 修改)文件壓縮標志位 0:關(guān)閉,1:一階段壓縮,2:兩階段壓縮 2
9 walLevel (作為 database 的參數(shù)時名為 wal;在 taos.cfg 中作為參數(shù)時需要寫作 walLevel)WAL級別 1:寫 WAL,但不執(zhí)行 fsync;2:寫 WAL, 而且執(zhí)行 fsync 1
10 fsync 毫秒 當 wal 設(shè)置為 2 時,執(zhí)行 fsync 的周期。設(shè)置為 0,表示每次寫入,立即執(zhí)行 fsync。 3000
11 replica (可通過 alter database 修改)副本個數(shù) 1-3 1
12 precision 時間戳精度標識(2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此參數(shù)。)(從 2.1.5.0 版本開始,新增對納秒時間精度的支持) 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 (可通過 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:同時打開緩存最近行和列功能 0

對于一個應(yīng)用場景,可能有多種數(shù)據(jù)特征的數(shù)據(jù)并存,最佳的設(shè)計是將具有相同數(shù)據(jù)特征的表放在一個庫里,這樣一個應(yīng)用有多個庫,而每個庫可以配置不同的存儲參數(shù),從而保證系統(tǒng)有最優(yōu)的性能。TDengine 允許應(yīng)用在創(chuàng)建庫時指定上述存儲參數(shù),如果指定,該參數(shù)就將覆蓋對應(yīng)的系統(tǒng)配置參數(shù)。舉例,有下述 SQL:

 CREATE DATABASE demo DAYS 10 CACHE 32 BLOCKS 8 REPLICA 3 UPDATE 1;

該SQL創(chuàng)建了一個庫 demo, 每個數(shù)據(jù)文件存儲 10 天數(shù)據(jù),內(nèi)存塊為 32 兆字節(jié),每個 VNODE 占用 8 個內(nèi)存塊,副本數(shù)為3,允許更新,而其他參數(shù)與系統(tǒng)配置完全一致。

一個數(shù)據(jù)庫創(chuàng)建成功后,僅部分參數(shù)可以修改并實時生效,其余參數(shù)不能修改:

參數(shù)名 能否修改 范圍 修改語法示例
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

說明:在 2.1.3.0 版本之前,通過 ALTER DATABASE 語句修改這些參數(shù)后,需要重啟服務(wù)器才能生效。

TDengine 集群中加入一個新的 dnode 時,涉及集群相關(guān)的一些參數(shù)必須與已有集群的配置相同,否則不能成功加入到集群中。會進行校驗的參數(shù)如下:

  • numOfMnodes:系統(tǒng)中管理節(jié)點個數(shù)。默認值:3。(2.0 版本從 2.0.20.11 開始、2.1 及以上版本從 2.1.6.0 開始,numOfMnodes 默認值改為 1。)
  • mnodeEqualVnodeNum: 一個 mnode 等同于 vnode 消耗的個數(shù)。默認值:4。
  • offlineThreshold: dnode 離線閾值,超過該時間將導(dǎo)致該 dnode 從集群中刪除。單位為秒,默認值:86400*10(即10天)。
  • statusInterval: dnode 向 mnode 報告狀態(tài)時長。單位為秒,默認值:1。
  • maxTablesPerVnode: 每個 vnode 中能夠創(chuàng)建的最大表個數(shù)。默認值:1000000。
  • maxVgroupsPerDb: 每個數(shù)據(jù)庫中能夠使用的最大 vgroup 個數(shù)。
  • arbitrator: 系統(tǒng)中裁決器的 end point,缺省為空。
  • timezone、locale、charset 的配置見客戶端配置。(2.0.20.0 及以上的版本里,集群中加入新節(jié)點已不要求 locale 和 charset 參數(shù)取值一致)
  • balance:是否啟用負載均衡。0:否,1:是。默認值:1。
  • flowctrl:是否啟用非阻塞流控。0:否,1:是。默認值:1。
  • slaveQuery:是否啟用 slave vnode 參與查詢。0:否,1:是。默認值:1。
  • adjustMaster:是否啟用 vnode master 負載均衡。0:否,1:是。默認值:1。

為方便調(diào)試,可通過 SQL 語句臨時調(diào)整每個 dnode 的日志配置,系統(tǒng)重啟后會失效:

ALTER DNODE <dnode_id> <config>
  • dnode_id: 可以通過 SQL 語句"SHOW DNODES"命令獲取
  • config: 要調(diào)整的日志參數(shù),在如下列表中取值

    resetlog 截斷舊日志文件,創(chuàng)建一個新日志文件 debugFlag < 131 | 135 | 143 > 設(shè)置 debugFlag 為 131、135 或者 143

例如:

    alter dnode 1 debugFlag 135;

客戶端及應(yīng)用驅(qū)動配置

TDengine 系統(tǒng)的前臺交互客戶端應(yīng)用程序為 taos,以及應(yīng)用驅(qū)動,它與 taosd 共享同一個配置文件 taos.cfg。運行 taos 時,使用參數(shù) -c 指定配置文件目錄,如 taos -c /home/cfg,表示使用/home/cfg/目錄下的 taos.cfg 配置文件中的參數(shù),缺省目錄是 /etc/taos。更多 taos 的使用方法請見幫助信息 taos --help。本節(jié)主要說明 taos 客戶端應(yīng)用在配置文件 taos.cfg 文件中使用到的參數(shù)。

2.0.10.0 之后版本支持命令行以下參數(shù)顯示當前客戶端參數(shù)的配置

taos -C  或  taos --dump-config

客戶端及應(yīng)用驅(qū)動配置參數(shù)列表及解釋

  • firstEp: taos 啟動時,主動連接的集群中第一個 taosd 實例的 end point, 缺省值為 localhost:6030。

  • secondEp: taos 啟動時,如果 firstEp 連不上,將嘗試連接 secondEp。

  • locale:系統(tǒng)區(qū)位信息及編碼格式。

    默認值:系統(tǒng)中動態(tài)獲取,如果自動獲取失敗,需要用戶在配置文件設(shè)置或通過API設(shè)置。

    TDengine 為存儲中文、日文、韓文等非 ASCII 編碼的寬字符,提供一種專門的字段類型 nchar。寫入 nchar 字段的數(shù)據(jù)將統(tǒng)一采用 UCS4-LE 格式進行編碼并發(fā)送到服務(wù)器。需要注意的是,編碼正確性是客戶端來保證。因此,如果用戶想要正常使用 nchar 字段來存儲諸如中文、日文、韓文等非 ASCII 字符,需要正確設(shè)置客戶端的編碼格式。

    客戶端的輸入的字符均采用操作系統(tǒng)當前默認的編碼格式,在 Linux 系統(tǒng)上多為 UTF-8,部分中文系統(tǒng)編碼則可能是 GB18030 或 GBK 等。在 docker 環(huán)境中默認的編碼是 POSIX。在中文版 Windows 系統(tǒng)中,編碼則是 CP936??蛻舳诵枰_保正確設(shè)置自己所使用的字符集,即客戶端運行的操作系統(tǒng)當前編碼字符集,才能保證 nchar 中的數(shù)據(jù)正確轉(zhuǎn)換為 UCS4-LE 編碼格式。

    在 Linux 中 locale 的命名規(guī)則為: <語言>_<地區(qū)>.<字符集編碼> 如:zh_CN.UTF-8,zh 代表中文,CN 代表大陸地區(qū),UTF-8 表示字符集。字符集編碼為客戶端正確解析本地字符串提供編碼轉(zhuǎn)換的說明。Linux 系統(tǒng)與 macOS 系統(tǒng)可以通過設(shè)置 locale 來確定系統(tǒng)的字符編碼,由于 Windows 使用的 locale 中不是 POSIX 標準的 locale 格式,因此在 Windows 下需要采用另一個配置參數(shù) charset 來指定字符編碼。在 Linux 系統(tǒng)中也可以使用charset來指定字符編碼。

  • charset:字符集編碼。

    默認值:系統(tǒng)中動態(tài)獲取,如果自動獲取失敗,需要用戶在配置文件設(shè)置或通過 API 設(shè)置。

    如果配置文件中不設(shè)置 charset,在 Linux 系統(tǒng)中,taos 在啟動時候,自動讀取系統(tǒng)當前的 locale 信息,并從 locale 信息中解析提取 charset 編碼格式。如果自動讀取 locale 信息失敗,則嘗試讀取 charset 配置,如果讀取 charset 配置也失敗,則中斷啟動過程。

    在 Linux 系統(tǒng)中,locale 信息包含了字符編碼信息,因此正確設(shè)置了 Linux 系統(tǒng) locale 以后可以不用再單獨設(shè)置 charset。例如:

    locale zh_CN.UTF-8

    在 Windows 系統(tǒng)中,無法從 locale 獲取系統(tǒng)當前編碼。如果無法從配置文件中讀取字符串編碼信息,taos 默認設(shè)置為字符編碼為 CP936。其等效在配置文件中添加如下配置:

    charset CP936

    如果需要調(diào)整字符編碼,請查閱當前操作系統(tǒng)使用的編碼,并在配置文件中正確設(shè)置。

    在 Linux 系統(tǒng)中,如果用戶同時設(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

    默認值:動態(tài)獲取當前客戶端運行系統(tǒng)所在的時區(qū)。

    為應(yīng)對多時區(qū)的數(shù)據(jù)寫入和查詢問題,TDengine 采用 Unix 時間戳(Unix Timestamp)來記錄和存儲時間戳。Unix 時間戳的特點決定了任一時刻不論在任何時區(qū),產(chǎn)生的時間戳均一致。需要注意的是,Unix時間戳是在客戶端完成轉(zhuǎn)換和記錄。為了確保客戶端其他形式的時間轉(zhuǎn)換為正確的 Unix 時間戳,需要設(shè)置正確的時區(qū)。

    在Linux系統(tǒng)中,客戶端會自動讀取系統(tǒng)設(shè)置的時區(qū)信息。用戶也可以采用多種方式在配置文件設(shè)置時區(qū)。例如:

    timezone UTC-8
    timezone GMT-8
    timezone Asia/Shanghai

    均是合法的設(shè)置東八區(qū)時區(qū)的格式。但需注意,Windows 下并不支持 timezone Asia/Shanghai 這樣的寫法,而必須寫成 timezone UTC-8

    時區(qū)的設(shè)置對于查詢和寫入SQL語句中非 Unix 時間戳的內(nèi)容(時間戳字符串、關(guān)鍵詞 now 的解析)產(chǎn)生影響。例如:

    SELECT count(*) FROM table_name WHERE TS<'2019-04-11 12:01:08';

    在東八區(qū),SQL 語句等效于

    SELECT count(*) FROM table_name WHERE TS<1554955268000;

    在 UTC 時區(qū),SQL 語句等效于

    SELECT count(*) FROM table_name WHERE TS<1554984068000;

    為了避免使用字符串時間格式帶來的不確定性,也可以直接使用 Unix 時間戳。此外,還可以在 SQL 語句中使用帶有時區(qū)的時間戳字符串,例如:RFC3339 格式的時間戳字符串,2013-04-12T15:52:01.123+08:00 或者 ISO-8601 格式時間戳字符串 2013-04-12T15:52:01.123+0800。上述兩個字符串轉(zhuǎn)化為 Unix 時間戳不受系統(tǒng)所在時區(qū)的影響。

    啟動 taos 時,也可以從命令行指定一個 taosd 實例的 end point,否則就從 taos.cfg 讀取。

  • maxBinaryDisplayWidth

    Shell 中 binary 和 nchar 字段的顯示寬度上限,超過此限制的部分將被隱藏。默認值:30??稍?taos shell 中通過命令 set max_binary_display_width nn 動態(tài)修改此選項。

用戶管理

系統(tǒng)管理員可以在 CLI 界面里添加、刪除用戶,也可以修改密碼。CLI 里 SQL 語法如下:

CREATE USER <user_name> PASS <'password'>;

創(chuàng)建用戶,并指定用戶名和密碼,密碼需要用單引號引起來,單引號為英文半角

DROP USER <user_name>;

刪除用戶,限 root 用戶使用

ALTER USER <user_name> PASS <'password'>;

修改用戶密碼,為避免被轉(zhuǎn)換為小寫,密碼需要用單引號引用,單引號為英文半角

ALTER USER <user_name> PRIVILEGE <write|read>;

修改用戶權(quán)限為:write 或 read,不需要添加單引號

說明:系統(tǒng)內(nèi)共有 super/write/read 三種權(quán)限級別,但目前不允許通過 alter 指令把 super 權(quán)限賦予用戶。

SHOW USERS;

顯示所有用戶

注意:SQL 語法中,< >表示需要用戶輸入的部分,但請不要輸入< >本身。

數(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 命令,用于批量運行文件中的 SQL 語句。用戶可將建庫、建表、寫數(shù)據(jù)等 SQL 命令寫在同一個文件中,每條命令單獨一行,在 shell 中運行 source 命令,即可按順序批量運行文件中的SQL語句。以‘#’開頭的 SQL 語句被認為是注釋,shell 將自動忽略。

按數(shù)據(jù)文件導(dǎo)入

TDengine 也支持在 shell 對已存在的表從 CSV 文件中進行數(shù)據(jù)導(dǎo)入。CSV 文件只屬于一張表且 CSV 文件中的數(shù)據(jù)格式需與要導(dǎo)入表的結(jié)構(gòu)相同,在導(dǎo)入的時候,其語法如下:

insert into tb1 file 'path/data.csv';

注意:如果 CSV 文件首行存在描述信息,請手動刪除后再導(dǎo)入。如某列為空,填NULL,無引號。

例如,現(xiàn)在存在一個子表 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ù)庫導(dǎo)入導(dǎo)出工具 taosdump。用戶可以將 taosdump 從一個系統(tǒng)導(dǎo)出的數(shù)據(jù),導(dǎo)入到其他系統(tǒng)中。具體使用方法,請參見: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)出一個表或一個 STable 中的數(shù)據(jù),可在 taos shell 中運行:

select * from <tb_name> >> data.csv;

這樣,表 tb_name 中的數(shù)據(jù)就會按照 CSV 格式導(dǎo)出到文件 data.csv 中。

用taosdump導(dǎo)出數(shù)據(jù)

利用 taosdump,用戶可以根據(jù)需要選擇導(dǎo)出所有數(shù)據(jù)庫、一個數(shù)據(jù)庫或者數(shù)據(jù)庫中的一張表,所有數(shù)據(jù)或一時間段的數(shù)據(jù),甚至僅僅表的定義。

具體使用方法,請參見博客:TDengine DUMP 工具使用指南

系統(tǒng)連接、任務(wù)查詢管理

系統(tǒng)管理員可以從 CLI 查詢系統(tǒng)的連接、正在進行的查詢、流式計算,并且可以關(guān)閉連接、停止正在進行的查詢和流式計算。CLI 里 SQL 語法如下:

SHOW CONNECTIONS;

顯示數(shù)據(jù)庫的連接,其中一列顯示 ip:port, 為連接的 IP 地址和端口號。

KILL CONNECTION <connection-id>;

強制關(guān)閉數(shù)據(jù)庫連接,其中的 connection-id 是 SHOW CONNECTIONS 中顯示的第一列的數(shù)字。

SHOW QUERIES;

顯示數(shù)據(jù)查詢,其中第一列顯示的以冒號隔開的兩個數(shù)字為 query-id,為發(fā)起該 query 應(yīng)用連接的 connection-id 和查詢次數(shù)。

KILL QUERY <query-id>;

強制關(guān)閉數(shù)據(jù)查詢,其中query-id是SHOW QUERIES中顯示的 connection-id:query-no字串,如“105:2”,拷貝粘貼即可。

SHOW STREAMS;

顯示流式計算,其中第一列顯示的以冒號隔開的兩個數(shù)字為 stream-id, 為啟動該 stream 應(yīng)用連接的 connection-id 和發(fā)起 stream 的次數(shù)。

KILL STREAM <stream-id>;

強制關(guān)閉流式計算,其中的中 stream-id 是 SHOW STREAMS 中顯示的 connection-id:stream-no 字串,如 103:2,拷貝粘貼即可。

系統(tǒng)監(jiān)控

TDengine 啟動后,會自動創(chuàng)建一個監(jiān)測數(shù)據(jù)庫 log,并自動將服務(wù)器的 CPU、內(nèi)存、硬盤空間、帶寬、請求數(shù)、磁盤讀寫速度、慢查詢等信息定時寫入該數(shù)據(jù)庫。TDengine 還將重要的系統(tǒng)操作(比如登錄、創(chuàng)建、刪除數(shù)據(jù)庫等)日志以及各種錯誤報警信息記錄下來存放在 log 庫里。系統(tǒng)管理員可以從 CLI 直接查看這個數(shù)據(jù)庫,也可以在 WEB 通過圖形化界面查看這些監(jiān)測信息。

這些監(jiān)測信息的采集缺省是打開的,但可以修改配置文件里的選項 monitor 將其關(guān)閉或打開。

TDinsight - 使用監(jiān)控數(shù)據(jù)庫 + Grafana 對 TDengine 進行監(jiān)控的解決方案

從 2.3.3.0 開始,監(jiān)控數(shù)據(jù)庫將提供更多的監(jiān)控項,您可以從 TDinsight Grafana Dashboard 了解如何使用 TDinsight 方案對 TDengine 進行監(jiān)控。

我們提供了一個自動化腳本 TDinsight.sh 對TDinsight進行部署。

下載 TDinsight.sh

wget https://github.com/taosdata/grafanaplugin/raw/master/dashboards/TDinsight.sh
chmod +x TDinsight.sh

準備:

  1. TDengine Server 信息:

    • TDengine RESTful 服務(wù):對本地而言,可以是 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 來獲取。

      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. 短信通知模板號,參數(shù) -C
      5. 短信通知模板輸入?yún)?shù),JSON格式,參數(shù) -T,如 {"alarm_level":"%s","time":"%s","name":"%s","content":"%s"}
      6. 逗號分隔的通知手機列表,參數(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"}'

運行程序并重啟 Grafana 服務(wù),打開面板:http://localhost:3000/d/tdinsight

更多使用場景和限制請參考TDinsight 文檔。

性能優(yōu)化

注意:碎片重整操作會產(chǎn)生大量磁盤 I/O。因此在重整進行期間,有可能會影響節(jié)點的寫入和查詢性能,甚至在極端情況下導(dǎo)致短時間的應(yīng)用寫入阻塞。

因數(shù)據(jù)行 update、表刪除、數(shù)據(jù)過期等原因,TDengine 的磁盤存儲文件有可能出現(xiàn)數(shù)據(jù)碎片,影響查詢操作的性能表現(xiàn)。從 2.1.3.0 版本開始,新增 SQL 指令 COMPACT 來啟動碎片重整過程:

COMPACT VNODES IN (vg_id1, vg_id2, ...)

COMPACT 命令對指定的一個或多個 VGroup 啟動碎片重整,系統(tǒng)會通過任務(wù)隊列盡快安排重整操作的具體執(zhí)行。COMPACT 指令所需的 VGroup id,可以通過 SHOW VGROUPS; 指令的輸出結(jié)果獲取;而且在 SHOW VGROUPS; 中會有一個 compacting 列,值為 2 時表示對應(yīng)的 VGroup 處于排隊等待進行重整的狀態(tài),值為 1 時表示正在進行碎片重整,為 0 時則表示并沒有處于重整狀態(tài)(未要求進行重整或已經(jīng)完成重整)。

TSZ 壓縮算法

TSZ 壓縮算法簡介

TSZ 壓縮算法是 TDengine 為浮點數(shù)據(jù)類型提供更加豐富的壓縮功能,可以實現(xiàn)浮點數(shù)的有損至無損全狀態(tài)壓縮,相比原來在 TDengine 中原有壓縮算法,TSZ 壓縮算法壓縮選項更豐富,壓縮率更高,即使切到無損狀態(tài)下對浮點數(shù)壓縮,壓縮率也會比原來的壓縮算法高一倍。

適合場景

TSZ 壓縮算法壓縮率比原來的要高,但壓縮時間會更長,即開啟 TSZ 壓縮算法寫入速度會有一些下降,通常情況下會有 20% 左右的下降。影響寫入速度是因為需要更多的 CPU 計算,所以從原始數(shù)據(jù)到壓縮好數(shù)據(jù)的交付時間變長,導(dǎo)致寫入速度變慢。如果您的服務(wù)器 CPU 配置很高的話,這個影響會變小甚至沒有。

另外如果設(shè)備產(chǎn)生了大量的高精度浮點數(shù),存儲占用的空間非常龐大,但實際使用并不需要那么高的精度時,可以通過 TSZ 壓縮的有損壓縮功能,把精度壓縮至指定的長度,節(jié)約存儲空間。

總結(jié):采集到了大量浮點數(shù),存儲時占用空間過大或出有存儲空間不足,需要超高壓縮率的場景。

使用步驟

  • 檢查版本支持,2.4.0.10 及之后 TDengine 的版本都支持此功能

  • 配置選項開啟功能,在 TDengine 的配置文件 taos.cfg 增加一行以下內(nèi)容,打開 TSZ 功能

lossyColumns     float|double
  • 根據(jù)自己需要配置其它選項,如果不配置都會按默認值處理。

  • 重啟服務(wù),配置生效。

  • 確認功能已開啟,在服務(wù)啟動過程中輸出的信息如果有前面配置的內(nèi)容,表明功能已生效:

02/22 10:49:27.607990 00002933 UTL  lossyColumns     float|double

注意事項

  • 確認版本是否支持

  • 除了服務(wù)器啟動時的輸出的配置成功信息外,不再會有其它的信息輸出是使用的哪種壓縮算法,可以通過配置前后數(shù)據(jù)庫文件大小來比較效果

  • 如果浮點數(shù)類型列較少,看整體數(shù)據(jù)文件大小效果會不太明顯

  • 此壓縮產(chǎn)生的數(shù)據(jù)文件中浮點數(shù)據(jù)部分將不能被 2.4.0.10 以下的版本解析,即不向下兼容,使用時避免更換回舊版本,以免數(shù)據(jù)不能被讀取出來。

  • 在使用過程中允許反復(fù)開啟和關(guān)閉 TSZ 壓縮選項的操作,前后兩種壓縮算法產(chǎn)生的數(shù)據(jù)都能正常讀取。

文件目錄結(jié)構(gòu)

安裝 TDengine 后,默認會在操作系統(tǒng)中生成下列目錄或文件:

目錄/文件 說明
/usr/local/taos/bin TDengine 可執(zhí)行文件目錄。其中的執(zhí)行文件都會軟鏈接到 /usr/bin 目錄下。
/usr/local/taos/connector TDengine 各種連接器目錄。
/usr/local/taos/driver TDengine 動態(tài)鏈接庫目錄。會軟鏈接到 /usr/lib 目錄下。
/usr/local/taos/examples TDengine 各種語言應(yīng)用示例目錄。
/usr/local/taos/include TDengine 對外提供的 C 語言接口的頭文件。
/etc/taos/taos.cfg TDengine 默認[配置文件]
/var/lib/taos TDengine 默認數(shù)據(jù)文件目錄??赏ㄟ^[配置文件]修改位置。
/var/log/taos TDengine 默認日志文件目錄??赏ㄟ^[配置文件]修改位置。

可執(zhí)行文件

TDengine 的所有可執(zhí)行文件默認存放在 /usr/local/taos/bin 目錄下。其中包括:

  • taosd:TDengine 服務(wù)端可執(zhí)行文件
  • taos:TDengine Shell 可執(zhí)行文件
  • taosdump:數(shù)據(jù)導(dǎo)入導(dǎo)出工具
  • taosBenchmark:TDengine 測試工具
  • remove.sh:卸載 TDengine 的腳本,請謹慎執(zhí)行,鏈接到 /usr/bin 目錄下的 rmtaos 命令。會刪除 TDengine 的安裝目錄 /usr/local/taos,但會保留 /etc/taos、/var/lib/taos、/var/log/taos。

注意:2.4.0.0 版本之后的 taosBenchmark 和 taosdump 需要安裝獨立安裝包 taosTools。

您可以通過修改系統(tǒng)配置文件 taos.cfg 來配置不同的數(shù)據(jù)目錄和日志目錄。

TDengine 的啟動、停止、卸載

TDengine 使用 Linux 系統(tǒng)的 systemd/systemctl/service 來管理系統(tǒng)的啟動和、停止、重啟操作。TDengine 的服務(wù)進程是 taosd,默認情況下 TDengine 在系統(tǒng)啟動后將自動啟動。DBA 可以通過 systemd/systemctl/service 手動操作停止、啟動、重新啟動服務(wù)。

以 systemctl 為例,命令如下:

  • 啟動服務(wù)進程:systemctl start taosd

  • 停止服務(wù)進程:systemctl stop taosd

  • 重啟服務(wù)進程:systemctl restart taosd

  • 查看服務(wù)狀態(tài):systemctl status taosd

如果服務(wù)進程處于活動狀態(tài),則 status 指令會顯示如下的相關(guān)信息:

......

Active: active (running)

......

如果后臺服務(wù)進程處于停止狀態(tài),則 status 指令會顯示如下的相關(guān)信息:

......

Active: inactive (dead)

......

卸載 TDengine,只需要執(zhí)行如下命令:

rmtaos

警告:執(zhí)行該命令后,TDengine 程序?qū)⒈煌耆珓h除,務(wù)必謹慎使用。

TDengine參數(shù)限制與保留關(guān)鍵字

名稱命名規(guī)則

  1. 合法字符:英文字符、數(shù)字和下劃線
  2. 允許英文字符或下劃線開頭,不允許以數(shù)字開頭
  3. 不區(qū)分大小寫
  4. 轉(zhuǎn)義后表(列)名規(guī)則: 為了兼容支持更多形式的表(列)名,TDengine 引入新的轉(zhuǎn)義符 "`"??捎米尡砻c關(guān)鍵詞不沖突,同時不受限于上述表名稱合法性約束檢查。 轉(zhuǎn)義后的表(列)名同樣受到長度限制要求,且長度計算的時候不計算轉(zhuǎn)義符。使用轉(zhuǎn)義字符以后,不再對轉(zhuǎn)義字符中的內(nèi)容進行大小寫統(tǒng)一。

    例如:`aBc` 和 `abc` 是不同的表(列)名,但是 abc 和 aBc 是相同的表(列)名。 需要注意的是轉(zhuǎn)義字符中的內(nèi)容必須是可打印字符。 支持轉(zhuǎn)義符的功能從 2.3.0.1 版本開始。

密碼合法字符集

[a-zA-Z0-9!?$%^&*()_–+={[}]:;@~#|<,>.?/]

去掉了 ‘“`\ (單雙引號、撇號、反斜杠、空格)

  • 數(shù)據(jù)庫名:不能包含“.”以及特殊字符,不能超過 32 個字符
  • 表名:不能包含“.”以及特殊字符,與所屬數(shù)據(jù)庫名一起,不能超過 192 個字符。每行數(shù)據(jù)最大長度 48K 個字符(2.1.7.0 之前的版本為 16K,每個 BINARY/NCHAR 類型的列還會額外占用 2 個 byte 的存儲位置)
  • 表的列名:不能包含特殊字符,不能超過 64 個字符
  • 數(shù)據(jù)庫名、表名、列名,都不能以數(shù)字開頭,合法的可用字符集是“英文字符、數(shù)字和下劃線”
  • 表的列數(shù):不能超過 1024 列,最少需要 2 列,第一列必須是時間戳(從 2.1.7.0 版本開始,改為最多支持 4096 列)
  • 記錄的最大長度:包括時間戳 8 byte,不能超過 48KB(2.1.7.0 之前的版本為 16K,每個 BINARY/NCHAR 類型的列還會額外占用 2 個 byte 的存儲位置)
  • 單條 SQL 語句默認最大字符串長度:1048576 byte,但可通過系統(tǒng)配置參數(shù) maxSQLLength 修改,取值范圍 65480 ~ 1048576 byte
  • 數(shù)據(jù)庫副本數(shù):不能超過 3
  • 用戶名:不能超過 23 個 byte
  • 用戶密碼:不能超過 15 個 byte
  • 標簽(Tags)數(shù)量:不能超過 128 個,可以 0 個
  • 標簽的總長度:不能超過 16K byte
  • 記錄條數(shù):僅受存儲空間限制
  • 表的個數(shù):僅受節(jié)點個數(shù)限制
  • 庫的個數(shù):僅受節(jié)點個數(shù)限制
  • 單個庫上虛擬節(jié)點個數(shù):不能超過 64 個
  • 庫的數(shù)目,超級表的數(shù)目、表的數(shù)目,系統(tǒng)不做限制,僅受系統(tǒng)資源限制
  • SELECT 語句的查詢結(jié)果,最多允許返回 1024 列(語句中的函數(shù)調(diào)用可能也會占用一些列空間),超限時需要顯式指定較少的返回數(shù)據(jù)列,以避免語句執(zhí)行報錯。(從 2.1.7.0 版本開始,改為最多允許 4096 列)

目前 TDengine 有將近 200 個內(nèi)部保留關(guān)鍵字,這些關(guān)鍵字無論大小寫均不可以用作庫名、表名、STable 名、數(shù)據(jù)列名及標簽列名等。這些關(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)義字符說明

  • 轉(zhuǎn)義字符表(轉(zhuǎn)義符的功能從 2.4.0.4 版本開始)

    字符序列 代表的字符
    \' 單引號'
    \" 雙引號"
    \n 換行符
    \r 回車符
    \t tab符
    \\ 斜杠\
    \% % 規(guī)則見下
    \_ _ 規(guī)則見下
  • 轉(zhuǎn)義字符使用規(guī)則

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

診斷及其他

網(wǎng)絡(luò)連接診斷

當出現(xiàn)客戶端應(yīng)用無法訪問服務(wù)端時,需要確認客戶端與服務(wù)端之間網(wǎng)絡(luò)的各端口連通情況,以便有針對性地排除故障。

目前網(wǎng)絡(luò)連接診斷支持在:Linux 與 Linux,Linux 與 Windows 之間進行診斷測試。

診斷步驟:

  1. 如擬診斷的端口范圍與服務(wù)器 taosd 實例的端口范圍相同,須先停掉 taosd 實例
  2. 服務(wù)端命令行輸入:taos -n server -P <port> 以服務(wù)端身份啟動對端口 port 為基準端口的監(jiān)聽
  3. 客戶端命令行輸入:taos -n client -h <fqdn of server> -P <port> 以客戶端身份啟動對指定的服務(wù)器、指定的端口發(fā)送測試包

服務(wù)端運行正常的話會輸出以下信息:

# 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

客戶端運行正常會輸出以下信息:

# 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

仔細閱讀打印出來的錯誤信息,可以幫助管理員找到原因,以解決問題。

啟動狀態(tài)及RPC診斷

taos -n startup -h <fqdn of server>

判斷 taosd 服務(wù)端是否成功啟動,是數(shù)據(jù)庫管理員經(jīng)常遇到的一種情形。特別當若干臺服務(wù)器組成集群時,判斷每個服務(wù)端實例是否成功啟動就會是一個重要問題。除檢索 taosd 服務(wù)端日志文件進行問題定位、分析外,還可以通過 taos -n startup -h <fqdn of server> 來診斷一個 taosd 進程的啟動狀態(tài)。

針對多臺服務(wù)器組成的集群,當服務(wù)啟動過程耗時較長時,可通過該命令行來診斷每臺服務(wù)器的 taosd 實例的啟動狀態(tài),以準確定位問題。

taos -n rpc -h <fqdn of server>

該命令用來診斷已經(jīng)啟動的 taosd 實例的端口是否可正常訪問。如果 taosd 程序異?;蛘呤ロ憫?yīng),可以通過 taos -n rpc -h <fqdn of server> 來發(fā)起一個與指定 fqdn 的 rpc 通信,看看 taosd 是否能收到,以此來判定是網(wǎng)絡(luò)問題還是 taosd 程序異常問題。

sync 及 arbitrator 診斷

taos -n sync -P 6040 -h <fqdn of server>
taos -n sync -P 6042 -h <fqdn of server>

用來診斷 sync 端口是否工作正常,判斷服務(wù)端 sync 模塊是否成功工作。另外,-P 6042 用來診斷 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 工具新提供了一個網(wǎng)絡(luò)速度診斷的模式,可以對一個正在運行中的 taosd 實例或者 taos -n server 方式模擬的一個服務(wù)端實例,以非壓縮傳輸?shù)姆绞竭M行網(wǎng)絡(luò)測速。這個模式下可供調(diào)整的參數(shù)如下:

-n:設(shè)為“speed”時,表示對網(wǎng)絡(luò)速度進行診斷。 -h:所要連接的服務(wù)端的 FQDN 或 ip 地址。如果不設(shè)置這一項,會使用本機 taos.cfg 文件中 FQDN 參數(shù)的設(shè)置作為默認值。 -P:所連接服務(wù)端的網(wǎng)絡(luò)端口。默認值為 6030。 -N:診斷過程中使用的網(wǎng)絡(luò)包總數(shù)。最小值是 1、最大值是 10000,默認值為 100。 -l:單個網(wǎng)絡(luò)包的大小(單位:字節(jié))。最小值是 1024、最大值是 1024 1024 1024,默認值為 1000。 -S:網(wǎng)絡(luò)封包的類型。可以是 TCP 或 UDP,默認值為 TCP。

FQDN 解析速度診斷

taos -n fqdn -h <fqdn of server>

從 2.2.0.0 版本開始,taos 工具新提供了一個 FQDN 解析速度的診斷模式,可以對一個目標 FQDN 地址嘗試解析,并記錄解析過程中所消耗的時間。這個模式下可供調(diào)整的參數(shù)如下:

-n:設(shè)為“fqdn”時,表示對 FQDN 解析進行診斷。 -h:所要解析的目標 FQDN 地址。如果不設(shè)置這一項,會使用本機 taos.cfg 文件中 FQDN 參數(shù)的設(shè)置作為默認值。

服務(wù)端日志

taosd 服務(wù)端日志文件標志位 debugflag 默認為 131,在 debug 時往往需要將其提升到 135 或 143 。

一旦設(shè)定為 135 或 143,日志文件增長很快,特別是寫入、查詢請求量較大時,增長速度驚人。如合并保存日志,很容易把日志內(nèi)的關(guān)鍵信息(如配置信息、錯誤信息等)沖掉。為此,服務(wù)端將重要信息日志與其他日志分開存放:

  • taosinfo 存放重要信息日志, 包括:INFO/ERROR/WARNING 級別的日志信息。不記錄DEBUG、TRACE級別的日志。
  • taosdlog 服務(wù)器端生成的日志,記錄taosinfo中全部信息外,還根據(jù)設(shè)置的日志輸出級別,記錄DEBUG(日志級別135)、TRACE(日志級別是 143)。

客戶端日志

每個獨立運行的客戶端(一個進程)生成一個獨立的客戶端日志,其命名方式采用 taoslog+<序號> 的方式命名。文件標志位 debugflag 默認為 131,在 debug 時往往需要將其提升到 135 或 143 。

  • taoslog 客戶端(driver)生成的日志,默認記錄客戶端INFO/ERROR/WARNING 級別日志,還根據(jù)設(shè)置的日志輸出級別,記錄DEBUG(日志級別135)、TRACE(日志級別是 143)。

其中,日志文件最大長度由 numOfLogLines 來進行配置,一個 taosd 實例最多保留兩個文件。

taosd 服務(wù)端日志采用異步落盤寫入機制,優(yōu)點是可以避免硬盤寫入壓力太大,對性能造成很大影響。缺點是,在極端情況下,存在少量日志行數(shù)丟失的可能。