diff --git a/docs/zh/06-advanced/05-data-in/00-transformer.md b/docs/zh/06-advanced/05-data-in/00-transformer.md new file mode 100644 index 0000000000..af521ba87c --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/00-transformer.md @@ -0,0 +1,228 @@ +--- +title: "数据转换" +sidebar_label: "数据转换" +--- + +Transformer 是数据写入的核心,从数据源读取数据后,经过解析、提取拆分、数据过滤、映射,最终写入 TDengine 数据表中。taosX 将 Transformer 过程抽象为四个步骤: + +1. **解析**:数据结构化的过程,就是将非结构化数据转成可以用统一 schema 描述的结构化数据。来自于 MQTT/Kafka 等数据源,其消息往往是普通的字符串,需要用一些格式化的方式来解析。但是数据源本身就是结构化数据,则无需解析过程。 +2. **提取拆分**:部分字段进一步细化拆分的过程,比如数据源使用一个字段描述重量 “5千克”, 目标库使用两个字段来描述重量:weight、unit,则需要将源字段拆分。 +3. **数据过滤**:设置过滤条件,满足条件的数据行才写入目标表。 +4. **映射**:将经过上述过程的源字段映射到目标 TDengine 数据表字段。 + +## 数据转换过程详解 + +taosExplorer 中目前支持大部分数据源写入的 transformer 配置。接下来四个小节详细说明四个步骤**解析**、**提取拆分**、**数据过滤**、**映射**可视化配置方法。 + +### 1 解析 + +仅非结构化的数据源需要这个步骤,目前 MQTT 和 Kafka 数据源会使用这个步骤提供的规则来解析非结构化数据,以初步获取结构化数据,即可以以字段描述的行列数据。在 explorer 中您需要提供示例数据和解析规则,来预览解析出以表格呈现的结构化数据。 + +#### 1.1 示例数据 + +![示例数据](./pic/transform-01.png) + +如图,textarea 输入框中就是示例数据,可以通过三种方式来获取示例数据: + +1. 直接在 textarea 中输入示例数据; +2. 点击右侧按钮 “从服务器检索” 则从配置的服务器获取示例数据,并追加到示例数据 textarea 中; +3. 上传文件,将文件内容追加到示例数据 textarea 中。 + +#### 1.2 解析 + +解析就是通过解析规则,将非结构化字符串解析为结构化数据。消息体的解析规则目前支持 JSON、Regex 和 UDT。 + +##### 1. JSON 解析 + +如下 JSON 示例数据,可自动解析出字段:`groupid`、`voltage`、`current`、`ts`、`inuse`、`location`。 + +``` json +{"groupid": 170001, "voltage": "221V", "current": 12.3, "ts": "2023-12-18T22:12:00", "inuse": true, "location": "beijing.chaoyang.datun"} +{"groupid": 170001, "voltage": "220V", "current": 12.2, "ts": "2023-12-18T22:12:02", "inuse": true, "location": "beijing.chaoyang.datun"} +{"groupid": 170001, "voltage": "216V", "current": 12.5, "ts": "2023-12-18T22:12:04", "inuse": false, "location": "beijing.chaoyang.datun"} +``` + +如下嵌套结构的 JSON 数据,可自动解析出字段`groupid`、`data_voltage`、`data_current`、`ts`、`inuse`、`location_0_province`、`location_0_city`、`location_0_datun`,也可以选择要解析的字段,并设置解析的别名。 + +``` json +{"groupid": 170001, "data": { "voltage": "221V", "current": 12.3 }, "ts": "2023-12-18T22:12:00", "inuse": true, "location": [{"province": "beijing", "city":"chaoyang", "street": "datun"}]} +``` + +![JSON 解析](./pic/transform-02.png) + +##### 2. Regex 正则表达式 + +可以使用正则表达式的**命名捕获组**从任何字符串(文本)字段中提取多个字段。如图所示,从 nginx 日志中提取访问ip、时间戳、访问的url等字段。 + +``` re +(?\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b)\s-\s-\s\[(?\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2}\s\+\d{4})\]\s"(?[A-Z]+)\s(?[^\s"]+).*(?\d{3})\s(?\d+) +``` + +![Regex 解析](./pic/transform-03.png) + +##### 3. UDT 自定义解析脚本 + +自定义 rhai 语法脚本解析输入数据(参考 `https://rhai.rs/book/` ),脚本目前仅支持 json 格式原始数据。 + +**输入**:脚本中可以使用参数 data, data 是原始数据 json 解析后的 Object Map; + +**输出**:输出的数据必须是数组。 + +例如对于数据,一次上报三相电压值,分别入到三个子表中。则需要对这类数据做解析 + +``` json +{ + "ts": "2024-06-27 18:00:00", + "voltage": "220.1,220.3,221.1", + "dev_id": "8208891" +} +``` + +那么可以使用如下脚本来提取三个电压数据。 + +``` +let v3 = data["voltage"].split(","); + +[ +#{"ts": data["ts"], "val": v3[0], "dev_id": data["dev_id"]}, +#{"ts": data["ts"], "val": v3[1], "dev_id": data["dev_id"]}, +#{"ts": data["ts"], "val": v3[2], "dev_id": data["dev_id"]} +] +``` + +最终解析结果如下所示: + +![UDT](./pic/transform-udf.png) + +### 2 提取或拆分 + +解析后的数据,可能还无法满足目标表的数据要求。比如智能表原始采集数据如下( json 格式): + +``` json +{"groupid": 170001, "voltage": "221V", "current": 12.3, "ts": "2023-12-18T22:12:00", "inuse": true, "location": "beijing.chaoyang.datun"} +{"groupid": 170001, "voltage": "220V", "current": 12.2, "ts": "2023-12-18T22:12:02", "inuse": true, "location": "beijing.chaoyang.datun"} +{"groupid": 170001, "voltage": "216V", "current": 12.5, "ts": "2023-12-18T22:12:04", "inuse": false, "location": "beijing.chaoyang.datun"} +``` + +使用 json 规则解析出的电压是字符串表达的带单位形式,最终入库希望能使用 int 类型记录电压值和电流值,便于统计分析,此时就需要对电压进一步拆分;另外日期期望拆分为日期和时间入库。 + +如下图所示可以对源字段`ts`使用 split 规则拆分成日期和时间,对字段`voltage`使用 regex 提取出电压值和电压单位。split 规则需要设置**分隔符**和**拆分数量**,拆分后的字段命名规则为`{原字段名}_{顺序号}`,Regex 规则同解析过程中的一样,使用**命名捕获组**命名提取字段。 + +![拆分和提取](./pic/transform-04.png) + +### 3 过滤 + +过滤功能可以设置过滤条件,满足条件的数据行 才会被写入目标表。过滤条件表达式的结果必须是 boolean 类型。在编写过滤条件前,必须确定 解析字段的类型,根据解析字段的类型,可以使用判断函数、比较操作符(`>`、`>=`、`<=`、`<`、`==`、`!=`)来判断。 + +#### 3.1 字段类型及转换 + +只有明确解析出的每个字段的类型,才能使用正确的语法做数据过滤。 + +使用 json 规则解析出的字段,按照属性值来自动设置类型: + +1. bool 类型:"inuse": true +2. int 类型:"voltage": 220 +3. float 类型:"current" : 12.2 +4. String 类型:"location": "MX001" + +使用 regex 规则解析的数据都是 string 类型。 +使用 split 和 regex 提取或拆分的数据是 string 类型。 + +如果提取出的数据类型不是预期中的类型,可以做数据类型转换。常用的数据类型转换就是把字符串转换成为数值类型。支持的转换函数如下: + +|Function|From type|To type|e.g.| +|:----|:----|:----|:----| +| parse_int | string | int | parse_int("56") // 结果为整数 56 | +| parse_float | string | float | parse_float("12.3") // 结果为浮点数 12.3 | + +#### 3.2 判断表达式 + +不同的数据类型有各自判断表达式的写法。 + +##### 1. BOOL 类型 + +可以使用变量或者使用操作符`!`,比如对于字段 "inuse": true,可以编写以下表达式: + +> 1. inuse +> 2. !inuse + +##### 2. 数值类型(int/float) + +数值类型支持使用比较操作符`==`、`!=`、`>`、`>=`、`<`、`<=`。 + +##### 3. 字符串类型 + +使用比较操作符,比较字符串。 + +字符串函数 + +|Function|Description|e.g.| +|:----|:----|:----| +| is_empty | returns true if the string is empty | s.is_empty() | +| contains | checks if a certain character or sub-string occurs in the string | s.contains("substring") | +| starts_with | returns true if the string starts with a certain string | s.starts_with("prefix") | +| ends_with | returns true if the string ends with a certain string | s.ends_with("suffix") | +| len | returns the number of characters (not number of bytes) in the string,must be used with comparison operator | s.len == 5 判断字符串长度是否为5;len作为属性返回 int ,和前四个函数有区别,前四个直接返回 bool。 | + +##### 4. 复合表达式 + +多个判断表达式,可以使用逻辑操作符(&&、||、!)来组合。 +比如下面的表达式表示获取北京市安装的并且电压值大于 200 的智能表数据。 + +> location.starts_with("beijing") && voltage > 200 + +### 4 映射 + +映射是将解析、提取、拆分的**源字段**对应到**目标表字段**,可以直接对应,也可以通过一些规则计算后再映射到目标表。 + +#### 4.1 选择目标超级表 + +选择目标超级表后,会加载出超级表所有的 tags 和 columns。 +源字段根据名称自动使用 mapping 规则映射到目标超级表的 tag 和 column。 +例如有如下解析、提取、拆分后的预览数据: + +#### 4.2 映射规则 + +支持的映射规则如下表所示: + +|rule|description| +|:----|:----| +| mapping | 直接映射,需要选择映射源字段。| +| value | 常量,可以输入字符串常量,也可以是数值常量,输入的常量值直接入库。| +| generator | 生成器,目前仅支持时间戳生成器 now,入库时会将当前时间入库。| +| join | 字符串连接器,可指定连接字符拼接选择的多个源字段。| +| format | **字符串格式化工具**,填写格式化字符串,比如有三个源字段 year, month, day 分别表示年月日,入库希望以yyyy-MM-dd的日期格式入库,则可以提供格式化字符串为 `${year}-${month}-${day}`。其中`${}`作为占位符,占位符中可以是一个源字段,也可以是 string 类型字段的函数处理| +| sum | 选择多个数值型字段做加法计算。| +| expr | **数值运算表达式**,可以对数值型字段做更加复杂的函数处理和数学运算。| + +##### 1. format 中支持的字符串处理函数 + +|Function|description|e.g.| +|:----|:----|:----| +| pad(len, pad_chars) | pads the string with a character or a string to at least a specified length | "1.2".pad(5, '0') // 结果为"1.200" | +|trim|trims the string of whitespace at the beginning and end|" abc ee ".trim() // 结果为"abc ee"| +|sub_string(start_pos, len)|extracts a sub-string,两个参数:
1. start position, counting from end if < 0
2. (optional) number of characters to extract, none if ≤ 0, to end if omitted|"012345678".sub_string(5) // "5678"
"012345678".sub_string(5, 2) // "56"
"012345678".sub_string(-2) // "78"| +|replace(substring, replacement)|replaces a sub-string with another|"012345678".replace("012", "abc") // "abc345678"| + +##### 2. expr 数学计算表达式 + +基本数学运算支持加`+`、减`-`、乘`*`、除`/`。 + +比如数据源采集数值以设置度为单位,目标库存储华氏度温度值。那么就需要对采集的温度数据做转换。 + +解析的源字段为`temperature`,则需要使用表达式 `temperature * 1.8 + 32`。 + +数值表达式中也支持使用数学函数,可用的数学函数如下表所示: + +|Function|description|e.g.| +|:----|:----|:----| +|sin、cos、tan、sinh、cosh|Trigonometry|a.sin() | +|asin、acos、atan、 asinh、acosh|arc-trigonometry|a.asin()| +|sqrt|Square root|a.sqrt() // 4.sqrt() == 2| +|exp|Exponential|a.exp()| +|ln、log|Logarithmic|a.ln() // e.ln() == 1
a.log() // 10.log() == 1| +|floor、ceiling、round、int、fraction|rounding|a.floor() // (4.2).floor() == 4
a.ceiling() // (4.2).ceiling() == 5
a.round() // (4.2).round() == 4
a.int() // (4.2).int() == 4
a.fraction() // (4.2).fraction() == 0.2| + +#### 4.3 子表名映射 + +子表名类型为字符串,可以使用映射规则中的字符串格式化 format 表达式定义子表名。 diff --git a/docs/zh/06-advanced/05-data-in/01-migrate.md b/docs/zh/06-advanced/05-data-in/01-migrate.md new file mode 100644 index 0000000000..089bd0e018 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/01-migrate.md @@ -0,0 +1,36 @@ +--- +title: "TDengine2" +sidebar_label: "TDengine2" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务, 从旧版 TDengine2 迁移数据到当前集群。 + +## 功能概述 + +taosX 通过 SQL 查询源集群数据,并把查询结果写入到目标数据库。具体实现上, taosX 以一个子表的一个时间段的数据作为查询的基本单元,将要迁移的数据分批写入目标数据库。 + +taosX 支持三种迁移模式: +1. **history** 模式。指迁移指定时间范围内的数据,若不指定时间范围,则迁移截至创建任务前的所有数据。迁移完则任务停止。 +2. **realtime** 模式。同步从任务创建时间起之后的数据,若不手动停止任务则任务会持续运行。 +3. **both** 模式。先执行 history 模式,在执行 realtime 模式。 + +每种迁移模式下,都可以指定是否迁移表结构。如果选择了 “always”, 则会先同步表的结构到目标数据库再迁移数据。如果子表数量比较多这个过程可能会比较长。如果确定目标数据库已经有了和源数据库相同的表接口,建议选择 “none” 以节省时间。 + +任务在运行过程中会保存进度信息到硬盘上,因此如果暂停任务后重新启动,或任务自动从异常中自动恢复,任务并不会从头开始进行。 + +更多选项建议详细阅读创建任务页面每个表单字段的说明。 + + + +## 具体步骤 + +首先,点击左侧“数据写入”菜单,然后点击右侧新“增数据源”按钮。 +![](./migrate-step1.png) + +然后输入任务名称,比如 “migrate-test”, 最后选择类型“TDengine2”。此时,表单切换为从 TDengine2 迁移数据专用的表单,包含了大量选项,每种选项都有详细的说明,如下图所示。 + +![](./migrate-step2.png) +![](./migrate-step3.png) +![](./migrate-step4.png) + +点击“提交”按钮提交任务后,回到“数据源”任务列表页面,可以监控任务的运行情况。 \ No newline at end of file diff --git a/docs/zh/06-advanced/05-data-in/02-tmq.md b/docs/zh/06-advanced/05-data-in/02-tmq.md new file mode 100644 index 0000000000..c3e32fff27 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/02-tmq.md @@ -0,0 +1,72 @@ +--- +title: "TDengine3" +sidebar_label: "TDengine3" +--- + +本文讲述如何使用 Explorer 订阅另一个集群的数据到本集群。 + +## 准备工作 + +在源集群创建订阅所需的 Topic, 可以订阅整个库、超级表 或子表。本示例中我们演示订阅一个名为 test 的数据库。 + +### 第一步:进入“数据订阅”页面 +打开源集群的 Explorer 界面, 点击左侧“数据订阅”菜单,然后点击“添加新主题”。 + +![准备一](./tmq-pre1.png) + +### 第二步: 添加新主题 +输入主题名称,选择要订阅的数据库。 + +![准备二](./tmq-pre2.png) + +### 第三步:复制主题的 DSN + +点击“创建”按钮,回到主题列表复制主题的 **DSN** 备用。 + +![准备三](./tmq-pre3.png) + +## 创建订阅任务 + +### 第一步: 进入“新增数据源”页面 +1. 点击左侧“数据写入”菜单 +2. 点击“新增数据源” +![步骤一](./tmq-step1.png) + +### 第二步:输入数据源信息 +1. 输入任务名称 +2. 选择任务类型“TDengine3” +3. 选择目标数据库 +4. 粘贴准备步骤复制的 DSN 到 **Topic DSN** 一栏。例如:tmq+ws://root:taosdata@localhost:6041/topic +5. 完成以上步骤点击“连通性检查”按钮,测试与源端的连通性 +![步骤二](./tmq-step2.png) + +### 第三步:填写订阅设置并提交任务 + +1. 选择订阅初始位置。可配置从最早数据(earliest)或最晚(latest)数据开始订阅,默认为 earliest +2. 设置超时时间。支持单位 ms(毫秒),s(秒),m(分钟),h(小时),d(天),M(月),y(年) +3. 设置订阅组 ID。订阅组 ID 是用于标识一个订阅组的任意字符串,最大长度为 192。同一个订阅组内的订阅者共享消费进度。不指定情况下将使用随机生成的 group ID。 +4. 设置客户端 ID。客户端 ID 是一个用于标识客户端的任意字符串,最大长度为 192。 +5. 同步已落盘数据。如启用,可以同步已经落盘到 TSDB 时序数据存储文件中(即不在 WAL 中)的数据。如关闭,则只同步尚未落盘(即保存在 WAL 中)的数据。 +6. 同步删表操作。如启用则会同步删表操作到目标数据库。 +7. 同步删数据操作。如启用则会同步删数据操作到目标数据库。 +8. 压缩。启用 WebSocket 压缩支持,以降低网络带宽占用。 +9. 点击“提交按钮”, 提交任务 +![步骤三](./tmq-step3.png) + + +## 监控任务运行情况 + +提交任务后,回到数据源页面可以查看任务状态。任务先会被加入执行队列,稍后就开始运行。 +![步骤四](./tmq-step4.png) + +点击 “查看”按钮,可以监控任务的动态统计信息。 +![步骤五](./tmq-step5.png) + +也可以点击左侧折叠按钮,展开任务的活动信息。如果任务运行异常,此处可以看到详细的说明。 +![步骤六](./tmq-step6.png) + +## 高级用法 + +1. FROM DSN 支持多个 Topic,多个 Topic 的名字用逗号分割。例如: `tmq+ws://root:taosdata@localhost:6041/topic1,topic2,topic3` +2. 在 FROM DSN 中,也可以用数据库名称、超级表名称或子表名称代替 Topic 名称。例如:`tmq+ws://root:taosdata@localhost:6041/db1,db2,db3`,此时不必要提前创建 Topic,taosX 将自动识别到使用的是数据库名称,并自动在源集群创建订阅数据库的 Topic。 +3. FROM DSN 支持 group.id 参数,以显式指定订阅用的 group ID。不指定情况下将使用随机生成的 group ID。 \ No newline at end of file diff --git a/docs/zh/06-advanced/05-data-in/03-pi.md b/docs/zh/06-advanced/05-data-in/03-pi.md new file mode 100644 index 0000000000..2cffb4ce0d --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/03-pi.md @@ -0,0 +1,66 @@ +--- +title: "PI" +sidebar_label: "PI" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 PI 系统迁移数据到当前 TDengine 集群。 + +## 功能概述 + +PI 系统是一套用于数据收集、查找、分析、传递和可视化的软件产品,可以作为管理实时数据和事件的企业级系统的基础架构。 + +taosX 可以通过 PI 连接器插件从 PI 系统中提取实时数据。 + +有两类 PI 任务: 实时同步任务和历史数据迁移任务,在任务下拉列表的名称分别对应 “PI” 和 “PI backfill”。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![kafka-01.png](./kafka-01.png) + +### 2. 配置基本信息 + +在 **名称** 中输入任务名称,如:“test”; + +在 **类型** 下拉列表中选择 **PI** 或 **PI backfill**。 + +如果 taosX 服务运行在 PI 系统所在或可直连的服务器上(依赖 PI AF SDK),**代理** 是不必须的,否则,需要配置 **代理** :在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 ,跟随提示进行代理的配置。即:taosX 或其代理需要部署在可直接连接 PI 系统的主机上。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。 + +![basic.png](./pic/pi-01-agent.png) + +### 3. 配置连接信息 + +PI 连接器支持两种连接方式: + +1. **PI Data Archive Only**: 不使用 AF 模式。此模式下直接填写 **PI 服务名**(服务器地址,通常使用主机名)。 + + ![archive-only](./pic/pi-02-connect-archive-only.png) +2. **PI Data Archive and Asset Framework (AF) Server**: 使用 AF SDK。此模式下除配置服务名外,还需要配置PI 系统(AF Server) 名称 (hostname) 和 AF 数据库名。 + + ![archive-only](./pic/pi-03-connect-af.png) + +点击 **连通性检查** 按钮,检查数据源是否可用。 + +### 4. 配置数据模型 + +这一部分,我们用一个 csv 文件配置 PI 的数据模型到 TDengine 的数据模型的映射规则。这里所说的映射规则包含 3 方面内容: + +1. 定义源数据范围,即哪些点或哪些模板需要同步到 TDengine。 +2. 定义过滤规则,即符合什么条件的数据才需要同步到 TDengine。 +3. 定义转换规则,即对原始数据做什么样的变换后再写入 TDengine。 + +如果您不知道具体怎么操作,可以点击“下载默认配置”按钮,下载得到的 csv 文件有详细的使用说明。 + +### 5. 其他配置 + +其余的配置,比较重要的是: + +1. 对于 PI 任务,配置“重启补偿时间”,如果任务意外中断,重启时配置这个参数非常有用,它会让 taosX 自动 backfill 一段时间的数据。 +2. 对于 PI backfill 任务,需要配置 backfill 的开始和结束时间。 + +高级配置部分可以配置连接器日志的级别、批次大小、和批次延迟。用于 Debug 和 性能优化。 \ No newline at end of file diff --git a/docs/zh/06-advanced/05-data-in/05-opcua.md b/docs/zh/06-advanced/05-data-in/05-opcua.md new file mode 100644 index 0000000000..66e3e6ee22 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/05-opcua.md @@ -0,0 +1,210 @@ +--- +title: "OPC-UA" +sidebar_label: "OPC-UA" +--- +本节讲述如何通过 Explorer 界面创建数据迁移任务,从 OPC-UA 服务器同步数据到当前 TDengine 集群。 + +## 功能概述 + +OPC 是工业自动化领域和其他行业中安全可靠地交换数据的互操作标准之一。 + +OPC-UA 是经典 OPC 规范的下一代标准,是一个平台无关的面向服务的架构规范,集成了现有 OPC Classic 规范的所有功能,提供了一条迁移到更安全和可扩展解决方案的路径。 + +TDengine 可以高效地从 OPC-UA 服务器读取数据并将其写入 TDengine,以实现实时数据入库。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![add.png](./pic/opcua-01-add.png) + +### 2. 配置基本信息 + +在 **名称** 中输入任务名称,例如针对环境温湿度监控的任务,取名为 **environment-monitoring**。 + +在 **类型** 下拉列表中选择 **OPC-UA**。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。 + +![basic.png](./pic/opcua-01-basic.png) + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 **OPC-UA 服务地址**,例如:`127.0.0.1:5000`,并配置数据传输安全模式,有三种安全模式可选: + +1. None:通信数据以明文形式传输。 +2. Sign:使用数字签名对通信数据进行验证,保护数据完整性。 +3. SignAndEncrypt:使用数字签名对通信数据进行验证,并使用加密算法对数据进行加密,以保证数据的完整性、真实性和保密性。 + +如果安全模式选择了 Sign 或者 SignAndEncrypt,则必须选择有效的安全策略。安全策略定义了如何实现安全模式中的加密和验证机制,包括使用的加密算法、密钥长度、数字证书等。可选的安全策略有: + +1. None:只能在安全模式为 None 时可选。 +2. Basic128Rsa15:使用 RSA 算法和128位的密钥长度对通信数据进行签名或加密。 +3. Basic256:使用 AES 算法和256位的密钥长度对通信数据进行签名或加密。 +4. Basic256Sha256:使用 AES 算法和256位的密钥长度,并使用 SHA-256 算法对数字签名进行加密。 +5. Aes128Sha256RsaOaep:使用 AES-128 算法进行通信数据的加解密,并使用 SHA-256 算法对数字签名进行加密,并使用 RSA 算法和 OAEP 模式用于加解密对称通信密钥。 +6. Aes256Sha256RsaPss:使用 AES-256 算法进行通信数据的加解密,并使用 SHA-256 算法对数字签名进行加密,并使用 RSA 算法和 PSS 模式用于加解密对称通信密钥。 + +![endpoint.png](./pic/opcua-02-endpoint.png) + +### 4. 选择认证方式 + +如下图所示,切换 tab 可选择不同的认证方式,可选的认证方式有: + +1. 匿名 +2. 用户名 +3. 证书访问:可以和安全通信证书相同,也可以用不同的证书。 + +![auth](./pic/opcua-04-auth.png) + +配置好连接属性和认证方式后,点击 **连通性检查** 按钮,检查数据源是否可用。如果使用安全通信证书或认证证书,则证书必须在 OPC UA 服务端被信任,否则依然无法通过。 + +### 5. 配置点位集 + +**点位集** 可选择使用 CSV 文件模板或 **选择所有点位**。 + +#### 5.1. 上传 CSV 配置文件 + +您可以下载 CSV 空模板并按模板配置点位信息,然后上传 CSV 配置文件来配置点位;或者根据所配置的筛选条件下载数据点位,并以 CSV +模板所制定的格式下载。 + +CSV 文件有如下规则: + +1. 文件编码 + +用户上传的 CSV 文件的编码格式必须为以下格式中的一种: + +(1) UTF-8 with BOM + +(2) UTF-8(即:UTF-8 without BOM) + +2. Header 配置规则 + +Header 是 CSV 文件的第一行,规则如下: + +(1) CSV 的 Header 中可以配置以下列: + + +| 序号 | 列名 | 描述 | 是否必填 | 默认行为 | +| ---- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | point_id | 数据点位在 OPC UA 服务器上的 id | 是 | 无 | +| 2 | stable | 数据点位在 TDengine 中对应的超级表 | 是 | 无 | +| 3 | tbname | 数据点位在 TDengine 中对应的子表 | 是 | 无 | +| 4 | enable | 是否采集该点位的数据 | 否 | 使用统一的默认值`1`作为 enable 的值 | +| 5 | value_col | 数据点位采集值在 TDengine 中对应的列名 | 否 | 使用统一的默认值`val` 作为 value_col 的值 | +| 6 | value_transform | 数据点位采集值在 taosX 中执行的变换函数 | 否 | 统一不进行采集值的 transform | +| 7 | type | 数据点位采集值的数据类型 | 否 | 统一使用采集值的原始类型作为 TDengine 中的数据类型 | +| 8 | quality_col | 数据点位采集值质量在 TDengine 中对应的列名 | 否 | 统一不在 TDengine 添加 quality 列 | +| 9 | ts_col | 数据点位的原始时间戳在 TDengine 中对应的时间戳列 | 否 | ts_col 和 received_ts_col 都非空时,使用前者作为时间戳列;ts_col 和 received_ts_col 有一列非空时,使用不为空的列作时间戳列;ts_col 和 received_ts_col 都为空时,使用数据点位原始时间戳作 TDengine 中的时间戳列,且列名为默认值`ts`。 | +| 10 | received_ts_col | 接收到该点位采集值时的时间戳在 TDengine 中对应的时间戳列 | 否 | 同上 | +| 11 | ts_transform | 数据点位时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位原始时间戳的 transform | +| 12 | received_ts_transform | 数据点位接收时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位接收时间戳的 transform | +| 13 | tag::VARCHAR(200)::name | 数据点位在 TDengine 中对应的 Tag 列。其中`tag` 为保留关键字,表示该列为一个 tag 列;`VARCHAR(200)` 表示该 tag 的类型,也可以是其它合法的类型;`name` 是该 tag 的实际名称。 | 否 | 配置 1 个以上的 tag 列,则使用配置的 tag 列;没有配置任何 tag 列,且 stable 在 TDengine 中存在,使用 TDengine 中的 stable 的 tag;没有配置任何 tag 列,且 stable 在 TDengine 中不存在,则默认自动添加以下 2 个 tag 列:tag::VARCHAR(256)::point_id 和 tag::VARCHAR(256)::point_name | + +(2) CSV Header 中,不能有重复的列; + +(3) CSV Header 中,类似`tag::VARCHAR(200)::name`这样的列可以配置多个,对应 TDengine 中的多个 Tag,但 Tag 的名称不能重复。 + +(4) CSV Header 中,列的顺序不影响 CSV 文件校验规则; + +(5) CSV Header 中,可以配置不在上表中的列,例如:序号,这些列会被自动忽略。 + +3. Row 配置规则 + +CSV 文件中的每个 Row 配置一个 OPC 数据点位。Row 的规则如下: + +(1) 与 Header 中的列有如下对应关系 + + +| 序号 | Header 中的列 | 值的类型 | 值的范围 | 是否必填 | 默认值 | +| ---- | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------ | +| 1 | point_id | String | 类似`ns=3;i=1005`这样的字符串,要满足 OPC UA 的 ID 的规范,即:包含 ns 和 id 部分 | 是 | | +| 2 | enable | int | 0:不采集该点位,且在 OPC DataIn 任务开始前,删除 TDengine 中点位对应的子表;1:采集该点位,在 OPC DataIn 任务开始前,不删除子表。 | 否 | 1 | +| 3 | stable | String | 符合 TDengine 超级表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换如果存在`{type}`,则:CSV 文件的 type 不为空,使用 type 的值进行替换CSV 文件的 type 为空,使用采集值的原始类型进行替换 | 是 | | +| 4 | tbname | String | 符合 TDengine 子表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换对于 OPC UA:如果存在`{ns}`,使用 point_id 中的 ns 替换如果存在`{id}`,使用 point_id 中的 id 替换对于 OPC DA:如果存在`{tag_name}`,使用 tag_name 替换 | 是 | | +| 5 | value_col | String | 符合 TDengine 命名规范的列名 | 否 | val | +| 6 | value_transform | String | 符合 Rhai 引擎的计算表达式,例如:`(val + 10) / 1000 * 2.0`,`log(val) + 10`等; | 否 | None | +| 7 | type | String | 支持类型包括:b/bool/i8/tinyint/i16/small/inti32/int/i64/bigint/u8/tinyint unsigned/u16/smallint unsigned/u32/int unsigned/u64/bigint unsigned/f32/float/f64/double/timestamp/timestamp(ms)/timestamp(us)/timestamp(ns)/json | 否 | 数据点位采集值的原始类型 | +| 8 | quality_col | String | 符合 TDengine 命名规范的列名 | 否 | None | +| 9 | ts_col | String | 符合 TDengine 命名规范的列名 | 否 | ts | +| 10 | received_ts_col | String | 符合 TDengine 命名规范的列名 | 否 | rts | +| 11 | ts_transform | String | 支持 +、-、*、/、% 操作符,例如:ts / 1000 * 1000,将一个 ms 单位的时间戳的最后 3 位置为 0;ts + 8 * 3600 * 1000,将一个 ms 精度的时间戳,增加 8 小时;ts - 8 * 3600 * 1000,将一个 ms 精度的时间戳,减去 8 小时; | 否 | None | +| 12 | received_ts_transform | String | 否 | None | | +| 13 | tag::VARCHAR(200)::name | String | tag 里的值,当 tag 的类型是 VARCHAR 时,可以是中文 | 否 | NULL | + +(2) point_id 在整个 DataIn 任务中是唯一的,即:在一个 OPC DataIn 任务中,一个数据点位只能被写入到 TDengine 的一张子表。如果需要将一个数据点位写入多张子表,需要建多个 OPC DataIn 任务; + +(3) 当 point_id 不同,但 tbname 相同时,value_col 必须不同。这种配置能够将不同数据类型的多个点位的数据写入同一张子表中不同的列。这种方式对应“OPC 数据入 TDengine 宽表”的使用场景。 + +4. 其他规则 + +(1) 如果 Header 和 Row 的列数不一致,校验失败,提示用户不满足要求的行号; + +(2) Header 在首行,且不能为空; + +(3) 至少有一个数据点; + +#### 5.2. 选择数据点位 + +可以通过配置 **根节点ID**、**命名空间**、**正则匹配** 等条件,对点位进行筛选。 + +通过配置 **超级表名**、**表名称**,指定数据要写入的超级表、子表。 + +配置**主键列**,选择 origin_ts 表示使用 OPC 点位数据的原始时间戳作 TDengine 中的主键;选择 received_ts 表示使用数据的接收时间戳作 TDengine 中的主键。配置**主键别名**,指定 TDengine 时间戳列的名称。 + +![point.png](./pic/opcua-06-point.png) + +### 6. 采集配置 + +在采集配置中,配置当前任务的采集模式、采集间隔、采集超时等选项。 + +![connect](./pic/opcua-07-collect.png) + +如上图所示,其中: + +- **采集模式**:可使用 `subscribe` 或 `observe` 模式。 + - `subscribe`:订阅模式,变更时上报数据并写入 TDengine。 + - `observe`:按照`采集间隔`时长,轮询读取点位最新值并写入 TDengine。 +- 采集间隔:默认为 10 秒,数据点位采集间隔,从上次采集数据结束后开始计时,轮询读取点位最新值并写入 TDengine。 +- **采集超时**:向 OPC 服务器读取点位数据时如果超过设定时间未返回数据,则读取失败,默认为 10 秒。 + +当 **点位集** 中使用 **选择数据点位** 方式时,采集配置中可以配置 **点位更新模式** 和 **点位更新间隔** 来启用动态点位更新。**动态点位更新** 是指,在任务运行期间,OPC Server增加或删除了点位后,符合条件的点位会自动添加到当前任务中,不需要重启 OPC 任务。 + +- 点位更新模式:可选择 `None`、`Append`、`Update`三种。 + - None:不开启动态点位更新; + - Append:开启动态点位更新,但只追加; + - Update:开启动态点位更新,追加或删除; +- 点位更新间隔:在“点位更新模式”为 `Append` 和 `Update` 时生效。单位:秒,默认值是 600,最小值:60,最大值:2147483647。 + +### 7. 高级选项 + +![advance options](./pic/opcua-07-advance.png) + +如上图所示,配置高级选项对性能、日志等进行更加详尽的优化。 + +**日志级别** 默认为 `info`,可选项有 `error`、`warn`、`info`、`debug`、`trace`。 + +在 **最大写入并发数** 中设置写入 taosX 的最大并发数限制。默认值:0,表示 auto,自动配置并发数。 + +在 **批次大小** 中设置每次写入的批次大小,即:单次发送的最大消息数量。 + +在 **批次延时** 中设置单次发送最大延时(单位为秒),当超时结束时,只要有数据,即使不满足**批次大小**,也立即发送。 + +在 **保存原始数据** 中选择是否保存原始数据。默认值:否。 + +当保存原始数据时,以下 2 个参数配置生效。 + +在 **最大保留天数** 中设置原始数据的最大保留天数。 + +在 **原始数据存储目录** 中设置原始数据保存路径。若使用 Agent ,则存储路径指的是 Agent 所在服务器上路径,否则是 taosX 服务器上路径。路径中可使用占位符 `$DATA_DIR` 和 `:id` 作为路径中的一部分。 + +- Linux 平台,$DATA_DIR 为 /var/lib/taos/taosx,默认情况下存储路径为 `/var/lib/taos/taosx/tasks//rawdata` 。 +- Widonws 平台, $DATA_DIR 为 C:\TDengine\data\taosx,默认情况下存储路径为 `C:\TDengine\data\taosx\tasks\\rawdata` 。 + +### 8. 创建完成 + +点击 **提交** 按钮,完成创建 OPC UA 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/06-opcda.md b/docs/zh/06-advanced/05-data-in/06-opcda.md new file mode 100644 index 0000000000..54717a198d --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/06-opcda.md @@ -0,0 +1,184 @@ +--- +title: "OPC-DA" +sidebar_label: "OPC-DA" +--- +本节讲述如何通过 Explorer 界面创建数据迁移任务,从 OPC-DA 服务器同步数据到当前 TDengine 集群。 + +## 功能概述 + +OPC是工业自动化领域和其他行业中安全可靠地交换数据的互操作标准之一。 + +OPC DA(数据访问)是一种经典的基于COM的规范,仅适用于Windows。尽管OPC DA不是最新和最高效的数据通信规范,但它被广泛使用。这主要是因为一些旧设备只支持OPC DA。 + +TDengine 可以高效地从 OPC-DA 服务器读取数据并将其写入 TDengine,以实现实时数据入库。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![add.png](./pic/opcda-01-add.png) + +### 2. 配置基本信息 + +在 **名称** 中输入任务名称,例如针对环境温湿度监控的任务,取名为 **environment-monitoring**。 + +在 **类型** 下拉列表中选择 **OPC-DA**。 + +如果 taosX 服务运行在 OPC-DA 所在服务器上,**代理** 不是必须的,否则需要配置 **代理** :在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 ,跟随提示进行代理的配置。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。 + +![basic.png](./pic/opcda-01-basic.png) + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 **OPC-DA 服务地址**,例如:`127.0.0.1/Matrikon.OPC.Simulation.1`,并配置认证方式。 + +点击 **连通性检查** 按钮,检查数据源是否可用。 + +![endpoint.png](./pic/opcda-02-endpoint.png) + +### 4. 配置点位集 + +**点位集** 可选择使用 CSV 文件模板或 **选择所有点位**。 + +#### 4.1. 上传 CSV 配置文件 + +您可以下载 CSV 空模板并按模板配置点位信息,然后上传 CSV 配置文件来配置点位;或者根据所配置的筛选条件下载数据点位,并以 CSV 模板所制定的格式下载。 + +CSV 文件有如下规则: + +1. 文件编码 + +用户上传的 CSV 文件的编码格式必须为以下格式中的一种: + +(1) UTF-8 with BOM + +(2) UTF-8(即:UTF-8 without BOM) + +2. Header 配置规则 + +Header 是 CSV 文件的第一行,规则如下: + +(1) CSV 的 Header 中可以配置以下列: + + +| 序号 | 列名 | 描述 | 是否必填 | 默认行为 | +| ---- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | tag_name | 数据点位在 OPC DA 服务器上的 id | 是 | 无 | +| 2 | stable | 数据点位在 TDengine 中对应的超级表 | 是 | 无 | +| 3 | tbname | 数据点位在 TDengine 中对应的子表 | 是 | 无 | +| 4 | enable | 是否采集该点位的数据 | 否 | 使用统一的默认值`1`作为 enable 的值 | +| 5 | value_col | 数据点位采集值在 TDengine 中对应的列名 | 否 | 使用统一的默认值`val` 作为 value_col 的值 | +| 6 | value_transform | 数据点位采集值在 taosX 中执行的变换函数 | 否 | 统一不进行采集值的 transform | +| 7 | type | 数据点位采集值的数据类型 | 否 | 统一使用采集值的原始类型作为 TDengine 中的数据类型 | +| 8 | quality_col | 数据点位采集值质量在 TDengine 中对应的列名 | 否 | 统一不在 TDengine 添加 quality 列 | +| 9 | ts_col | 数据点位的原始时间戳在 TDengine 中对应的时间戳列 | 否 | ts_col 和 received_ts_col 都非空时,使用前者作为时间戳列;ts_col 和 received_ts_col 有一列非空时,使用不为空的列作时间戳列;ts_col 和 received_ts_col 都为空时,使用数据点位原始时间戳作 TDengine 中的时间戳列,且列名为默认值ts。 | +| 10 | received_ts_col | 接收到该点位采集值时的时间戳在 TDengine 中对应的时间戳列 | 否 | | +| 11 | ts_transform | 数据点位时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位原始时间戳的 transform | +| 12 | received_ts_transform | 数据点位接收时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位接收时间戳的 transform | +| 13 | tag::VARCHAR(200)::name | 数据点位在 TDengine 中对应的 Tag 列。其中`tag` 为保留关键字,表示该列为一个 tag 列;`VARCHAR(200)` 表示该 tag 的类型,也可以是其它合法的类型;`name` 是该 tag 的实际名称。 | 否 | 配置 1 个以上的 tag 列,则使用配置的 tag 列;没有配置任何 tag 列,且 stable 在 TDengine 中存在,使用 TDengine 中的 stable 的 tag;没有配置任何 tag 列,且 stable 在 TDengine 中不存在,则默认自动添加以下 2 个 tag 列:tag::VARCHAR(256)::point_idtag::VARCHAR(256)::point_name | + +(2) CSV Header 中,不能有重复的列; + +(3) CSV Header 中,类似`tag::VARCHAR(200)::name`这样的列可以配置多个,对应 TDengine 中的多个 Tag,但 Tag 的名称不能重复。 + +(4) CSV Header 中,列的顺序不影响 CSV 文件校验规则; + +(5) CSV Header 中,可以配置不在上表中的列,例如:序号,这些列会被自动忽略。 + +3. Row 配置规则 + +CSV 文件中的每个 Row 配置一个 OPC 数据点位。Row 的规则如下: + +(1) 与 Header 中的列有如下对应关系 + + +| 序号 | Header 中的列 | 值的类型 | 值的范围 | 是否必填 | 默认值 | +| ---- | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------ | +| 1 | tag_name | String | 类似`root.parent.temperature`这样的字符串,要满足 OPC DA 的 ID 规范 | 是 | | +| 2 | enable | int | 0:不采集该点位,且在 OPC DataIn 任务开始前,删除 TDengine 中点位对应的子表;1:采集该点位,在 OPC DataIn 任务开始前,不删除子表。 | 否 | 1 | +| 3 | stable | String | 符合 TDengine 超级表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换如果存在`{type}`,则:CSV 文件的 type 不为空,使用 type 的值进行替换CSV 文件的 type 为空,使用采集值的原始类型进行替换 | 是 | | +| 4 | tbname | String | 符合 TDengine 子表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换对于 OPC UA:如果存在`{ns}`,使用 point_id 中的 ns 替换如果存在`{id}`,使用 point_id 中的 id 替换对于 OPC DA:如果存在`{tag_name}`,使用 tag_name 替换 | 是 | | +| 5 | value_col | String | 符合 TDengine 命名规范的列名 | 否 | val | +| 6 | value_transform | String | 符合 Rhai 引擎的计算表达式,例如:`(val + 10) / 1000 * 2.0`,`log(val) + 10`等; | 否 | None | +| 7 | type | String | 支持类型包括:b/bool/i8/tinyint/i16/smallint/i32/int/i64/bigint/u8/tinyint unsigned/u16/smallint unsigned/u32/int unsigned/u64/bigint unsigned/f32/floatf64/double/timestamp/timestamp(ms)/timestamp(us)/timestamp(ns)/json | 否 | 数据点位采集值的原始类型 | +| 8 | quality_col | String | 符合 TDengine 命名规范的列名 | 否 | None | +| 9 | ts_col | String | 符合 TDengine 命名规范的列名 | 否 | ts | +| 10 | received_ts_col | String | 符合 TDengine 命名规范的列名 | 否 | rts | +| 11 | ts_transform | String | 支持 +、-、*、/、% 操作符,例如:ts / 1000 * 1000,将一个 ms 单位的时间戳的最后 3 位置为 0;ts + 8 * 3600 * 1000,将一个 ms 精度的时间戳,增加 8 小时;ts - 8 * 3600 * 1000,将一个 ms 精度的时间戳,减去 8 小时; | 否 | None | +| 12 | received_ts_transform | String | 否 | None | | +| 13 | tag::VARCHAR(200)::name | String | tag 里的值,当 tag 的类型是 VARCHAR 时,可以是中文 | 否 | NULL | + +(2) tag_name 在整个 DataIn 任务中是唯一的,即:在一个 OPC DataIn 任务中,一个数据点位只能被写入到 TDengine 的一张子表。如果需要将一个数据点位写入多张子表,需要建多个 OPC DataIn 任务; + +(3) 当 tag_name 不同,但 tbname 相同时,value_col 必须不同。这种配置能够将不同数据类型的多个点位的数据写入同一张子表中不同的列。这种方式对应 “OPC 数据入 TDengine 宽表”的使用场景。 + +4. 其他规则 + +(1) 如果 Header 和 Row 的列数不一致,校验失败,提示用户不满足要求的行号; + +(2) Header 在首行,且不能为空; + +(3) Row 为 1 行以上; + +#### 4.2. 选择数据点位 + +可以通过配置 **根节点ID** 和 **正则匹配** 作为过滤条件,对点位进行筛选。 + +通过配置 **超级表名**、**表名称**,指定数据要写入的超级表、子表。 + +配置**主键列**,选择 origin_ts 表示使用 OPC 点位数据的原始时间戳作 TDengine 中的主键;选择 received_ts 表示使用数据的接收时间戳作 TDengine 中的主键。配置**主键别名**,指定 TDengine 时间戳列的名称。 + +![point.png](./pic/opcda-06-point.png) + + +### 5. 采集配置 +在采集配置中,配置当前任务的采集间隔、连接超时、采集超时等选项。 + +![collect](./pic/opcda-07-collect.png) + +如图所示,其中: + +- **连接超时**:配置连接 OPC 服务器超时时间,默认为 10 秒。 +- **采集超时**:向 OPC 服务器读取点位数据时如果超过设定时间未返回数据,则读取失败,默认为 10 秒。 +- **采集间隔**:默认为 10 秒,数据点位采集间隔,从上次采集数据结束后开始计时,轮询读取点位最新值并写入 TDengine。 + +当 **点位集** 中使用 **选择数据点位** 方式时,采集配置中可以配置 **点位更新模式** 和 **点位更新间隔** 来启用动态点位更新。**动态点位更新** 是指,在任务运行期间,OPC Server增加或删除了点位后,符合条件的点位会自动添加到当前任务中,不需要重启 OPC 任务。 + +- 点位更新模式:可选择 `None`、`Append`、`Update`三种。 + - None:不开启动态点位更新; + - Append:开启动态点位更新,但只追加; + - Update:开启动态点位更新,追加或删除; +- 点位更新间隔:在“点位更新模式”为 `Append` 和 `Update` 时生效。单位:秒,默认值是 600,最小值:60,最大值:2147483647。 + +### 6. 高级选项 + +![advance options](./pic/opcua-07-advance.png) + +如上图所示,配置高级选项对性能、日志等进行更加详尽的优化。 + +**日志级别** 默认为 `info`,可选项有 `error`、`warn`、`info`、`debug`、`trace`。 + +在 **最大写入并发数** 中设置写入 taosX 的最大并发数限制。默认值:0,表示 auto,自动配置并发数。 + +在 **批次大小** 中设置每次写入的批次大小,即:单次发送的最大消息数量。 + +在 **批次延时** 中设置单次发送最大延时(单位为秒),当超时结束时,只要有数据,即使不满足**批次大小**,也立即发送。 + +在 **保存原始数据** 中选择是否保存原始数据。默认值:否。 + +当保存原始数据时,以下 2 个参数配置生效。 + +在 **最大保留天数** 中设置原始数据的最大保留天数。 + +在 **原始数据存储目录** 中设置原始数据保存路径。若使用 Agent ,则存储路径指的是 Agent 所在服务器上路径,否则是 taosX 服务器上路径。路径中可使用占位符 `$DATA_DIR` 和 `:id` 作为路径中的一部分。 + +- Linux 平台,$DATA_DIR 为 /var/lib/taos/taosx,默认情况下存储路径为 `/var/lib/taos/taosx/tasks//rawdata` 。 +- Widonws 平台, $DATA_DIR 为 C:\TDengine\data\taosx,默认情况下存储路径为 `C:\TDengine\data\taosx\tasks\\rawdata` 。 + +### 7. 创建完成 + +点击 **提交** 按钮,完成创建 OPC DA 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/07-mqtt.md b/docs/zh/06-advanced/05-data-in/07-mqtt.md new file mode 100644 index 0000000000..ed71e6364b --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/07-mqtt.md @@ -0,0 +1,145 @@ +--- +title: "MQTT" +sidebar_label: "MQTT" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 MQTT 迁移数据到当前 TDengine 集群。 + +## 功能概述 + +MQTT 表示 Message Queuing Telemetry Transport (消息队列遥测传输)。它是一种轻量级的消息协议,易于实现和使用。 + +TDengine 可以通过 MQTT 连接器从 MQTT 代理订阅数据并将其写入 TDengine,以实现实时数据流入库。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![mqtt-01.png](./mqtt-01.png) + +### 2. 配置基本信息 + +在 **名称** 中输入任务名称,如:“test_mqtt”; + +在 **类型** 下拉列表中选择 **MQTT**。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** +按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** +按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。 + +![mqtt-02.png](./mqtt-02.png) + +### 3. 配置连接和认证信息 + +在 **MQTT地址** 中填写 MQTT 代理的地址,例如:`192.168.1.42:1883` + +在 **用户** 中填写 MQTT 代理的用户名。 + +在 **密码** 中填写 MQTT 代理的密码。 + +点击 **连通性检查** 按钮,检查数据源是否可用。 + +![mqtt-03.png](./mqtt-03.png) + +### 4. 配置 SSL 证书 + +如果 MQTT 代理使用了 SSL 证书,需要在 **SSL证书** 中上传证书文件。 + +![mqtt-04.png](./mqtt-04.png) + +### 5. 配置采集信息 + +在 **采集配置** 区域填写采集任务相关的配置参数。 + +在 **MQTT 协议** 下拉列表中选择 MQTT 协议版本。有三个选项:`3.1`、`3.1.1`、`5.0`。 默认值为 3.1。 + +在 **Client ID** 中填写客户端 ID。建多个任务时,同个 MQTT 地址下,Client ID 必须是唯一的。 + +在 **Keep Alive** 中输入保持活动间隔。如果代理在保持活动间隔内没有收到来自客户端的任何消息,它将假定客户端已断开连接,并关闭连接。 +保持活动间隔是指客户端和代理之间协商的时间间隔,用于检测客户端是否活动。如果客户端在保持活动间隔内没有向代理发送消息,则代理将断开连接。 + +在 **Clean Session** 中,选择是否清除会话。默认值为 true。 + +在 **订阅主题及 QoS 配置** 中填写要消费的 Topic 名称。使用如下格式设置: `topic1::0,topic2::1`。 + +![mqtt-05.png](./mqtt-05.png) + +### 6. 配置 MQTT Payload 解析 + +在 **MQTT Payload 解析** 区域填写 Payload 解析相关的配置参数。 + +taosX 可以使用 JSON 提取器解析数据,并允许用户在数据库中指定数据模型,包括,指定表名称和超级表名,设置普通列和标签列等。 + + +#### 6.1 解析 +有三种获取示例数据的方法: + +点击 **从服务器检索** 按钮,从 MQTT 获取示例数据。 + +点击 **文件上传** 按钮,上传 CSV 文件,获取示例数据。 + +在 **消息体** 中填写 MQTT 消息体中的示例数据,例如:`{"id": 1, "message": "hello-word"}{"id": 2, "message": "hello-word"}`。之后会使用这条示例数据来配置提取和过滤条件。 + +![mqtt-06.png](./mqtt-06.png) + +点击 **放大镜图标** 可查看预览解析结果。 + +![mqtt-07.png](./mqtt-07.png) + +#### 6.2 字段拆分 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 message 字段拆分成 `message_0` 和 `message_1` 这2 个字段,选择 split 提取器,seperator 填写 -, number 填写 2。 + +![mqtt-08.png](./mqtt-08.png) + +点击 **删除**,可以删除当前提取规则。 + +点击 **新增**,可以添加更多提取规则。 + +点击 **放大镜图标** 可查看预览提取/拆分结果。 + +![mqtt-09.png](./mqtt-09.png) + +#### 6.3 数据过滤 + +在 **过滤** 中,填写过滤条件,例如:填写`id != 1`,则只有 id 不为 1 的数据才会被写入 TDengine。 + +![mqtt-10.png](./mqtt-10.png) + +点击 **删除**,可以删除当前过滤规则。 + +点击 **放大镜图标** 可查看预览过滤结果。 + +![mqtt-11.png](./mqtt-11.png) + +#### 6.4 表映射 + +在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮 [创建超级表](#创建超级表) 。 + +在 **映射** 中,填写目标超级表中的子表名称,例如:`t_{id}`。根据需求填写映射规则,其中 mapping 支持设置缺省值。 + +![mqtt-12.png](./mqtt-12.png) + +点击 **预览**,可以查看映射的结果。 + +![mqtt-13.png](./mqtt-13.png) + +### 7. 高级选项 + +在 **日志级别** 下拉列表中选择日志级别。有五个选项:`TRACE`、`DEBUG`、`INFO`、`WARN`、`ERROR`。 默认值为 INFO。 + +当 **保存原始数据时**,以下2个参数配置生效。 + +在 **最大保留天数** 中设置原始数据的最大保留天数。 + +在 **原始数据存储目录** 中设置原始数据保存路径。 + +![mqtt-14](./mqtt-14.png) + +### 8. 创建完成 + +点击 **提交** 按钮,完成创建 MQTT 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/08-kafka.md b/docs/zh/06-advanced/05-data-in/08-kafka.md new file mode 100644 index 0000000000..482cbd46c9 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/08-kafka.md @@ -0,0 +1,139 @@ +--- +title: "Kafka" +sidebar_label: "Kafka" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 Kafka 迁移数据到当前 TDengine 集群。 + +## 功能概述 +Apache Kafka 是一个用于流处理、实时数据管道和大规模数据集成的开源分布式流系统。 + +TDengine 可以高效地从 Kafka 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据流入库。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![kafka-01.png](./kafka-01.png) + +### 2. 配置基本信息 + +在 **名称** 中输入任务名称,如:“test_kafka”; + +在 **类型** 下拉列表中选择 **Kafka**。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。 + +![kafka-02.png](./kafka-02.png) + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 **bootstrap-servers**,例如:`192.168.1.92:9092`。 + +![kafka-03.png](./kafka-03.png) + +### 4. 配置 SASL 认证机制 + +如果服务端开启了 SASL 认证机制,此处需要启用 SASL 并配置相关内容,目前支持 PLAIN/SCRAM-SHA-256/GSSAPI 三种认证机制,请按实际情况进行选择。 + +![kafka-04.png](./kafka-04.png) + +### 5. 配置 SSL 证书 + +如果服务端开启了 SSL 加密认证,此处需要启用 SSL 并配置相关内容。 + +![kafka-05.png](./kafka-05.png) + +### 6. 配置采集信息 + +在 **采集配置** 区域填写采集任务相关的配置参数。 + +在 **超时时间** 中填写超时时间。当从 Kafka 消费不到任何数据,超过 timeout 后,数据采集任务会退出。默认值是 0 ms。 当 timeout 设置为 0 时,会一直等待,直到有数据可用,或者发生错误。 + +在 **主题** 中填写要消费的 Topic 名称。可以配置多个 Topic , Topic 之间用逗号分隔。例如:`tp1,tp2`。 + +在 **Offset** 的下拉列表中选择从哪个 Offset 开始消费数据。有三个选项:`Earliest`、`Latest`、`ByTime(ms)`。 默认值为Earliest。 + +* Earliest:用于请求最早的 offset。 +* Latest:用于请求最晚的 offset。 + +在 **获取数据的最大时长** 中设置获取消息时等待数据不足的最长时间(以毫秒为单位),默认值为 100ms。 + +点击 **连通性检查** 按钮,检查数据源是否可用。 + +![kafka-06.png](./kafka-06.png) + +### 7. 配置 Payload 解析 + +在 **Payload 解析** 区域填写 Payload 解析相关的配置参数。 + +#### 7.1 解析 +有三种获取示例数据的方法: + +点击 **从服务器检索** 按钮,从 Kafka 获取示例数据。 + +点击 **文件上传** 按钮,上传 CSV 文件,获取示例数据。 + +在 **消息体** 中填写 Kafka 消息体中的示例数据,例如:`{"id": 1, "message": "hello-word"}{"id": 2, "message": "hello-word"}`。之后会使用这条示例数据来配置提取和过滤条件。 + +![kafka-07.png](./kafka-07.png) + +点击 **放大镜图标** 可查看预览解析结果。 + +![kafka-08.png](./kafka-08.png) + +#### 7.2 字段拆分 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 message 字段拆分成 `message_0` 和 `message_1` 这2个字段,选择 split 提取器,seperator 填写 -, number 填写2。 + +点击 **新增**,可以添加更多提取规则。 + +点击 **删除**,可以删除当前提取规则。 + +![kafka-09.png](./kafka-09.png) + +点击 **放大镜图标** 可查看预览提取/拆分结果。 + +![kafka-10.png](./kafka-10.png) + +#### 7.3 数据过滤 + +在 **过滤** 中,填写过滤条件,例如:填写 `id != 1`,则只有 id 不为 1 的数据才会被写入 TDengine。 + +点击 **新增**,可以添加更多过滤规则。 + +点击 **删除**,可以删除当前过滤规则。 + +![kafka-11.png](./kafka-11.png) + +点击 **放大镜图标** 可查看预览过滤结果。 + +![kafka-12.png](./kafka-12.png) + +#### 7.4 表映射 + +在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮 [创建超级表](#创建超级表) 。 + +在 **映射** 中,填写目标超级表中的子表名称,例如:`t_{id}`。根据需求填写映射规则,其中 mapping 支持设置缺省值。 + +![kafka-13.png](./kafka-13.png) + +点击 **预览**,可以查看映射的结果。 + +![kafka-14.png](./kafka-14.png) + +### 8. 配置高级选项 + +**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示: + +![kafka-15.png](./kafka-15.png) + +![kafka-16.png](./kafka-16.png) + +### 9. 创建完成 + +点击 **提交** 按钮,完成创建 Kafka 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 \ No newline at end of file diff --git a/docs/zh/06-advanced/05-data-in/09-influxdb.md b/docs/zh/06-advanced/05-data-in/09-influxdb.md new file mode 100644 index 0000000000..c62877ab93 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/09-influxdb.md @@ -0,0 +1,84 @@ +--- +title: "InfluxDB" +sidebar_label: "InfluxDB" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 InfluxDB 迁移数据到当前 TDengine 集群。 + +## 功能概述 + +InfluxDB 是一种流行的开源时间序列数据库,它针对处理大量时间序列数据进行了优化。TDengine 可以通过 InfluxDB 连接器高效地读取 InfluxDB 中的数据,并将其写入 TDengine,以实现历史数据迁移或实时数据同步。 + +任务在运行过程中会保存进度信息到硬盘上,因此如果暂停任务后重新启动,或任务自动从异常中自动恢复,任务并不会从头开始进行。更多选项建议详细阅读创建任务页面每个表单字段的说明。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示: + +![InfluxDB-01zh-EnterDataSourcePage.png](./pic/InfluxDB-01zh-EnterDataSourcePage.png "进入新增数据源页面") + +### 2. 配置基本信息 + +在 **名称** 字段中输入任务名称,例如 *`test_influxdb_01`* 。 + +选择 **类型** 下拉框中的 *`InfluxDB`* ,如下图所示(选择完成后页面中的字段会发生变化)。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。 + +**目标数据库** 是必填项,由于 InfluxDB 存储数据的时间精度可以同时存在秒、毫秒、微秒与纳秒等,所以这里需要选择一个 *`纳秒精度的数据库`* ,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。 + +![InfluxDB-02zh-SelectTheTypeAsInfluxDB.png](./pic/InfluxDB-02zh-SelectTheTypeAsInfluxDB.png "选择数据源类型为InfluxDB") + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 *`源 InfluxDB 数据库的连接信息`*,如下图所示: + +![InfluxDB-03zh-FillInTheConnectionInformation.png](./pic/InfluxDB-03zh-FillInTheConnectionInformation.png "填写源InfluxDB数据库的连接信息") + +### 4. 配置认证信息 + +在 **认证** 区域有两个选项卡,*`1.x 版本`* 与 *`2.x 版本`* ,这是由于不同版本的 InfluxDB 数据库的鉴权参数不同且 API 存在较大差异,请根据实际情况进行选择: + *`1.x 版本`* + **版本** 在下拉框中选择源 InfluxDB 数据库的版本。 + **用户** 输入源 InfluxDB 数据库的用户,该用户必须在该组织中拥有读取权限。 + **密码** 输入源 InfluxDB 数据库中上方用户的登陆密码。 + ![InfluxDB-04zh-SelectVersion1.x.png](./pic/InfluxDB-04zh-SelectVersion1.x.png "选择1.x版本") + *`2.x 版本`* + **版本** 在下拉框中选择源 InfluxDB 数据库的版本。 + **组织 ID** 输入源 InfluxDB 数据库的组织 ID,它是一个由十六进制字符组成的字符串,而不是组织名称,可以从 InfluxDB 控制台的 Organization->About 页面获取。 + **令牌 Token**:输入源 InfluxDB 数据库的访问令牌,该令牌必须在该组织中拥有读取权限。 + **添加数据库保留策略** 这是一个 *`是/否`* 的开关项,InfluxQL 需要数据库与保留策略(DBRP)的组合才能查询数据,InfluxDB 的 Cloud 版本及某些 2.x 版本需要人工添加这个映射关系,打开这个开关,连接器可以在执行任务时自动添加。 + ![InfluxDB-05zh-SelectVersion2.x.png](./pic/InfluxDB-05zh-SelectVersion2.x.png "选择2.x版本") + +在 **认证** 区域的下方有一个 **连通性检查** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 InfluxDB 数据库的数据,检查结果如下图所示: + **失败** + ![InfluxDB-06zh-ConnectivityCheckFailed.png](./pic/InfluxDB-06zh-ConnectivityCheckFailed.png "连通性检查失败") + **成功** + ![InfluxDB-07zh-ConnectivityCheckSuccessful.png](./pic/InfluxDB-07zh-ConnectivityCheckSuccessful.png "连通性检查成功") + +### 5. 配置任务信息 + +**桶 Bucket** 是 InfluxDB 数据库中存储数据的一个命名空间,每个任务需要指定一个 Bucket,用户需要先点击右侧的 **获取 Schema** 按钮获取当前源 InfluxDB 数据库的数据结构信息,然后在下拉框中进行选择,如下图所示: +![InfluxDB-08zh-GetSchemaAndSelectOneBucket.png](./pic/InfluxDB-08zh-GetSchemaAndSelectOneBucket.png "获取数据结构信息并选择一个Bucket") + +**测量值 Measurements** 是非必填项,用户可以在下拉框中选择一个或多个需要同步的 Measurements,未指定则同步全部。 + +**起始时间** 是指源 InfluxDB 数据库中数据的起始时间,起始时间的时区使用 explorer 所选时区,此项为必填字段。 + +**结束时间** 是指源 InfluxDB 数据库中数据的截止时间,当不指定结束时间时,将持续进行最新数据的同步;当指定结束时间时,将只同步到这个结束时间为止,结束时间的时区使用 explorer 所选时区,此项为可选字段。 + +**每次读取的时间范围(分钟)** 是连接器从源 InfluxDB 数据库中单次读取数据时的最大时间范围,这是一个很重要的参数,需要用户结合服务器性能及数据存储密度综合决定。如果范围过小,则同步任务的执行速度会很慢;如果范围过大,则可能因内存使用过高而导致 InfluxDB 数据库系统故障。 + +**延迟(秒)** 是一个范围在 1 到 30 之间的整数,为了消除乱序数据的影响,TDengine 总是等待这里指定的时长,然后才读取数据。 + +### 6. 配置高级选项 + +**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示: +![InfluxDB-09zh-AdvancedOptionsExpandButton.png](./pic/InfluxDB-09zh-AdvancedOptionsExpandButton.png "高级选项展开按钮") +![InfluxDB-10zh-AdvancedOptionsExpand.png](./pic/InfluxDB-10zh-AdvancedOptionsExpand.png "高级选项展开按钮") + +### 7. 创建完成 + +点击 **提交** 按钮,完成创建 InfluxDB 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 \ No newline at end of file diff --git a/docs/zh/06-advanced/05-data-in/10-opentsdb.md b/docs/zh/06-advanced/05-data-in/10-opentsdb.md new file mode 100644 index 0000000000..6f8798cb3f --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/10-opentsdb.md @@ -0,0 +1,67 @@ +--- +title: "OpenTSDB" +sidebar_label: "OpenTSDB" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 OpenTSDB 迁移数据到当前 TDengine 集群。 + +## 功能概述 + +OpenTSDB 是一个架构在 HBase 系统之上的实时监控信息收集和展示平台。TDengine 可以通过 OpenTSDB 连接器高效地读取 OpenTSDB 中的数据,并将其写入 TDengine,以实现历史数据迁移或实时数据同步。 + +任务在运行过程中会保存进度信息到硬盘上,因此如果暂停任务后重新启动,或任务自动从异常中自动恢复,任务并不会从头开始进行。更多选项建议详细阅读创建任务页面每个表单字段的说明。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示: + +![OpenTSDB-01zh-EnterDataSourcePage.png](./pic/OpenTSDB-01zh-EnterDataSourcePage.png "进入新增数据源页面") + +### 2. 配置基本信息 + +在 **名称** 字段中输入任务名称,例如 *`test_opentsdb_01`* 。 + +选择 **类型** 下拉框中的 *`OpenTSDB`* ,如下图所示(选择完成后页面中的字段会发生变化)。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。 + +**目标数据库** 是必填项,由于 OpenTSDB 存储数据的时间精度是毫秒,所以这里需要选择一个 *`毫秒精度的数据库`* ,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。 + +![OpenTSDB-02zh-SelectTheTypeAsOpenTSDB.png](./pic/OpenTSDB-02zh-SelectTheTypeAsOpenTSDB.png "选择数据源类型为OpenTSDB") + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 *`源 OpenTSDB 数据库的连接信息`*,如下图所示: + +![OpenTSDB-03zh-FillInTheConnectionInformation.png](./pic/OpenTSDB-03zh-FillInTheConnectionInformation.png "填写源OpenTSDB数据库的连接信息") + +在 **连接配置** 区域的下方有一个 **连通性检查** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 OpenTSDB 数据库的数据,检查结果如下图所示: + **失败** + ![OpenTSDB-04zh-ConnectivityCheckFailed.png](./pic/OpenTSDB-04zh-ConnectivityCheckFailed.png "连通性检查失败") + **成功** + ![OpenTSDB-05zh-ConnectivityCheckSuccessful.png](./pic/OpenTSDB-05zh-ConnectivityCheckSuccessful.png "连通性检查成功") + +### 4. 配置任务信息 + +**物理量 Metrics** 是 OpenTSDB 数据库中存储数据的物理量,用户可以指定多个需要同步的物理量,未指定则同步数据库中的全部数据。如果用户指定物理量,需要先点击右侧的 **获取 Metrics** 按钮获取当前源 OpenTSDB 数据库的所有物理量信息,然后在下拉框中进行选择,如下图所示: +![OpenTSDB-06zh-GetAndSelectMetrics.png](./pic/OpenTSDB-06zh-GetAndSelectMetrics.png "获取并选择物理量") + +**起始时间** 是指源 OpenTSDB 数据库中数据的起始时间,起始时间的时区使用 explorer 所选时区,此项为必填字段。 + +**结束时间** 是指源 OpenTSDB 数据库中数据的截止时间,当不指定结束时间时,将持续进行最新数据的同步;当指定结束时间时,将只同步到这个结束时间为止,结束时间的时区使用 explorer 所选时区,此项为可选字段。 + +**每次读取的时间范围(分钟)** 是连接器从源 OpenTSDB 数据库中单次读取数据时的最大时间范围,这是一个很重要的参数,需要用户结合服务器性能及数据存储密度综合决定。如果范围过小,则同步任务的执行速度会很慢;如果范围过大,则可能因内存使用过高而导致 OpenTSDB 数据库系统故障。 + +**延迟(秒)** 是一个范围在 1 到 30 之间的整数,为了消除乱序数据的影响,TDengine 总是等待这里指定的时长,然后才读取数据。 + +### 5. 配置高级选项 + +**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示: +![OpenTSDB-07zh-AdvancedOptionsExpandButton.png](./pic/OpenTSDB-07zh-AdvancedOptionsExpandButton.png "高级选项展开按钮") +![OpenTSDB-08zh-AdvancedOptionsExpand.png](./pic/OpenTSDB-08zh-AdvancedOptionsExpand.png "高级选项展开按钮") + +### 6. 创建完成 + +点击 **提交** 按钮,完成创建 OpenTSDB 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 \ No newline at end of file diff --git a/docs/zh/06-advanced/05-data-in/11-csv.md b/docs/zh/06-advanced/05-data-in/11-csv.md new file mode 100644 index 0000000000..2c42772f75 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/11-csv.md @@ -0,0 +1,87 @@ +--- +title: "CSV" +sidebar_label: "CSV" +--- +本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 CSV 迁移数据到当前 TDengine 集群。 + +## 功能概述 +导入一个或多个 CSV 文件数据到 TDengine。 + +## 创建任务 +### 1. 新增数据源 +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![csv-01.png](./csv-01.png) + +### 2. 配置基本信息 +在 **名称** 中输入任务名称,如:“test_csv”; + +在 **类型** 下拉列表中选择 **CSV**。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。 + +![csv-02.png](./csv-02.png) + +### 3. 配置 CSV 选项 +在 **包含表头** 区域点击开启或关闭,如果包含表头,则第一行将被视为列信息。 + +在 **忽略前 N 行** 区域填写 N,表示忽略 CSV 文件的前 N 行。 + +在 **字段分隔符** 区域进行选择,CSV 字段之间的分隔符,默认是 “,” 。 + +在 **字段引用符** 区域进行选择,当 CSV 字段中包含分隔符或换行符时,用于包围字段内容,以确保整个字段被正确识别,默认是 "“"。 + +在 **注释前缀符** 区域进行选择,当 CSV 文件中某行以此处指定的字符开头,则忽略该行默认是 “#”。 + +![csv-03.png](./csv-03.png) + +### 4. 配置解析 CSV 文件 +在本地上传 CSV 文件,例如:test-json.csv,之后会使用这条示例 csv 文件来配置提取和过滤条件。 + +#### 4.1 解析 + +点击 **选取文件** 后,选择 test-json.csv,点击 **解析** 预览识别的列。 + +![csv-04.png](./csv-04.png) + +**预览解析结果** + +![csv-05.png](./csv-05.png) + +#### 4.2 字段拆分 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 message 字段拆分成 `text_0` 和 `text_1` 这2个字段,选择 split 提取器,seperator 填写 -, number 填写2。 +点击 **删除**,可以删除当前提取规则。 +点击 **新增**,可以添加更多提取规则。 + +![csv-06.png](./csv-06.png) + +点击 **放大镜图标** 可预览提取或拆分结果。 + +![csv-07.png](./csv-07.png) + + + +#### 4.3 表映射 + +在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮 [创建超级表](#创建超级表) 。 + +在 **映射** 中,填写目标超级表中的子表名称,例如:`t_${groupid}`。 + +![csv-10.png](./csv-10.png) + +点击 **预览**,可以预览映射的结果。 + +![csv-11.png](./csv-11.png) + + +### 5. 创建完成 + +点击 **提交** 按钮,完成创建 CSV 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/12-avevaHistorian.md b/docs/zh/06-advanced/05-data-in/12-avevaHistorian.md new file mode 100644 index 0000000000..9ccc008d43 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/12-avevaHistorian.md @@ -0,0 +1,138 @@ +--- +title: "AVEVA Historian" +sidebar_label: "AVEVA Historian" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移/数据同步任务, 从 AVEVA Historian 迁移/同步数据到当前 TDengine 集群。 + +## 功能概述 + +AVEVA Historian 是一款工业大数据分析软件,前身为 Wonderware。可以捕获并存储高保真工业大数据,释放受制约的潜力,从而改善运营。 + +TDengine 可以高效地从 AVEVA Historian 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![avevaHistorian-01.png](pic/avevaHistorian-01.png) + +### 2. 配置基本信息 + +在 **名称** 中输入任务名称,如:“test_avevaHistorian”; + +在 **类型** 下拉列表中选择 **AVEVA Historian**。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。 + +![avevaHistorian-02.png](pic/avevaHistorian-02.png) + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 **Server 地址** 和 **Server 端口**。 + +在 **认证** 区域填写 **用户名** 和 **密码**。 + +点击 **连通性检查** 按钮,检查数据源是否可用。 + +![avevaHistorian-03.png](pic/avevaHistorian-03.png) + +### 4. 配置采集信息 + +在 **采集配置** 区域填写采集任务相关的配置参数。 + +#### 4.1. 迁移数据 + +如果要进行数据迁移,需要配置以下参数: + +在 **采集模式** 下拉列表中选择 **migrate**。 + +在 **标签** 中,填写要迁移的标签列表,以逗号(,)分隔。 + +在 **标签组大小** 中,填写标签组的大小。 + +在 **任务开始时间** 中,填写数据迁移任务的开始时间。 + +在 **任务结束时间** 中,填写数据迁移任务的结束时间。 + +在 **查询的时间窗口** 中,填写一个时间间隔,数据迁移任务将按照这个时间间隔划分时间窗口。 + +![avevaHistorian-04.png](pic/avevaHistorian-04.png) + +#### 4.2. 同步 History 表的数据 + +如果要同步 **Runtime.dbo.History** 表中的数据到 TDengine,需要配置以下参数: + +在 **采集模式** 下拉列表中选择 **synchronize**。 + +在 **表** 中选择 **Runtime.dbo.History**。 + +在 **标签** 中,填写要迁移的标签列表,以逗号(,)分隔。 + +在 **标签组大小** 中,填写标签组的大小。 + +在 **任务开始时间** 中,填写数据迁移任务的开始时间。 + +在 **查询的时间窗口** 中,填写一个时间间隔,历史数据部分将按照这个时间间隔划分时间窗口。 + +在 **实时同步的时间间隔** 中,填写一个时间间隔,实时数据部分将按照这个时间间隔轮询数据。 + +在 **乱序时间上限** 中,填写一个时间间隔,实时数据同步过程中,超过这个时间才入库的数据可能会丢失。 + +![avevaHistorian-05.png](pic/avevaHistorian-05.png) + +#### 4.3. 同步 Live 表的数据 + +如果要同步 **Runtime.dbo.Live** 表中的数据到 TDengine,需要配置以下参数: + +在 **采集模式** 下拉列表中选择 **synchronize**。 + +在 **表** 中选择 **Runtime.dbo.Live**。 + +在 **标签** 中,填写要迁移的标签列表,以逗号(,)分隔。 + +在 **实时同步的时间间隔** 中,填写一个时间间隔,实时数据部分将按照这个时间间隔轮询数据。 + +![avevaHistorian-06.png](pic/avevaHistorian-06.png) + +### 5. 配置数据映射 + +在 **数据映射** 区域填写数据映射相关的配置参数。 + +点击 **从服务器检索** 按钮,从 AVEVA Historian 服务器获取示例数据。 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。 + +在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。 + +在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。 + +点击 **预览**,可以查看映射的结果。 + +![avevaHistorian-07.png](pic/avevaHistorian-07.png) + +### 6. 配置高级选项 + +在 **高级选项** 区域填写高级选项相关的配置参数。 + +在 **最大读取并发数** 中设置最大读取并发数。默认值:0,表示 auto,自动配置并发数。 + +在 **批次大小** 中设置每次写入的批次大小,即:单次发送的最大消息数量。 + +在 **保存原始数据** 中选择是否保存原始数据。默认值:否。 + +当保存原始数据时,以下2个参数配置生效。 + +在 **最大保留天数** 中设置原始数据的最大保留天数。 + +在 **原始数据存储目录** 中设置原始数据保存路径。 + +![avevaHistorian-08.png](pic/avevaHistorian-08.png) + +### 7. 创建完成 + +点击 **提交** 按钮,完成创建任务。提交任务后,回到 [数据写入](../../explorer/#数据写入) 页面可以查看任务状态。 diff --git a/docs/zh/06-advanced/05-data-in/13-mysql.md b/docs/zh/06-advanced/05-data-in/13-mysql.md new file mode 100644 index 0000000000..bf90307bb9 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/13-mysql.md @@ -0,0 +1,103 @@ +--- +title: "MySQL" +sidebar_label: "MySQL" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务,从 MySQL 迁移数据到当前 TDengine 集群。 + +## 功能概述 + +MySQL 是最流行的关系型数据库之一。很多系统都曾经或正在使用 MySQL 数据库存储物联网、工业互联网等设备上报的数据。但随着接入系统的设备量日益增长、用户对数据实时性反馈的要求也越来越高,MySQL 已经无法满足业务需求。从 TDengine 企业版 3.3.0.0 开始,TDengine 可以高效地从 MySQL 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步,解决业务面临的技术痛点。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示: + +![InfluxDB-01zh-EnterDataSourcePage.png](./pic/InfluxDB-01zh-EnterDataSourcePage.png "进入新增数据源页面") + +### 2. 配置基本信息 + +在 **名称** 字段中输入任务名称,例如 *`test_mysql_01`* 。 + +选择 **类型** 下拉框中的 *`MySQL`* ,如下图所示(选择完成后页面中的字段会发生变化)。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理。 + +**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。 + +![mysql-01.png](./pic/mysql-01.png "选择数据源类型为 MySQL") + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 *`源 MySQL 数据库的连接信息`*,如下图所示: + +![mysql-02.png](./pic/mysql-02.png "填写源 MySQL数据库的连接信息") + +### 4. 配置认证信息 + +**用户** 输入源 MySQL 数据库的用户,该用户必须在该组织中拥有读取权限。 + +**密码** 输入源 MySQL 数据库中上方用户的登陆密码。 + +![ mysql-03.png](./pic/mysql-03.png "配置认证信息") + +### 5. 配置连接选项 + +**字符集** 设置连接的字符集。默认字符集为 utf8mb4 。MySQL 5.5.3 支持此功能。如果需要连接到旧版本,建议改为 utf8。 +可选项有 utf8、utf8mb4、utf16、utf32、gbk、big5、latin1、ascii。 + +**SSL 模式** 设置是否与服务器协商安全 SSL TCP/IP 连接或以何种优先级进行协商。默认值是 PREFERRED。可选项有 DISABLED、PREFERRED、REQUIRED。 + +![ mysql-04.png](./pic/mysql-04.png "配置连接选项") + +然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 MySQL 数据库的数据。 + +### 6. 配置 SQL 查询 + +**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。 +> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式: +> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800 +> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00 +> 3. `${start_date}`、`${end_date}`:表示仅日期,如:2024-03-14 + +**起始时间** 迁移数据的起始时间,此项为必填字段。 + +**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。 + +**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。 + +**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。 + +![ mysql-05.png](./pic/mysql-05.png "配置数据采集") + +### 7. 配置数据映射 + +在 **数据映射** 区域填写数据映射相关的配置参数。 + +点击 **从服务器检索** 按钮,从 MySQL 服务器获取示例数据。 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。 + +在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。 + +在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。 + +点击 **预览**,可以查看映射的结果。 + +![mysql-06.png](pic/mysql-06.png) + +### 8. 配置高级选项 + +**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示: + +**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。 + +**批次大小** 单次发送的最大消息数或行数。默认是 10000。 + +![mysql-07.png](pic/mysql-07.png) + +### 9. 创建完成 + +点击 **提交** 按钮,完成创建 MySQL 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/14-postgres.md b/docs/zh/06-advanced/05-data-in/14-postgres.md new file mode 100644 index 0000000000..5bd253072f --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/14-postgres.md @@ -0,0 +1,104 @@ +--- +title: "PostgreSql" +sidebar_label: "PostgreSql" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务,从 PostgreSql 迁移数据到当前 TDengine 集群。 + +## 功能概述 + +PostgreSQL 是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统,有很多在大型商业 RDBMS 中所具有的特性,包括事务、子选择、触发器、视图、外键引用完整性和复杂锁定功能。 + +TDengine 可以高效地从 PostgreSQL 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示: + +![PostgreSQL-01zh-EnterDataSourcePage.png](./pic/PostgreSQL-01zh-EnterDataSourcePage.png "进入新增数据源页面") + +### 2. 配置基本信息 + +在 **名称** 字段中输入任务名称,例如 *`test_postgres_01`* 。 + +选择 **类型** 下拉框中的 *`PostgreSQL`* ,如下图所示(选择完成后页面中的字段会发生变化)。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 。 + +**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。 + +![postgres-01.png](./pic/postgres-01.png "选择数据源类型为 PostgreSQL") + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 *`源 PostgreSQL 数据库的连接信息`*,如下图所示: + +![postgres-02.png](./pic/postgres-02.png "填写源 PostgreSQL 数据库的连接信息") + +### 4. 配置认证信息 + +**用户** 输入源 PostgreSQL 数据库的用户,该用户必须在该组织中拥有读取权限。 + +**密码** 输入源 PostgreSQL 数据库中上方用户的登陆密码。 + +![ postgres-03.png](./pic/postgres-03.png "配置认证信息") + +### 5. 配置连接选项 + +**应用名称** 设置应用程序名称,用于标识连接的应用程序。 + +**SSL 模式** 设置是否与服务器协商安全 SSL TCP/IP 连接或以何种优先级进行协商。默认值是 PREFER。可选项有 DISABLE、ALLOW、PREFER、REQUIRE。 + +![ postgres-04.png](./pic/postgres-04.png "配置连接选项") + +然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 PostgreSQL 数据库的数据。 + +### 6. 配置 SQL 查询 + +**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。 +> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式: +> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800 +> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00 +> 3. `${start_date}`、`${end_date}`:表示仅日期,如:2024-03-14 + +**起始时间** 迁移数据的起始时间,此项为必填字段。 + +**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。 + +**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。 + +**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。 + +![ postgres-05.png](./pic/postgres-05.png "配置数据采集") + +### 7. 配置数据映射 + +在 **数据映射** 区域填写数据映射相关的配置参数。 + +点击 **从服务器检索** 按钮,从 PostgreSQL 服务器获取示例数据。 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。 + +在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。 + +在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。 + +点击 **预览**,可以查看映射的结果。 + +![postgres-06.png](pic/postgres-06.png) + +### 8. 配置高级选项 + +**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示: + +**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。 + +**批次大小** 单次发送的最大消息数或行数。默认是 10000。 + +![postgres-07.png](pic/postgres-07.png) + +### 9. 创建完成 + +点击 **提交** 按钮,完成创建 PostgreSQL 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/15-oracle.md b/docs/zh/06-advanced/05-data-in/15-oracle.md new file mode 100644 index 0000000000..522e0f1903 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/15-oracle.md @@ -0,0 +1,96 @@ +--- +title: "Oracle" +sidebar_label: "Oracle" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务,从 Oracle 迁移数据到当前 TDengine 集群。 + +## 功能概述 + +Oracle 数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。 + +TDengine 可以高效地从 Oracle 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示: + +![Oracle-01zh-EnterDataSourcePage.png](./pic/Oracle-01zh-EnterDataSourcePage.png "进入新增数据源页面") + +### 2. 配置基本信息 + +在 **名称** 字段中输入任务名称,例如 *`test_oracle_01`* 。 + +选择 **类型** 下拉框中的 *`Oracle`* ,如下图所示(选择完成后页面中的字段会发生变化)。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 。 + +**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。 + +![oracle-01.png](./pic/oracle-01.png "选择数据源类型为 Oracle") + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 *`源 Oracle 数据库的连接信息`*,如下图所示: + +![oracle-02.png](./pic/oracle-02.png "填写源 Oracle 数据库的连接信息") + +### 4. 配置认证信息 + +**用户** 输入源 Oracle 数据库的用户,该用户必须在该组织中拥有读取权限。 + +**密码** 输入源 Oracle 数据库中上方用户的登陆密码。 + +![ oracle-03.png](./pic/oracle-03.png "配置认证信息") + +然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 Oracle 数据库的数据。 + +### 5. 配置 SQL 查询 + +**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。 +> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式: +> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800 +> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00 +> 3. `${start_date}`、`${end_date}`:表示仅日期,但 Oracle 中没有纯日期类型,所以它会带零时零分零秒,如:2024-03-14 00:00:00,所以使用 `date <= ${end_date}` 时需要注意,它不能包含 2024-03-14 当天数据 + +**起始时间** 迁移数据的起始时间,此项为必填字段。 + +**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。 + +**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。 + +**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。 + +![ oracle-04.png](./pic/oracle-04.png "配置数据采集") + +### 6. 配置数据映射 + +在 **数据映射** 区域填写数据映射相关的配置参数。 + +点击 **从服务器检索** 按钮,从 Oracle 服务器获取示例数据。 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。 + +在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。 + +在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。 + +点击 **预览**,可以查看映射的结果。 + +![oracle-05.png](pic/oracle-05.png) + +### 7. 配置高级选项 + +**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示: + +**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。 + +**批次大小** 单次发送的最大消息数或行数。默认是 10000。 + +![oracle-06.png](pic/oracle-06.png) + +### 8. 创建完成 + +点击 **提交** 按钮,完成创建 Oracle 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/16-mssql.md b/docs/zh/06-advanced/05-data-in/16-mssql.md new file mode 100644 index 0000000000..7ab626142b --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/16-mssql.md @@ -0,0 +1,110 @@ +--- +title: "Microsoft SQL Server" +sidebar_label: "SQL Server" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移任务,从 Microsoft SQL Server 迁移数据到当前 TDengine 集群。 + +## 功能概述 + +Microsoft SQL Server 是最流行的关系型数据库之一。很多系统都曾经或正在使用 Microsoft SQL Server 数据库存储物联网、工业互联网等设备上报的数据。但随着接入系统的设备量日益增长、用户对数据实时性反馈的要求也越来越高,Microsoft SQL Server 已经无法满足业务需求。从 TDengine 企业版 3.3.2.0 开始,TDengine 可以高效地从 Microsoft SQL Server 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步,解决业务面临的技术痛点。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示: + +![InfluxDB-01zh-EnterDataSourcePage.png](./pic/InfluxDB-01zh-EnterDataSourcePage.png "进入新增数据源页面") + +### 2. 配置基本信息 + +在 **名称** 字段中输入任务名称,例如 *`test_mssql_01`* 。 + +选择 **类型** 下拉框中的 *`Microsoft SQL Server`* ,如下图所示(选择完成后页面中的字段会发生变化)。 + +**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理。 + +**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。 + +![mssql-01.png](./pic/mssql-01.png "选择数据源类型为 Microsoft SQL Server") + +### 3. 配置连接信息 + +在 **连接配置** 区域填写 *`源 Microsoft SQL Server 数据库的连接信息`*,如下图所示: + +![mssql-02.png](./pic/mssql-02.png "填写源 Microsoft SQL Server 数据库的连接信息") + +### 4. 配置认证信息 + +**用户** 输入源 Microsoft SQL Server 数据库的用户,该用户必须在该组织中拥有读取权限。 + +**密码** 输入源 Microsoft SQL Server 数据库中上方用户的登陆密码。 + +![ mssql-03.png](./pic/mssql-03.png "配置认证信息") + +### 5. 配置连接选项 + +**实例名称** 设置 Microsoft SQL Server 实例名称(在 SQL 浏览器中定义的实例名称,仅在 Windows 平台上可用,如果指定,端口将被替换为从 SQL 浏览器中返回的值)。 + +**应用名称** 设置应用程序名称,用于标识连接的应用程序。 + +**加密** 设置是否使用加密连接。默认值是 Off。可选项有 Off、On、NotSupported、Required。 + +**信任证书** 设置是否信任服务器证书,如果开启,则不会验证服务器证书,并按原样接受它(如果开启信任,将会隐藏下方`信任证书CA`字段)。 + +**信任证书CA** 设置是否信任服务器的证书 CA。如果上传 CA 文件,除了系统信任库之外,还将根据给定的 CA 证书验证服务器证书。 + +![ mssql-04.png](./pic/mssql-04.png "配置连接选项") + +然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 Microsoft SQL Server 数据库的数据。 + +### 6. 配置 SQL 查询 + +**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。 +> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式: +> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800 +> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00 +> 3. `${start_date}`、`${end_date}`:表示仅日期,如:2024-03-14 +> +> 注意:只有 `datetime2` 与 `datetimeoffset` 支持使用 start/end 查询,`datetime` 与 `smalldatetime` 只能使用 start_no_tz/end_no_tz 查询,而 `timestamp` 不能用作查询条件。 + +**起始时间** 迁移数据的起始时间,此项为必填字段。 + +**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。 + +**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。 + +**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。 + +![ mssql-05.png](./pic/mssql-05.png "配置数据采集") + +### 7. 配置数据映射 + +在 **数据映射** 区域填写数据映射相关的配置参数。 + +点击 **从服务器检索** 按钮,从 Microsoft SQL Server 服务器获取示例数据。 + +在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。 + +在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。 + +在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。 + +点击 **预览**,可以查看映射的结果。 + +![mssql-06.png](pic/mssql-06.png) + +### 8. 配置高级选项 + +**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示: + +**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。 + +**批次大小** 单次发送的最大消息数或行数。默认是 10000。 + +![mssql-07.png](pic/mssql-07.png) + +### 9. 创建完成 + +点击 **提交** 按钮,完成创建 Microsoft SQL Server 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。 diff --git a/docs/zh/06-advanced/05-data-in/_category_.yml b/docs/zh/06-advanced/05-data-in/_category_.yml new file mode 100644 index 0000000000..8a7f326b68 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/_category_.yml @@ -0,0 +1 @@ +label: 数据写入 \ No newline at end of file diff --git a/docs/zh/06-advanced/05-data-in/csv-01.png b/docs/zh/06-advanced/05-data-in/csv-01.png new file mode 100644 index 0000000000..a183e0dcef Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-02.png b/docs/zh/06-advanced/05-data-in/csv-02.png new file mode 100644 index 0000000000..909e7ff27c Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-03.png b/docs/zh/06-advanced/05-data-in/csv-03.png new file mode 100644 index 0000000000..4165469db5 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-04.png b/docs/zh/06-advanced/05-data-in/csv-04.png new file mode 100644 index 0000000000..189bdfa263 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-05.png b/docs/zh/06-advanced/05-data-in/csv-05.png new file mode 100644 index 0000000000..d7e2b51ccb Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-06.png b/docs/zh/06-advanced/05-data-in/csv-06.png new file mode 100644 index 0000000000..398d1dd903 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-07.png b/docs/zh/06-advanced/05-data-in/csv-07.png new file mode 100644 index 0000000000..7fd5ca4a89 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-07.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-10.png b/docs/zh/06-advanced/05-data-in/csv-10.png new file mode 100644 index 0000000000..c0bb68f373 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-10.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-11.png b/docs/zh/06-advanced/05-data-in/csv-11.png new file mode 100644 index 0000000000..268e4788ab Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-11.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-12.png b/docs/zh/06-advanced/05-data-in/csv-12.png new file mode 100644 index 0000000000..5a9f312b01 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-12.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-13.png b/docs/zh/06-advanced/05-data-in/csv-13.png new file mode 100644 index 0000000000..ed5108d3eb Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-13.png differ diff --git a/docs/zh/06-advanced/05-data-in/csv-14.png b/docs/zh/06-advanced/05-data-in/csv-14.png new file mode 100644 index 0000000000..e98d8ce334 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/csv-14.png differ diff --git a/docs/zh/06-advanced/data-in.png b/docs/zh/06-advanced/05-data-in/data-in.png similarity index 100% rename from docs/zh/06-advanced/data-in.png rename to docs/zh/06-advanced/05-data-in/data-in.png diff --git a/docs/zh/06-advanced/05-data-in.md b/docs/zh/06-advanced/05-data-in/index.md similarity index 98% rename from docs/zh/06-advanced/05-data-in.md rename to docs/zh/06-advanced/05-data-in/index.md index f78d1ebbf9..44402a23b8 100644 --- a/docs/zh/06-advanced/05-data-in.md +++ b/docs/zh/06-advanced/05-data-in/index.md @@ -1,9 +1,11 @@ --- -sidebar_label: 数据源接入 +sidebar_label: 数据写入 title: 零代码数据源接入 toc_max_heading_level: 4 --- +## 概述 + TDengine Enterprise 配备了一个强大的可视化数据管理工具—taosExplorer。借助 taosExplorer,用户只须在浏览器中简单配置,就能轻松地向 TDengine 提交任务,实现以零代码方式将来自不同数据源的数据无缝导入 TDengine。在导入过程中,TDengine 会对数据进行自动提取、过滤和转换,以保证导入的数据质量。通过这种零代码数据源接入方式,TDengine 成功转型为一个卓越的时序大数据汇聚平台。用户无须部署额外的 ETL 工具,从而大大简化整体架构的设计,提高了数据处理效率。 ## 支持的数据源 diff --git a/docs/zh/06-advanced/05-data-in/kafka-01.png b/docs/zh/06-advanced/05-data-in/kafka-01.png new file mode 100644 index 0000000000..386b2462ee Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-02.png b/docs/zh/06-advanced/05-data-in/kafka-02.png new file mode 100644 index 0000000000..127f457e49 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-03.png b/docs/zh/06-advanced/05-data-in/kafka-03.png new file mode 100644 index 0000000000..31a3ead3ed Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-04.png b/docs/zh/06-advanced/05-data-in/kafka-04.png new file mode 100644 index 0000000000..fae16a7c79 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-05.png b/docs/zh/06-advanced/05-data-in/kafka-05.png new file mode 100644 index 0000000000..6a6979d805 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-06.png b/docs/zh/06-advanced/05-data-in/kafka-06.png new file mode 100644 index 0000000000..5e3d414025 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-07.png b/docs/zh/06-advanced/05-data-in/kafka-07.png new file mode 100644 index 0000000000..771cd91f34 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-07.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-08.png b/docs/zh/06-advanced/05-data-in/kafka-08.png new file mode 100644 index 0000000000..0b0a735271 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-08.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-09.png b/docs/zh/06-advanced/05-data-in/kafka-09.png new file mode 100644 index 0000000000..8472788b60 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-09.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-10.png b/docs/zh/06-advanced/05-data-in/kafka-10.png new file mode 100644 index 0000000000..d41fd56b7d Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-10.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-11.png b/docs/zh/06-advanced/05-data-in/kafka-11.png new file mode 100644 index 0000000000..bc2c2e6296 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-11.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-12.png b/docs/zh/06-advanced/05-data-in/kafka-12.png new file mode 100644 index 0000000000..7063168293 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-12.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-13.png b/docs/zh/06-advanced/05-data-in/kafka-13.png new file mode 100644 index 0000000000..bbccee10a1 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-13.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-14.png b/docs/zh/06-advanced/05-data-in/kafka-14.png new file mode 100644 index 0000000000..b720d189ba Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-14.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-15.png b/docs/zh/06-advanced/05-data-in/kafka-15.png new file mode 100644 index 0000000000..96d593dad9 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-15.png differ diff --git a/docs/zh/06-advanced/05-data-in/kafka-16.png b/docs/zh/06-advanced/05-data-in/kafka-16.png new file mode 100644 index 0000000000..395453c410 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/kafka-16.png differ diff --git a/docs/zh/06-advanced/05-data-in/migrate-step1.png b/docs/zh/06-advanced/05-data-in/migrate-step1.png new file mode 100644 index 0000000000..e79fb60184 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/migrate-step1.png differ diff --git a/docs/zh/06-advanced/05-data-in/migrate-step2.png b/docs/zh/06-advanced/05-data-in/migrate-step2.png new file mode 100644 index 0000000000..54412d0536 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/migrate-step2.png differ diff --git a/docs/zh/06-advanced/05-data-in/migrate-step3.png b/docs/zh/06-advanced/05-data-in/migrate-step3.png new file mode 100644 index 0000000000..17b3024ca7 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/migrate-step3.png differ diff --git a/docs/zh/06-advanced/05-data-in/migrate-step4.png b/docs/zh/06-advanced/05-data-in/migrate-step4.png new file mode 100644 index 0000000000..e6b88ed080 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/migrate-step4.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-01.png b/docs/zh/06-advanced/05-data-in/mqtt-01.png new file mode 100644 index 0000000000..b3c2c99dca Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-02.png b/docs/zh/06-advanced/05-data-in/mqtt-02.png new file mode 100644 index 0000000000..5c25b27c67 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-03.png b/docs/zh/06-advanced/05-data-in/mqtt-03.png new file mode 100644 index 0000000000..c53da8f14d Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-04.png b/docs/zh/06-advanced/05-data-in/mqtt-04.png new file mode 100644 index 0000000000..430c5b8fef Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-05.png b/docs/zh/06-advanced/05-data-in/mqtt-05.png new file mode 100644 index 0000000000..e1f6bfd04d Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-06.png b/docs/zh/06-advanced/05-data-in/mqtt-06.png new file mode 100644 index 0000000000..771cd91f34 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-07.png b/docs/zh/06-advanced/05-data-in/mqtt-07.png new file mode 100644 index 0000000000..ceecbdd486 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-07.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-08.png b/docs/zh/06-advanced/05-data-in/mqtt-08.png new file mode 100644 index 0000000000..b6155412ea Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-08.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-09.png b/docs/zh/06-advanced/05-data-in/mqtt-09.png new file mode 100644 index 0000000000..8057c02786 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-09.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-10.png b/docs/zh/06-advanced/05-data-in/mqtt-10.png new file mode 100644 index 0000000000..d4e161d8c0 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-10.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-11.png b/docs/zh/06-advanced/05-data-in/mqtt-11.png new file mode 100644 index 0000000000..7322ef03a8 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-11.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-12.png b/docs/zh/06-advanced/05-data-in/mqtt-12.png new file mode 100644 index 0000000000..1f8ff587c0 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-12.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-13.png b/docs/zh/06-advanced/05-data-in/mqtt-13.png new file mode 100644 index 0000000000..6b60ccc959 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-13.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-14.png b/docs/zh/06-advanced/05-data-in/mqtt-14.png new file mode 100644 index 0000000000..b1fe456354 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-14.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-15.png b/docs/zh/06-advanced/05-data-in/mqtt-15.png new file mode 100644 index 0000000000..100e4e3ddc Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-15.png differ diff --git a/docs/zh/06-advanced/05-data-in/mqtt-16.png b/docs/zh/06-advanced/05-data-in/mqtt-16.png new file mode 100644 index 0000000000..3c93f0a944 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/mqtt-16.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-01zh-EnterDataSourcePage.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-01zh-EnterDataSourcePage.png new file mode 100644 index 0000000000..ca8107066f Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-01zh-EnterDataSourcePage.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-02zh-SelectTheTypeAsInfluxDB.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-02zh-SelectTheTypeAsInfluxDB.png new file mode 100644 index 0000000000..71393ec24e Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-02zh-SelectTheTypeAsInfluxDB.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-03zh-FillInTheConnectionInformation.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-03zh-FillInTheConnectionInformation.png new file mode 100644 index 0000000000..70c1ffe89e Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-03zh-FillInTheConnectionInformation.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-04zh-SelectVersion1.x.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-04zh-SelectVersion1.x.png new file mode 100644 index 0000000000..d3542a38a1 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-04zh-SelectVersion1.x.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-05zh-SelectVersion2.x.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-05zh-SelectVersion2.x.png new file mode 100644 index 0000000000..161705aa44 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-05zh-SelectVersion2.x.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-06zh-ConnectivityCheckFailed.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-06zh-ConnectivityCheckFailed.png new file mode 100644 index 0000000000..560d0003be Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-06zh-ConnectivityCheckFailed.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-07zh-ConnectivityCheckSuccessful.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-07zh-ConnectivityCheckSuccessful.png new file mode 100644 index 0000000000..db341c8c09 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-07zh-ConnectivityCheckSuccessful.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-08zh-GetSchemaAndSelectOneBucket.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-08zh-GetSchemaAndSelectOneBucket.png new file mode 100644 index 0000000000..21714b6b51 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-08zh-GetSchemaAndSelectOneBucket.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-09zh-AdvancedOptionsExpandButton.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-09zh-AdvancedOptionsExpandButton.png new file mode 100644 index 0000000000..f12692c506 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-09zh-AdvancedOptionsExpandButton.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/InfluxDB-10zh-AdvancedOptionsExpand.png b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-10zh-AdvancedOptionsExpand.png new file mode 100644 index 0000000000..02c3f73629 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/InfluxDB-10zh-AdvancedOptionsExpand.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-01zh-EnterDataSourcePage.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-01zh-EnterDataSourcePage.png new file mode 100644 index 0000000000..ca8107066f Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-01zh-EnterDataSourcePage.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-02zh-SelectTheTypeAsOpenTSDB.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-02zh-SelectTheTypeAsOpenTSDB.png new file mode 100644 index 0000000000..7b039fbe77 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-02zh-SelectTheTypeAsOpenTSDB.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-03zh-FillInTheConnectionInformation.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-03zh-FillInTheConnectionInformation.png new file mode 100644 index 0000000000..25f5aaca83 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-03zh-FillInTheConnectionInformation.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-04zh-ConnectivityCheckFailed.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-04zh-ConnectivityCheckFailed.png new file mode 100644 index 0000000000..e243cad970 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-04zh-ConnectivityCheckFailed.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-05zh-ConnectivityCheckSuccessful.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-05zh-ConnectivityCheckSuccessful.png new file mode 100644 index 0000000000..48ea25423f Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-05zh-ConnectivityCheckSuccessful.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-06zh-GetAndSelectMetrics.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-06zh-GetAndSelectMetrics.png new file mode 100644 index 0000000000..447ba589cc Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-06zh-GetAndSelectMetrics.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-07zh-AdvancedOptionsExpandButton.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-07zh-AdvancedOptionsExpandButton.png new file mode 100644 index 0000000000..65d6344e56 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-07zh-AdvancedOptionsExpandButton.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-08zh-AdvancedOptionsExpand.png b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-08zh-AdvancedOptionsExpand.png new file mode 100644 index 0000000000..1c57bc19af Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/OpenTSDB-08zh-AdvancedOptionsExpand.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/Oracle-01zh-EnterDataSourcePage.png b/docs/zh/06-advanced/05-data-in/pic/Oracle-01zh-EnterDataSourcePage.png new file mode 100644 index 0000000000..ca8107066f Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/Oracle-01zh-EnterDataSourcePage.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/PostgreSQL-01zh-EnterDataSourcePage.png b/docs/zh/06-advanced/05-data-in/pic/PostgreSQL-01zh-EnterDataSourcePage.png new file mode 100644 index 0000000000..ca8107066f Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/PostgreSQL-01zh-EnterDataSourcePage.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-01.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-01.png new file mode 100644 index 0000000000..a183e0dcef Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-02.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-02.png new file mode 100644 index 0000000000..edbaff6595 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-03.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-03.png new file mode 100644 index 0000000000..3183a02c26 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-04.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-04.png new file mode 100644 index 0000000000..15a126fe46 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-05.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-05.png new file mode 100644 index 0000000000..12380aa4b6 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-06.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-06.png new file mode 100644 index 0000000000..9a1533fe4d Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-07.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-07.png new file mode 100644 index 0000000000..6078db997e Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-07.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-08.png b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-08.png new file mode 100644 index 0000000000..d941b9b700 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/avevaHistorian-08.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mssql-01.png b/docs/zh/06-advanced/05-data-in/pic/mssql-01.png new file mode 100644 index 0000000000..c28061484f Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mssql-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mssql-02.png b/docs/zh/06-advanced/05-data-in/pic/mssql-02.png new file mode 100644 index 0000000000..75d3b4c058 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mssql-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mssql-03.png b/docs/zh/06-advanced/05-data-in/pic/mssql-03.png new file mode 100644 index 0000000000..43a4257021 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mssql-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mssql-04.png b/docs/zh/06-advanced/05-data-in/pic/mssql-04.png new file mode 100644 index 0000000000..6f91172d81 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mssql-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mssql-05.png b/docs/zh/06-advanced/05-data-in/pic/mssql-05.png new file mode 100644 index 0000000000..de12a55e06 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mssql-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mssql-06.png b/docs/zh/06-advanced/05-data-in/pic/mssql-06.png new file mode 100644 index 0000000000..28ccfd9d0b Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mssql-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mssql-07.png b/docs/zh/06-advanced/05-data-in/pic/mssql-07.png new file mode 100644 index 0000000000..6c1668481c Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mssql-07.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mysql-01.png b/docs/zh/06-advanced/05-data-in/pic/mysql-01.png new file mode 100644 index 0000000000..93520e4a6a Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mysql-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mysql-02.png b/docs/zh/06-advanced/05-data-in/pic/mysql-02.png new file mode 100644 index 0000000000..6385e61f12 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mysql-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mysql-03.png b/docs/zh/06-advanced/05-data-in/pic/mysql-03.png new file mode 100644 index 0000000000..4173723288 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mysql-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mysql-04.png b/docs/zh/06-advanced/05-data-in/pic/mysql-04.png new file mode 100644 index 0000000000..a708d9f782 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mysql-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mysql-05.png b/docs/zh/06-advanced/05-data-in/pic/mysql-05.png new file mode 100644 index 0000000000..e168d9e739 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mysql-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mysql-06.png b/docs/zh/06-advanced/05-data-in/pic/mysql-06.png new file mode 100644 index 0000000000..f815eb750e Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mysql-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/mysql-07.png b/docs/zh/06-advanced/05-data-in/pic/mysql-07.png new file mode 100644 index 0000000000..6c1668481c Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/mysql-07.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcda-01-add.png b/docs/zh/06-advanced/05-data-in/pic/opcda-01-add.png new file mode 100644 index 0000000000..386b2462ee Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcda-01-add.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcda-01-basic.png b/docs/zh/06-advanced/05-data-in/pic/opcda-01-basic.png new file mode 100644 index 0000000000..4c8808fd10 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcda-01-basic.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcda-02-endpoint.png b/docs/zh/06-advanced/05-data-in/pic/opcda-02-endpoint.png new file mode 100644 index 0000000000..d58e59f38a Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcda-02-endpoint.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcda-03-connect.png b/docs/zh/06-advanced/05-data-in/pic/opcda-03-connect.png new file mode 100644 index 0000000000..323e3adc6e Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcda-03-connect.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcda-05-csv.png b/docs/zh/06-advanced/05-data-in/pic/opcda-05-csv.png new file mode 100644 index 0000000000..8286355c0d Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcda-05-csv.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcda-06-point.png b/docs/zh/06-advanced/05-data-in/pic/opcda-06-point.png new file mode 100644 index 0000000000..9ab69fb386 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcda-06-point.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcda-07-collect.png b/docs/zh/06-advanced/05-data-in/pic/opcda-07-collect.png new file mode 100644 index 0000000000..5d59a5383b Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcda-07-collect.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-01-add.png b/docs/zh/06-advanced/05-data-in/pic/opcua-01-add.png new file mode 100644 index 0000000000..386b2462ee Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-01-add.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-01-basic.png b/docs/zh/06-advanced/05-data-in/pic/opcua-01-basic.png new file mode 100644 index 0000000000..dc2c994b2e Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-01-basic.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-02-endpoint.png b/docs/zh/06-advanced/05-data-in/pic/opcua-02-endpoint.png new file mode 100644 index 0000000000..0901431eea Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-02-endpoint.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-03-connect.png b/docs/zh/06-advanced/05-data-in/pic/opcua-03-connect.png new file mode 100644 index 0000000000..5654c99f9a Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-03-connect.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-04-auth.png b/docs/zh/06-advanced/05-data-in/pic/opcua-04-auth.png new file mode 100644 index 0000000000..51911fe88a Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-04-auth.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-05-csv.png b/docs/zh/06-advanced/05-data-in/pic/opcua-05-csv.png new file mode 100644 index 0000000000..40c1149c68 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-05-csv.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-06-point.png b/docs/zh/06-advanced/05-data-in/pic/opcua-06-point.png new file mode 100644 index 0000000000..783adae3be Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-06-point.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-07-advance.png b/docs/zh/06-advanced/05-data-in/pic/opcua-07-advance.png new file mode 100644 index 0000000000..6a96573fae Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-07-advance.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/opcua-07-collect.png b/docs/zh/06-advanced/05-data-in/pic/opcua-07-collect.png new file mode 100644 index 0000000000..8b878d60d0 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/opcua-07-collect.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/oracle-01.png b/docs/zh/06-advanced/05-data-in/pic/oracle-01.png new file mode 100644 index 0000000000..ed29c64183 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/oracle-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/oracle-02.png b/docs/zh/06-advanced/05-data-in/pic/oracle-02.png new file mode 100644 index 0000000000..21f778ded7 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/oracle-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/oracle-03.png b/docs/zh/06-advanced/05-data-in/pic/oracle-03.png new file mode 100644 index 0000000000..e8b5c48293 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/oracle-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/oracle-04.png b/docs/zh/06-advanced/05-data-in/pic/oracle-04.png new file mode 100644 index 0000000000..e168d9e739 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/oracle-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/oracle-05.png b/docs/zh/06-advanced/05-data-in/pic/oracle-05.png new file mode 100644 index 0000000000..129e39c8fd Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/oracle-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/oracle-06.png b/docs/zh/06-advanced/05-data-in/pic/oracle-06.png new file mode 100644 index 0000000000..0de5443f08 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/oracle-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/pi-01-agent.png b/docs/zh/06-advanced/05-data-in/pic/pi-01-agent.png new file mode 100644 index 0000000000..4ea3274ea5 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/pi-01-agent.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/pi-02-connect-archive-only.png b/docs/zh/06-advanced/05-data-in/pic/pi-02-connect-archive-only.png new file mode 100644 index 0000000000..dc530cb9ba Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/pi-02-connect-archive-only.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/pi-03-connect-af.png b/docs/zh/06-advanced/05-data-in/pic/pi-03-connect-af.png new file mode 100644 index 0000000000..e38fffc4b6 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/pi-03-connect-af.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/pi-04-points-single.png b/docs/zh/06-advanced/05-data-in/pic/pi-04-points-single.png new file mode 100644 index 0000000000..a7e2307650 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/pi-04-points-single.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/pi-05-options.png b/docs/zh/06-advanced/05-data-in/pic/pi-05-options.png new file mode 100644 index 0000000000..f8b75f027c Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/pi-05-options.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/postgres-01.png b/docs/zh/06-advanced/05-data-in/pic/postgres-01.png new file mode 100644 index 0000000000..f903626fc6 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/postgres-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/postgres-02.png b/docs/zh/06-advanced/05-data-in/pic/postgres-02.png new file mode 100644 index 0000000000..3d3a847cdb Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/postgres-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/postgres-03.png b/docs/zh/06-advanced/05-data-in/pic/postgres-03.png new file mode 100644 index 0000000000..f47ebe4ce1 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/postgres-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/postgres-04.png b/docs/zh/06-advanced/05-data-in/pic/postgres-04.png new file mode 100644 index 0000000000..900167f5c1 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/postgres-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/postgres-05.png b/docs/zh/06-advanced/05-data-in/pic/postgres-05.png new file mode 100644 index 0000000000..e168d9e739 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/postgres-05.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/postgres-06.png b/docs/zh/06-advanced/05-data-in/pic/postgres-06.png new file mode 100644 index 0000000000..ab96e95f5a Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/postgres-06.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/postgres-07.png b/docs/zh/06-advanced/05-data-in/pic/postgres-07.png new file mode 100644 index 0000000000..6c1668481c Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/postgres-07.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/transform-01.png b/docs/zh/06-advanced/05-data-in/pic/transform-01.png new file mode 100644 index 0000000000..808c097de6 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/transform-01.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/transform-02.png b/docs/zh/06-advanced/05-data-in/pic/transform-02.png new file mode 100644 index 0000000000..9bccd26f6a Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/transform-02.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/transform-03.png b/docs/zh/06-advanced/05-data-in/pic/transform-03.png new file mode 100644 index 0000000000..567a7cd0cb Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/transform-03.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/transform-04.png b/docs/zh/06-advanced/05-data-in/pic/transform-04.png new file mode 100644 index 0000000000..4669d8fed0 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/transform-04.png differ diff --git a/docs/zh/06-advanced/05-data-in/pic/transform-udf.png b/docs/zh/06-advanced/05-data-in/pic/transform-udf.png new file mode 100644 index 0000000000..e348cbb0a9 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/pic/transform-udf.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-pre1.png b/docs/zh/06-advanced/05-data-in/tmq-pre1.png new file mode 100644 index 0000000000..c739d700c2 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-pre1.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-pre2.png b/docs/zh/06-advanced/05-data-in/tmq-pre2.png new file mode 100644 index 0000000000..84de200797 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-pre2.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-pre3.png b/docs/zh/06-advanced/05-data-in/tmq-pre3.png new file mode 100644 index 0000000000..11a4db3e7c Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-pre3.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-step1.png b/docs/zh/06-advanced/05-data-in/tmq-step1.png new file mode 100644 index 0000000000..7b4af977af Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-step1.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-step2.png b/docs/zh/06-advanced/05-data-in/tmq-step2.png new file mode 100644 index 0000000000..01dded1372 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-step2.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-step3.png b/docs/zh/06-advanced/05-data-in/tmq-step3.png new file mode 100644 index 0000000000..67461efe17 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-step3.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-step4.png b/docs/zh/06-advanced/05-data-in/tmq-step4.png new file mode 100644 index 0000000000..0ec896de3e Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-step4.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-step5.png b/docs/zh/06-advanced/05-data-in/tmq-step5.png new file mode 100644 index 0000000000..568658bdaf Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-step5.png differ diff --git a/docs/zh/06-advanced/05-data-in/tmq-step6.png b/docs/zh/06-advanced/05-data-in/tmq-step6.png new file mode 100644 index 0000000000..05d17363a3 Binary files /dev/null and b/docs/zh/06-advanced/05-data-in/tmq-step6.png differ diff --git a/docs/zh/07-operation/05-monitor.md b/docs/zh/07-operation/05-monitor.md index 4dec93ed12..6c4375064e 100644 --- a/docs/zh/07-operation/05-monitor.md +++ b/docs/zh/07-operation/05-monitor.md @@ -1,20 +1,22 @@ --- -sidebar_label: 可视化管理 -title: 可视化管理工具 +sidebar_label: 运行监控 +title: 运行监控 toc_max_heading_level: 4 --- ## 集群运行监控 -为了确保集群稳定运行,TDengine 集成了多种监控指标收集机制,并通 过taosKeeper 进行汇总。taosKeeper负责接收这些数据,并将其写入一个独立的 TDengine 实例中,该实例可以与被监控的 TDengine 集群保持独立。 +为了确保集群稳定运行,TDengine 集成了多种监控指标收集机制,并通 过taosKeeper 进行汇总。taosKeeper负责接收这些数据,并将其写入一个独立的 TDengine 实例中,该实例可以与被监控的 TDengine 集群保持独立。TDengine 中的两个核心组件 taosd (数据库引擎) 和 taosX (数据接入平台)都通过相同的监控架构来实现对其运行时的监控,但各自的监控指标设计有所不同。 -用户可以使用第三方的监测工具比如 Zabbix 来获取这些保存的系统监测数据,进而将 TDengine 的运行状况无缝集成到现有的 IT 监控系统中。此外,TDengine 还提供了 TDinsight 插件,用户可以通过 Grafana 平台直观地展示和管理这些监控信息,如下图所示。这为用户提供了灵活的监控选项,以满足不同场景下的运维需求。 +至于如何获取和使用这些监控数据,用户可以使用第三方的监测工具比如 Zabbix 来获取这些保存的系统监测数据,进而将 TDengine 的运行状况无缝集成到现有的 IT 监控系统中。也可以使用 TDengine 提供的 TDinsight 插件,使用该插件用户可以通过 Grafana 平台直观地展示和管理这些监控信息,如下图所示。这为用户提供了灵活的监控选项,以满足不同场景下的运维需求。 ~[通过监控组件管理监控信息](./grafana.png) -### taosKeeper 的安装与配置 +## 配置 taosKeeper -taosKeeper 的配置文件默认位于 `/etc/taos/taoskeeper.toml`。 下面为一个示例配置文件,更多详细信息见参考手册。 +因为 TDengine 的监控数据都通过 taosKeeper 上报并存储,所以本节先介绍 taosKeeper 的配置。 + +taosKeeper 的配置文件默认位于 `/etc/taos/taoskeeper.toml`。 下面为一个示例配置文件,更多详细信息见参考手册。其中最为关键的一个配置项是 `database`,它决定了收集到的监控数据存储在目标系统的哪个数据库中。 ```toml # gin 框架是否启用 debug @@ -60,7 +62,9 @@ tables = [] cachemodel = "none" ``` -### 基于 TDinsight 的监控 +## 监控 taosd + +### 基于 TDinsight 监控 taosd 为了简化用户在 TDengine 监控方面的配置工作,TDengine 提供了一个名为 TDinsight 的 Grafana 插件。该插件与 taosKeeper 协同工作,能够实时监控 TDengine 的各项性能指标。 @@ -94,52 +98,384 @@ TDengine 数据源插件已被提交至 Grafana 官网,完成插件的安装 **注意** 在 TDinsight 界面左上角的 Log from 下拉列表中可以选择 log 数据库。 -## 可视化管理 +### taosd 监控数据 -为方便用户更高效地使用和管理 TDengine,TDengine 3.0 版本推出了一个全新的可视化组件—taosExplorer。这个组件旨在帮助用户在不熟悉 SQL 的情况下,也能轻松管理 TDengine 集群。通过 taosExplorer,用户可以轻松查看 TDengine 的运行状态、浏览数据、配置数据源、实现流计算和数据订阅等功能。此外,用户还可以利用taosExplorer 进行数据的备份、复制和同步操作,以及配置用户的各种访问权限。这些功能极大地简化了数据库的使用过程,提高了用户体验。 +TDinsight dashboard 数据来源于 log 库(存放监控数据的默认 db,可以在 taoskeeper 配置文件中修改。以下是由 taosd 上报由 taosKeeper 存储在 log 库中的数据。 -本节介绍可视化管理的基本功能。 +1. taosd\_cluster\_basic 表 -### 登录 +`taosd_cluster_basic` 表记录集群基础信息。 -在完成 TDengine 的安装与启动流程之后,用户便可立即开始使用 taosExplorer。该组件默认监听 TCP 端口 6060,用户只须在浏览器中输入 `http://:6060/login`(其中的IP 是用户自己的地址),便可顺利登录。成功登录集群后,用户会发现在左侧的导航栏中各项功能被清晰地划分为不同的模块。接下来将简单介绍主要模块。 +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|first\_ep|VARCHAR||集群 first ep| +|first\_ep\_dnode\_id|INT||集群 first ep 的 dnode id| +|cluster_version|VARCHAR||tdengine version。例如:3.0.4.0| +|cluster\_id|VARCHAR|TAG|cluster id| -### 运行监控面板 +2. taosd\_cluster\_info 表 -在 Grafana 上安装 TDengine 数据源插件后,即可添加 TDengine 数据源,并导入TDengine 的 Grafana Dashboard: TDengine for 3.x。通过这一操作,用户将能够在不编写任何代码的情况下实现对 TDengine 运行状态的实时监控和告警功能。 +`taosd_cluster_info` 表记录集群信息。 -### 数据写入 +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|cluster_uptime|DOUBLE||当前 master 节点的uptime。单位:秒| +|dbs\_total|DOUBLE||database 总数| +|tbs\_total|DOUBLE||当前集群 table 总数| +|stbs\_total|DOUBLE||当前集群 stable 总数| +|dnodes\_total|DOUBLE||当前集群 dnode 总数| +|dnodes\_alive|DOUBLE||当前集群 dnode 存活总数| +|mnodes\_total|DOUBLE||当前集群 mnode 总数| +|mnodes\_alive|DOUBLE||当前集群 mnode 存活总数| +|vgroups\_total|DOUBLE||当前集群 vgroup 总数| +|vgroups\_alive|DOUBLE||当前集群 vgroup 存活总数| +|vnodes\_total|DOUBLE||当前集群 vnode 总数| +|vnodes\_alive|DOUBLE||当前集群 vnode 存活总数| +|connections\_total|DOUBLE||当前集群连接总数| +|topics\_total|DOUBLE||当前集群 topic 总数| +|streams\_total|DOUBLE||当前集群 stream 总数| +|grants_expire\_time|DOUBLE||认证过期时间,企业版有效,社区版为 DOUBLE 最大值| +|grants_timeseries\_used|DOUBLE||已用测点数| +|grants_timeseries\_total|DOUBLE||总测点数,开源版本为 DOUBLE 最大值| +|cluster\_id|VARCHAR|TAG|cluster id| -通过创建不同的任务,用户能够以零代码的方式,将来自不同外部数据源的数据导入 TDengine。目前,TDengine 支持的数据源包括 AVEVA PI System、OPC-UA/DA、MQTT、Kafka、InfluxDB、OpenTSDB、TDengine 2、TDengine 3、CSV、AVEVA Historian 等。在任务的配置中,用户还可以添加与 ETL 相关的配置。 +3. taosd\_vgroups\_info 表 -在任务列表页中,可以实现任务的启动、停止、编辑、删除、查看任务的活动日志等操作。 +`taosd_vgroups_info` 表记录虚拟节点组信息。 -### 数据浏览器 +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|tables\_num|DOUBLE||vgroup 中 table 数量| +|status|DOUBLE||vgroup 状态, 取值范围:unsynced = 0, ready = 1| +|vgroup\_id|VARCHAR|TAG|vgroup id| +|database\_name|VARCHAR|TAG|vgroup 所属的 database 名字| +|cluster\_id|VARCHAR|TAG|cluster id| -通过“数据浏览器”页面,用户无须编写任何代码,便可轻松进行各种数据查询和分析操作。具体而言,可以通过此页面创建或删除数据库、创建或删除超级表及其子表,执行 SQL 并查看执行结果。此外,查询结果将以可视化形式展现,方便用户理解和分析。同时,还可以收藏常用的 SQL,以便日后快速调用。超级管理员还将拥有对数据库的管理权限,以实现更高级别的数据管理和操作。 +4. taosd\_dnodes\_info 表 -### 编程 +`taosd_dnodes_info` 记录 dnode 信息。 -通过“编程”页面,可以看到不同编程语言如何与 TDengine 进行交互,实现写入和查询等基本操作。用户通过复制粘贴,即可完成一个示例工程的创建。目前支持的编程语言包括 Java、Go、Python、Node.js(Javascript)、C#、Rust、R 等。 +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|uptime|DOUBLE||dnode uptime,单位:秒| +|cpu\_engine|DOUBLE||taosd cpu 使用率,从 `/proc//stat` 读取| +|cpu\_system|DOUBLE||服务器 cpu 使用率,从 `/proc/stat` 读取| +|cpu\_cores|DOUBLE||服务器 cpu 核数| +|mem\_engine|DOUBLE||taosd 内存使用率,从 `/proc//status` 读取| +|mem\_free|DOUBLE||服务器可用内存,单位 KB| +|mem\_total|DOUBLE||服务器内存总量,单位 KB| +|disk\_used|DOUBLE||data dir 挂载的磁盘使用量,单位 bytes| +|disk\_total|DOUBLE||data dir 挂载的磁盘总容量,单位 bytes| +|system\_net\_in|DOUBLE||网络吞吐率,从 `/proc/net/dev` 中读取的 received bytes。单位 byte/s| +|system\_net\_out|DOUBLE||网络吞吐率,从 `/proc/net/dev` 中读取的 transmit bytes。单位 byte/s| +|io\_read|DOUBLE||io 吞吐率,从 `/proc//io` 中读取的 rchar 与上次数值计算之后,计算得到速度。单位 byte/s| +|io\_write|DOUBLE||io 吞吐率,从 `/proc//io` 中读取的 wchar 与上次数值计算之后,计算得到速度。单位 byte/s| +|io\_read\_disk|DOUBLE||磁盘 io 吞吐率,从 `/proc//io` 中读取的 read_bytes。单位 byte/s| +|io\_write\_disk|DOUBLE||磁盘 io 吞吐率,从 `/proc//io` 中读取的 write_bytes。单位 byte/s| +|vnodes\_num|DOUBLE||dnode 上 vnodes 数量| +|masters|DOUBLE||dnode 上 master node 数量| +|has\_mnode|DOUBLE||dnode 是否包含 mnode,取值范围:包含=1,不包含=0| +|has\_qnode|DOUBLE||dnode 是否包含 qnode,取值范围:包含=1,不包含=0| +|has\_snode|DOUBLE||dnode 是否包含 snode,取值范围:包含=1,不包含=0| +|has\_bnode|DOUBLE||dnode 是否包含 bnode,取值范围:包含=1,不包含=0| +|error\_log\_count|DOUBLE||error 总数| +|info\_log\_count|DOUBLE||info 总数| +|debug\_log\_count|DOUBLE||debug 总数| +|trace\_log\_count|DOUBLE||trace 总数| +|dnode\_id|VARCHAR|TAG|dnode id| +|dnode\_ep|VARCHAR|TAG|dnode endpoint| +|cluster\_id|VARCHAR|TAG|cluster id| -### 流计算 +5. taosd\_dnodes\_status 表 -通过“流计算”页面,用户可以轻松地创建一个流,从而使用 TDengine 提供的强大的流计算能力。更多关于流计算功能的介绍,详见参考手册。 +`taosd_dnodes_status` 表记录 dnode 状态信息。 -### 数据订阅 +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|status|DOUBLE||dnode 状态,取值范围:ready=1,offline =0| +|dnode\_id|VARCHAR|TAG|dnode id| +|dnode\_ep|VARCHAR|TAG|dnode endpoint| +|cluster\_id|VARCHAR|TAG|cluster id| -通过“数据订阅”页面,用户可以进行创建、管理和共享主题,查看主题的消费者等操作。除此以外,TDengine 还提供了通过 Go、Rust、Python、Java 等编程语言使用数据订阅相关 API 的示例。 +6. taosd\_dnodes\_log\_dir 表 -### 工具 +`taosd_dnodes_log_dir` 表记录 log 目录信息。 -通过 “工具” 页面,用户可以了解如下 TDengine 周边工具的使用方法。 -- TDengine CLI。 -- taosBenchmark。 -- taosDump。 -- TDengine 与 BI 工具的集成,例如 Google Data Studio、Power BI、永洪 BI 等。 -- TDengine 与 Grafana、Seeq 的集成。 +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|avail|DOUBLE||log 目录可用空间。单位 byte| +|used|DOUBLE||log 目录已使用空间。单位 byte| +|total|DOUBLE||log 目录空间。单位 byte| +|name|VARCHAR|TAG|log 目录名,一般为 `/var/log/taos/`| +|dnode\_id|VARCHAR|TAG|dnode id| +|dnode\_ep|VARCHAR|TAG|dnode endpoint| +|cluster\_id|VARCHAR|TAG|cluster id| -### 数据管理 +7. taosd\_dnodes\_data\_dir 表 -“数据管理”页面为用户提供了丰富的管理功能,包括用户管理、备份、数据同步、集群管理、许可证管理以及审计等。 +`taosd_dnodes_data_dir` 表记录 data 目录信息。 +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|avail|DOUBLE||data 目录可用空间。单位 byte| +|used|DOUBLE||data 目录已使用空间。单位 byte| +|total|DOUBLE||data 目录空间。单位 byte| +|level|VARCHAR|TAG|0、1、2 多级存储级别| +|name|VARCHAR|TAG|data 目录,一般为 `/var/lib/taos`| +|dnode\_id|VARCHAR|TAG|dnode id| +|dnode\_ep|VARCHAR|TAG|dnode endpoint| +|cluster\_id|VARCHAR|TAG|cluster id| + +8. taosd\_mnodes\_info 表 + +`taosd_mnodes_info` 表记录 mnode 角色信息。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|role|DOUBLE||mnode 角色, 取值范围:offline = 0,follower = 100,candidate = 101,leader = 102,error = 103,learner = 104| +|mnode\_id|VARCHAR|TAG|master node id| +|mnode\_ep|VARCHAR|TAG|master node endpoint| +|cluster\_id|VARCHAR|TAG|cluster id| + +9. taosd\_vnodes\_role 表 + +`taosd_vnodes_role` 表记录虚拟节点角色信息。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|vnode\_role|DOUBLE||vnode 角色,取值范围:offline = 0,follower = 100,candidate = 101,leader = 102,error = 103,learner = 104| +|vgroup\_id|VARCHAR|TAG|dnode id| +|dnode\_id|VARCHAR|TAG|dnode id| +|database\_name|VARCHAR|TAG|vgroup 所属的 database 名字| +|cluster\_id|VARCHAR|TAG|cluster id| + +10. taosd\_sql\_req 表 + +`taosd_sql_req` 记录授权信息。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|count|DOUBLE||sql 数量| +|result|VARCHAR|TAG|sql的执行结果,取值范围:Success, Failed| +|username|VARCHAR|TAG|执行sql的user name| +|sql\_type|VARCHAR|TAG|sql类型,取值范围:inserted_rows| +|dnode\_id|VARCHAR|TAG|dnode id| +|dnode\_ep|VARCHAR|TAG|dnode endpoint| +|vgroup\_id|VARCHAR|TAG|dnode id| +|cluster\_id|VARCHAR|TAG|cluster id| + +11. taos\_sql\_req 表 + +`taos_sql_req` 记录授权信息。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|count|DOUBLE||sql 数量| +|result|VARCHAR|TAG|sql的执行结果,取值范围:Success, Failed| +|username|VARCHAR|TAG|执行sql的user name| +|sql\_type|VARCHAR|TAG|sql类型,取值范围:select, insert,delete| +|cluster\_id|VARCHAR|TAG|cluster id| + +12. taos\_slow\_sql 表 + +`taos_slow_sql` 记录授权信息。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|count|DOUBLE||sql 数量| +|result|VARCHAR|TAG|sql的执行结果,取值范围:Success, Failed| +|username|VARCHAR|TAG|执行sql的user name| +|duration|VARCHAR|TAG|sql执行耗时,取值范围:3-10s,10-100s,100-1000s,1000s-| +|cluster\_id|VARCHAR|TAG|cluster id| + +13. keeper\_monitor 表 + +`keeper_monitor` 记录 taoskeeper 监控数据。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|ts|TIMESTAMP||timestamp| +|cpu|DOUBLE||cpu 使用率| +|mem|DOUBLE||内存使用率| +|identify|NCHAR|TAG|| + +14. taosadapter\_restful\_http\_request\_total 表 + +`taosadapter_restful_http_request_total` 记录 taosadapter rest 请求信息,该表为 schemaless 方式创建的表,时间戳字段名为 `_ts`。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|\_ts|TIMESTAMP||timestamp| +|gauge|DOUBLE||监控指标值| +|client\_ip|NCHAR|TAG|client ip| +|endpoint|NCHAR|TAG|taosadpater endpoint| +|request\_method|NCHAR|TAG|request method| +|request\_uri|NCHAR|TAG|request uri| +|status\_code|NCHAR|TAG|status code| + +15. taosadapter\_restful\_http\_request\_fail 表 + +`taosadapter_restful_http_request_fail` 记录 taosadapter rest 请求失败信息,该表为 schemaless 方式创建的表,时间戳字段名为 `_ts`。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|\_ts|TIMESTAMP||timestamp| +|gauge|DOUBLE||监控指标值| +|client\_ip|NCHAR|TAG|client ip| +|endpoint|NCHAR|TAG|taosadpater endpoint| +|request\_method|NCHAR|TAG|request method| +|request\_uri|NCHAR|TAG|request uri| +|status\_code|NCHAR|TAG|status code| + +16. taosadapter\_restful\_http\_request\_in\_flight 表 + +`taosadapter_restful_http_request_in_flight` 记录 taosadapter rest 实时请求信息,该表为 schemaless 方式创建的表,时间戳字段名为 `_ts`。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|\_ts|TIMESTAMP||timestamp| +|gauge|DOUBLE||监控指标值| +|endpoint|NCHAR|TAG|taosadpater endpoint| + +17. taosadapter\_restful\_http\_request\_summary\_milliseconds 表 + +`taosadapter_restful_http_request_summary_milliseconds` 记录 taosadapter rest 请求汇总信息,该表为 schemaless 方式创建的表,时间戳字段名为 `_ts`。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|\_ts|TIMESTAMP||timestamp| +|count|DOUBLE||| +|sum|DOUBLE||| +|0.5|DOUBLE||| +|0.9|DOUBLE||| +|0.99|DOUBLE||| +|0.1|DOUBLE||| +|0.2|DOUBLE||| +|endpoint|NCHAR|TAG|taosadpater endpoint| +|request\_method|NCHAR|TAG|request method| +|request\_uri|NCHAR|TAG|request uri| + +18. taosadapter\_system\_mem\_percent 表 + +`taosadapter_system_mem_percent` 表记录 taosadapter 内存使用情况,该表为 schemaless 方式创建的表,时间戳字段名为 `_ts`。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|\_ts|TIMESTAMP||timestamp| +|gauge|DOUBLE||监控指标值| +|endpoint|NCHAR|TAG|taosadpater endpoint| + +19. taosadapter\_system\_cpu\_percent 表 + +`taosadapter_system_cpu_percent` 表记录 taosadapter cpu 使用情况,该表为 schemaless 方式创建的表,时间戳字段名为 `_ts`。 + +|field|type|is\_tag|comment| +|:----|:---|:-----|:------| +|\_ts|TIMESTAMP||timestamp| +|gauge|DOUBLE||监控指标值| +|endpoint|NCHAR|TAG|taosadpater endpoint| + +## 监控 taosX + +taosX 是 TDengine 中提供零代码数据接入能力的核心组件,对它的监控也十分重要。taosX 监控与 TDengine 监控类似,都是通过 taosKeeper 将服务搜集的 metrics 写入指定数据库,然后借助 Grafana 面板做可视化和报警。这个功能可监控的对象包括: +1. taosX 进程 +2. 所有运行中的 taosx-agent 进程 +3. 运行在 taosX 端或 taosx-agent 端的各个连接器子进程 +4. 运行中的各类数据写入任务 + +### 版本支持 + +1. TDengine 企业版本 3.2.3.0 或以上版本包含的 taosX 才包含此功能。如果单独安装 taosX,需要 taosX 1.5.0 或以上版本。 +1. 需要安装 Grafana 插件 [TDengie Datasource v3.5.0](https://grafana.com/grafana/plugins/tdengine-datasource/) 或以上版本。 + +### 准备工作 + +假设你已经部署好了 taosd,taosAdapter 和 taosAdapter。 那么还需要: +2. 启动 taosX 服务。 +3. 部署 Grafana ,安装 TDengine Datasource 插件,配置好数据源。 + +### 配置 taosX + +toasX 的配置文件(默认 /etc/taos/taosx.toml) 中与 monitor 相关的配置如下: + +```toml +[monitor] +# FQDN of taosKeeper service, no default value +# fqdn = "localhost" +# port of taosKeeper service, default 6043 +# port = 6043 +# how often to send metrics to taosKeeper, default every 10 seconds. Only value from 1 to 10 is valid. +# interval = 10 +``` + +每个配置也有对应的命令行选项和环境变量。通过以下表格说明: + +| 配置文件配置项 | 命令行选项 | 环境变量 | 含义 | 取值范围 | 默认值 | +| -------------- | ------------------ | ----------------- | ------------------------------------------------------- | -------- | ---------------------------------------- | +| fqdn | --monitor-fqdn | MONITOR_FQDN | taosKeeper 服务的 FQDN | | 无默认值,配置 fqdn 就等于开启了监控功能 | +| port | --monitor-port | MONITOR_PORT | taosKeeper 服务的端口 | | 6043 | +| interval | --monitor-interval | MONITTOR_INTERVAL | taosX 发送 metrics 数据到 taosKeeper 的时间间隔,单位秒 | 1-10 | 10 | + +TDinsight for taosX + +"TDinsight for taosX" 专门为 taosX 监控创建的 Grafana 面板。使用前需要先导入这个面板。 + +### 基于 TDinsight 监控 tasoX + +#### 进入面板 + +1. 选择 TDengine Datasource + ![TDengine Datasource](./pic/monitor-01.jpg) +2. 点击 “Dashboard”, 选择 TDinsight for taosX 面板。(第一次使用需要先导入)。 + ![Dashboard](./pic/monitor-02.jpg) + ![monitor rows](./pic/monitor-04.jpg) + 该面板每一行代表一个或一类监控对象。最上面是 taosX 监控行,然后是 Agent 监控行, 最后是各类数据写入任务的监控。 + :::note + 1. 如果打开这个面板后看不到任何数据,你很可能需要点击左上角的数据库列表(即 “Log from” 下拉菜单),切换到监控数据所在的数据库。 + 2. 数据库包含多少个 Agent 的数据就会自动创建多少个 Agent 行。(如上图) + + ::: + + +#### 监控示例 + +1. taosX 监控示例 + +![monitor taosx](./pic/monitor-03.png) + +2. Agent 监控示例 + +![monitor agent](./pic/monitor-09.jpg) + +3. TDengine2 数据源监控示例 + +![monitor tdengine2](./pic/monitor-05.png) + +:::info +监控面板只展示了数据写入任务的部分监控指标,在 Explorer 页面上有更全面的监控指标,且有每个指标的具体说明。 + +::: + +3. TDengine3 数据源监控示例 +![monitor tdengine3](./pic/monitor-06.jpg) + + +4. 其它数据源监控示例 +![monitor task](./pic/monitor-10.jpg) + + +#### 限制 + +只有在以 server 模式运行 taosX 时,与监控相关的配置才生效。 diff --git a/docs/zh/07-operation/06-gui.md b/docs/zh/07-operation/06-gui.md new file mode 100644 index 0000000000..0caecf527c --- /dev/null +++ b/docs/zh/07-operation/06-gui.md @@ -0,0 +1,232 @@ +--- +sidebar_label: 可视化管理 +title: 可视化管理工具 +toc_max_heading_level: 4 +--- + +为方便用户更高效地使用和管理 TDengine,TDengine 3.0 版本推出了一个全新的可视化组件—taosExplorer。这个组件旨在帮助用户在不熟悉 SQL 的情况下,也能轻松管理 TDengine 集群。通过 taosExplorer,用户可以轻松查看 TDengine 的运行状态、浏览数据、配置数据源、实现流计算和数据订阅等功能。此外,用户还可以利用taosExplorer 进行数据的备份、复制和同步操作,以及配置用户的各种访问权限。这些功能极大地简化了数据库的使用过程,提高了用户体验。 + +本节介绍可视化管理的基本功能。 + +## 登录 + +在完成 TDengine 的安装与启动流程之后,用户便可立即开始使用 taosExplorer。该组件默认监听 TCP 端口 6060,用户只须在浏览器中输入 `http://:6060/login`(其中的IP 是用户自己的地址),便可顺利登录。成功登录集群后,用户会发现在左侧的导航栏中各项功能被清晰地划分为不同的模块。接下来将简单介绍主要模块。 + +## 运行监控面板 + +在 Grafana 上安装 TDengine 数据源插件后,即可添加 TDengine 数据源,并导入TDengine 的 Grafana Dashboard: TDengine for 3.x。通过这一操作,用户将能够在不编写任何代码的情况下实现对 TDengine 运行状态的实时监控和告警功能。详情请参考[运行监控](../monitor) + +## 编程 + +通过“编程”页面,可以看到不同编程语言如何与 TDengine 进行交互,实现写入和查询等基本操作。用户通过复制粘贴,即可完成一个示例工程的创建。目前支持的编程语言包括 Java、Go、Python、Node.js(Javascript)、C#、Rust、R 等。 + +## 数据写入 + +通过创建不同的任务,用户能够以零代码的方式,将来自不同外部数据源的数据导入 TDengine。目前,TDengine 支持的数据源包括 AVEVA PI System、OPC-UA/DA、MQTT、Kafka、InfluxDB、OpenTSDB、TDengine 2、TDengine 3、CSV、AVEVA Historian 等。在任务的配置中,用户还可以添加与 ETL 相关的配置。 + +在任务列表页中,可以实现任务的启动、停止、编辑、删除、查看任务的活动日志等操作。 + +关于数据写入的详细内容,请参考[数据接入] + +## 数据浏览器 + +点击功能列表的“数据浏览器”入口,在“数据浏览器”中可以创建和删除数据库、创建和删除超级表和子表,执行SQL语句,查看SQL语句的执行结果。此外,超级管理员还有对数据库的管理权限,其他用户不提供该功能。如下图所示: + +![explorer-01-explorer-entry.jpeg](./pic/explorer-01-explorer-entry.jpeg "进入数据浏览器页面") + +### 创建数据库 + +下面通过创建数据库,来熟悉数据浏览器页面的功能和操作,接下来看创建数据库的两种方式: + +1. 通过点击图中的 + 号,跳转到创建数据数库页面,点击 创建 按钮,如下图: + +第一步 点击 + 号; +![explorer-02-createDbentry.jpeg](./pic/explorer-02-createDbentry.jpeg "点开 + 号创建数据库") + +第二步 填写数据库名称、需要的数据库配置参数,配置参数进行了分类和折叠,点击可展开; +![explorer-03-createDbPage.jpeg](./pic/explorer-03-createDbPage.jpeg "创建数据库页面") +![explorer-04-createDbPage2.jpeg](./pic/explorer-04-createDbPage2.jpeg "创建数据库页面展开参数") + +弟三步 点击“创建”按钮之后,如下图左边出现数据库名称则创建数据库成功。 +![explorer-05-createDbtest01.jpeg](./pic/explorer-05-createDbtest01.jpeg "创建数据库 test01") + +2. 通过在 Sql 编辑器中数据 sql 语句,点击 执行 按钮,如下图: + +第一步 输入 sql 语句; +![explorer-06-sqlCreateDb.jpeg](./pic/explorer-06-sqlCreateDb.jpeg "通过 sql 创建数据库") + +第二步 点击“执行”按钮,左边出现 test02, 则数据库创建成功。 +![explorer-07-createDbtest02.jpeg](./pic/explorer-07-createDbtest02.jpeg "创建数据库 test02") + +由于创建、修改和删除超级表、创建表、创建子表在行为上是一致的,就以创建超级表为示例做演示: + +### 创建超级表 + +第一步 鼠标移动到 STables 上,点击出现的 + 号,出现创建超级表 tab; +![explorer-08-createStbEntry.jpeg](./pic/explorer-08-createStbEntry.jpeg "创建超级表入口") + +第二步 填写超级表信息, 点击“创建”按钮; +![explorer-09-createStbPage.jpeg](./pic/explorer-09-createStbPage.jpeg "创建超级表页面") + +第三步 点击 Stables 出现刚才填写的超级表名,则证明创建成功。 +![explorer-10-createStbSucc.jpeg](./pic/explorer-10-createStbSucc.jpeg "创建超级表成功") + +### 查看超级表 + +鼠标放在需要查看的超级表上,出现如下图所示图标,点击“眼睛图标”查看超级表信息 +![explorer-11-viewStableEntry.jpeg](./pic/explorer-11-viewStableEntry.jpeg "查看超级表入口") +![explorer-12-viewStableInfo.jpeg](./pic/explorer-12-viewStableInfo.jpeg "查看超级表详情") + +### 修改超级表 + +鼠标放在需要编辑的超级表上,出现如下图所示图标,点击“编辑图标”修改超级表信息 +![explorer-13-editStableEntry.jpeg](./pic/explorer-13-editStableEntry.jpeg "编辑超级表入口") + +### 删除超级表 + +鼠标放在需要删除的超级表上,出现如下图所示图标,点击“删除图标”删除超级表 +![explorer-15-delStb.jpeg](./pic/explorer-15-delStb.jpeg "删除超级表") + +### Sql 编辑器使用 + +当输入多条语句,可以鼠标选中需要指执行的语句,也可以对语句进行注释(快捷键 Control-/ Command-/),然后再点击执行即可 +![explorer-16-sqlEditor.jpeg](./pic/explorer-16-sqlEditor.jpeg "Sql 编辑器") + +### Sql 收藏功能使用 + +鼠标选中窗口中的 SQL,点击收藏按钮,即可对 SQL 进行收藏,并可以填写对该 SQL 语句的描述 +![explorer-17-favoritesAdd.png](./pic/explorer-17-favoritesAdd.png "添加 SQL 收藏") + +个人收藏中,点击 SQL 的共享按钮,当前 SQL 会被添加到共享收藏中 +![explorer-18-favoritesAddPublic.png](./pic/explorer-18-favoritesAddPublic.png "添加共享") + +共享收藏中的 SQL 对所有用户可见 +![explorer-19-favoritesPublic.png](./pic/explorer-19-favoritesPublic.png "共享页面") + +点击取消共享按钮,可以撤回对此 SQL 的共享 +![explorer-20-favoritesCancelPublic.png](./pic/explorer-20-favoritesCancelPublic.png "取消共享") + +在搜索栏中可以对 SQL 或描述进行模糊搜索 +![explorer-21-favoritesSearch.png](./pic/explorer-21-favoritesSearch.png "模糊搜索") + +点击删除按钮,SQL 将会从个人收藏中删除,如果 SQL 已经共享到共享收藏,那么共享收藏中对应 SQL 也会同步删除 + +![explorer-22-favoritesDelete.png](./pic/explorer-22-favoritesDelete.png "删除 SQL 收藏") + +> 注意: +> +> 1. 如果欲收藏的 SQL 已经在个人收藏中,则无法重复收藏,该操作会报错但不产生任何后果 +> 2. 如果欲共享的 SQL 已经被自己或他人共享过,则无法重复共享,该操作会报错但不产生任何后果 +> +>![explorer-23-favoritesNotes.png](./pic/explorer-23-favoritesNotes.png) + +## 流计算 + +通过 Explorer, 您可以轻松地完成对流的管理,从而更好地利用 TDengine 提供的流计算能力。 +点击左侧导航栏中的“流计算”,即可跳转至流计算配置管理页面。 +您可以通过以下两种方式创建流:流计算向导和自定义 SQL 语句。当前,通过流计算向导创建流时,暂不支持分组功能。通过自定义 SQL 创建流时,您需要了解 TDengine 提供的流计算 SQL 语句的语法,并保证其正确性。 + +![stream-01-streamEntry.jpeg](./pic/stream-01-streamEntry.jpeg "进入流计算页面") + +### 创建流计算 Wizard + +![stream-02-createStreamEntry.jpeg](./pic/stream-02-createStreamEntry.jpeg "创建流计算入口") + +第一步 填写创建流计算需要的信息,点击 创建 按钮; + +![stream-03-createStreamWizard.jpeg](./pic/stream-03-createStreamWizard.jpeg "创建流计算 Wizard 页面") +![stream-04-createStreamWizard.jpeg](./pic/stream-04-createStreamWizard.jpeg "创建流计算 Wizard 页面") + +第二步 页面出现以下记录,则证明创建成功。 +![stream-05-createStreamSucc1.jpeg](./pic/stream-05-createStreamSucc1.jpeg "查看已创建的流计算") + +### 使用 SQL + +第一步 切换到 SQL 页,直接输入创建流计算 sql, 点击 创建 按钮; +![stream-06-createStreamSql.jpeg](./pic/stream-06-createStreamSql.jpeg "创建流计算 SQL 页面") + +第二步 页面出现以下记录,则证明创建成功。 +![stream-07-createStreamSucc2.jpeg](./pic/stream-07-createStreamSucc2.jpeg "查看已创建的流计算") + +## 数据订阅 + +通过 Explorer, 您可以轻松地完成对数据订阅的管理,从而更好地利用 TDengine 提供的数据订阅能力。 +点击左侧导航栏中的“数据订阅”,即可跳转至数据订阅配置管理页面。 +您可以通过以下两种方式创建主题:使用向导和自定义 SQL 语句。通过自定义 SQL 创建主题时,您需要了解 TDengine 提供的数据订阅 SQL 语句的语法,并保证其正确性。 + +![topic-01-dataSubscription.jpeg](./pic/topic-01-dataSubscription.jpeg "进入数据订阅页面") + +### 添加数据订阅 + +![topic-02-addTopic.jpeg](./pic/topic-02-addTopic.jpeg "添加新主题入口") + +1. Wizard 方式 + +第一步 填写添加新主题需要的信息,点击“创建”按钮; +![topic-03-addTopicWizard.jpeg](./pic/topic-03-addTopicWizard.jpeg "添加新主题 Wizard 页面") + +第二步 页面出现以下记录,则证明创建成功。 +![topic-05-addTopicSucc1.jpeg](./pic/topic-05-addTopicSucc1.jpeg "查看已创建的流计算") + +2. Sql 方式 + +第一步 切换到 SQL 页,直接输入添加新主题 sql, 点击“创建”按钮; +![topic-06-addTopicSql.jpeg](./pic/topic-06-addTopicSql.jpeg "添加新主题 SQL 页面") + +第二步 页面出现以下记录,则证明创建成功。 +![topic-07-addTopicsSucc2.jpeg](./pic/topic-07-addTopicsSucc2.jpeg "查看已创建的主题") + +### 共享主题 + +在“共享主题”标签页,在“主题“下拉列表中,选择将要分享的主题; +点击“添加可消费该主题的用户”按钮,然后在“用户名”下拉列表中选择相应的用户,然后点击“新增”,即可将该主题分享给此用户 + +![topic-08-shareTopic.jpeg](./pic/topic-08-shareTopic.jpeg "共享主题") + + +### 查看消费者信息 +通过执行下一节“示例代码”所述的“完整实例”,即可消费共享主题 +在“消费者”标签页,可查看到消费者的有关信息 +![topic-10-consumer.jpeg](./pic/topic-10-consumer.jpeg "消费者") + +### 示例代码 +在“示例代码”标签页,在“主题“下拉列表中,选择相应的主题; +选择您熟悉的语言,然后您可以阅读以及使用这部分示例代码用来”创建消费“,”订阅主题“,通过执行 “完整实例”中的程序即可消费共享主题 +![topic-09-sample.jpeg](./pic/topic-09-sample.jpeg "示例代码") + +## 工具 + +通过 “工具” 页面,用户可以了解如下 TDengine 周边工具的使用方法。 +- TDengine CLI。 +- taosBenchmark。 +- taosDump。 +- TDengine 与 BI 工具的集成,例如 Google Data Studio、Power BI、永洪 BI 等。 +- TDengine 与 Grafana、Seeq 的集成。 + +## 系统管理 + +点击功能列表中的“系统管理”入口,可以创建用户、对用户进行访问授权、以及删除用户,还能够对当前所管理的集群中的数据进行备份和恢复,也可以配置一个远程 TDengine 的地址进行数据同步,同时也提供了集群信息和许可证的信息以及代理信息以供查看。系统管理菜单只有 root 用户才有权限看到。 + +### 用户管理 + +点击“系统管理”后,默认会进入“用户”标签页。 +在用户列表,可以查看系统中已存在的用户及其创建时间,并可以对用户进行启用、禁用,编辑(包括修改密码,数据库的读写权限等),删除等操作。 +![management-01-systemEntry.jpeg](./pic/management-01-systemEntry.jpeg "进入系统管理页面") + +第一步 点击用户列表右上方的“+新增”按钮,即可打开“新增用户”对话框,填写新增用户的信息,点击“确定”按钮: +![management-02-addUser.jpeg](./pic/management-02-addUser.jpeg "进入新增用页面") + +第二步 查看新增的用户 +![management-03-addUserSucc.jpeg](./pic/management-02-addUserSucc.jpeg "新增用户成功") + +### 导入用户/权限 +点击 导入按钮,弹出导入用户/权限表单填写信息,点击确定提交表单 + +- 服务地址:从指定集群导入(taosAdapter 访问地址,如 http://127.0.0.1:6041) +- 密码:源集群 root 密码 +- 导入内容: + - 用户名和密码:(实际包含 sysinfo/super 等用户基本信息) + - 权限 + - 白名单 + +![management-01-importInfo.jpeg](./pic/management-01-importInfo.jpeg)。 \ No newline at end of file diff --git a/docs/zh/07-operation/06-backup.md b/docs/zh/07-operation/09-backup.md similarity index 100% rename from docs/zh/07-operation/06-backup.md rename to docs/zh/07-operation/09-backup.md diff --git a/docs/zh/07-operation/07-disaster.md b/docs/zh/07-operation/10-disaster.md similarity index 63% rename from docs/zh/07-operation/07-disaster.md rename to docs/zh/07-operation/10-disaster.md index 009fa9154b..9fb2cce8ca 100644 --- a/docs/zh/07-operation/07-disaster.md +++ b/docs/zh/07-operation/10-disaster.md @@ -20,10 +20,17 @@ TDengine 支持 WAL 机制,实现数据的容错能力,保证数据的高可 在异地的两个数据中心中部署两个 TDengine Enterprise 集群,利用其数据复制能力即可实现数据灾备。假定两个集群为集群 A 和集群 B,其中集群 A 为源集群,承担写入请求并提供查询服务。集群 B 可以实时消费集群 A 中新写入的数据,并同步到集群 B。如果发生了灾难,导致集群 A 所在数据中心不可用,可以启用集群 B 作为数据写入和查询的主节点。 以下步骤描述了如何轻松在两个 TDengine Enterprise 集群之间搭建数据灾备体系: -第 1 步,在集群 A 中创建一个数据库 db1,并向该数据库持续写入数据。 -第 2 步, 通过 Web 浏览器访问集群 A 的 taosExplorer 服务, 访问地址通常 为TDengine 集群所在 IP 地址的端口 6060,如 http://localhost:6060。 -第 3 步,访问 TDengine 集群 B,创建一个与集群 A 中数据库 db1 参数配置相同的数据库 db2。 -第 4 步,通过 Web 浏览器访问集群 B 的 taosExplorer 服务,在 “数据浏览器” 页面找到 db2,在 “查看数据库配置” 选项中可以获取该数据库的 DSN,例如 taos+ws://root:taosdata@clusterB:6041/db2 -第 5 步,在 taosExplorer 服务的“系统管理 - 数据同步”页面新增一个数据同步任务,在任务配置信息中填写需要同步的数据库 db1 和目标数据库 db2 的 DSN,完成创建任务后即可启动数据同步。 - 6 步,访问集群 B,可以看到集群 B 中的数据库 db2 源源不断写入来自集群 A 数据库 db1 的数据,直至两个集群的数据库数据量基本保持一致。至此,一个简单的基于 + +- 第 1 步,在集群 A 中创建一个数据库 db1,并向该数据库持续写入数据。 + +- 第 2 步, 通过 Web 浏览器访问集群 A 的 taosExplorer 服务, 访问地址通常 为TDengine 集群所在 IP 地址的端口 6060,如 http://localhost:6060。 + +- 第 3 步,访问 TDengine 集群 B,创建一个与集群 A 中数据库 db1 参数配置相同的数据库 db2。 + +- 第 4 步,通过 Web 浏览器访问集群 B 的 taosExplorer 服务,在 “数据浏览器” 页面找到 db2,在 “查看数据库配置” 选项中可以获取该数据库的 DSN,例如 taos+ws://root:taosdata@clusterB:6041/db2 + +- 第 5 步,在 taosExplorer 服务的“系统管理 - 数据同步”页面新增一个数据同步任务,在任务配置信息中填写需要同步的数据库 db1 和目标数据库 db2 的 DSN,完成创建任务后即可启动数据同步。 + +- 第 6 步,访问集群 B,可以看到集群 B 中的数据库 db2 源源不断写入来自集群 A 数据库 db1 的数据,直至两个集群的数据库数据量基本保持一致。至此,一个简单的基于 + TDengine Enterprise 的数据灾备体系搭建完成。 \ No newline at end of file diff --git a/docs/zh/07-operation/08-multi.md b/docs/zh/07-operation/12-multi.md similarity index 100% rename from docs/zh/07-operation/08-multi.md rename to docs/zh/07-operation/12-multi.md diff --git a/docs/zh/07-operation/09-user.md b/docs/zh/07-operation/14-user.md similarity index 100% rename from docs/zh/07-operation/09-user.md rename to docs/zh/07-operation/14-user.md diff --git a/docs/zh/07-operation/10-security.md b/docs/zh/07-operation/16-security.md similarity index 100% rename from docs/zh/07-operation/10-security.md rename to docs/zh/07-operation/16-security.md diff --git a/docs/zh/07-operation/15-dual.md b/docs/zh/07-operation/18-dual.md similarity index 100% rename from docs/zh/07-operation/15-dual.md rename to docs/zh/07-operation/18-dual.md diff --git a/docs/zh/07-operation/pic/Active-Standby.png b/docs/zh/07-operation/pic/Active-Standby.png new file mode 100644 index 0000000000..f0caab5c55 Binary files /dev/null and b/docs/zh/07-operation/pic/Active-Standby.png differ diff --git a/docs/zh/07-operation/pic/agent-01.png b/docs/zh/07-operation/pic/agent-01.png new file mode 100644 index 0000000000..e181c3c870 Binary files /dev/null and b/docs/zh/07-operation/pic/agent-01.png differ diff --git a/docs/zh/07-operation/pic/agent-02.png b/docs/zh/07-operation/pic/agent-02.png new file mode 100644 index 0000000000..4bca3428b2 Binary files /dev/null and b/docs/zh/07-operation/pic/agent-02.png differ diff --git a/docs/zh/07-operation/pic/agent-03.png b/docs/zh/07-operation/pic/agent-03.png new file mode 100644 index 0000000000..22c916344d Binary files /dev/null and b/docs/zh/07-operation/pic/agent-03.png differ diff --git a/docs/zh/07-operation/pic/agent-04.png b/docs/zh/07-operation/pic/agent-04.png new file mode 100644 index 0000000000..788eef42cf Binary files /dev/null and b/docs/zh/07-operation/pic/agent-04.png differ diff --git a/docs/zh/07-operation/pic/datain-01.png b/docs/zh/07-operation/pic/datain-01.png new file mode 100644 index 0000000000..ac50c56fe0 Binary files /dev/null and b/docs/zh/07-operation/pic/datain-01.png differ diff --git a/docs/zh/07-operation/pic/datain-02.png b/docs/zh/07-operation/pic/datain-02.png new file mode 100644 index 0000000000..956ed9f64e Binary files /dev/null and b/docs/zh/07-operation/pic/datain-02.png differ diff --git a/docs/zh/07-operation/pic/datain-03.png b/docs/zh/07-operation/pic/datain-03.png new file mode 100644 index 0000000000..d32ec22a87 Binary files /dev/null and b/docs/zh/07-operation/pic/datain-03.png differ diff --git a/docs/zh/07-operation/pic/explorer-01-explorer-entry.jpeg b/docs/zh/07-operation/pic/explorer-01-explorer-entry.jpeg new file mode 100644 index 0000000000..bf2f867165 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-01-explorer-entry.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-02-createDbentry.jpeg b/docs/zh/07-operation/pic/explorer-02-createDbentry.jpeg new file mode 100644 index 0000000000..94530e8266 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-02-createDbentry.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-03-createDbPage.jpeg b/docs/zh/07-operation/pic/explorer-03-createDbPage.jpeg new file mode 100644 index 0000000000..6ed0f9b161 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-03-createDbPage.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-04-createDbPage2.jpeg b/docs/zh/07-operation/pic/explorer-04-createDbPage2.jpeg new file mode 100644 index 0000000000..0b8430c35c Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-04-createDbPage2.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-05-createDbtest01.jpeg b/docs/zh/07-operation/pic/explorer-05-createDbtest01.jpeg new file mode 100644 index 0000000000..ba684731df Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-05-createDbtest01.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-06-sqlCreateDb.jpeg b/docs/zh/07-operation/pic/explorer-06-sqlCreateDb.jpeg new file mode 100644 index 0000000000..843aaea465 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-06-sqlCreateDb.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-07-createDbtest02.jpeg b/docs/zh/07-operation/pic/explorer-07-createDbtest02.jpeg new file mode 100644 index 0000000000..8adc756bbb Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-07-createDbtest02.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-08-createStbEntry.jpeg b/docs/zh/07-operation/pic/explorer-08-createStbEntry.jpeg new file mode 100644 index 0000000000..9c2de64e40 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-08-createStbEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-09-createStbPage.jpeg b/docs/zh/07-operation/pic/explorer-09-createStbPage.jpeg new file mode 100644 index 0000000000..001f3f43b9 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-09-createStbPage.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-10-createStbSucc.jpeg b/docs/zh/07-operation/pic/explorer-10-createStbSucc.jpeg new file mode 100644 index 0000000000..c54ddea02d Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-10-createStbSucc.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-11-viewStableEntry.jpeg b/docs/zh/07-operation/pic/explorer-11-viewStableEntry.jpeg new file mode 100644 index 0000000000..198ecc43ad Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-11-viewStableEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-12-viewStableInfo.jpeg b/docs/zh/07-operation/pic/explorer-12-viewStableInfo.jpeg new file mode 100644 index 0000000000..f70244c00d Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-12-viewStableInfo.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-13-editStableEntry.jpeg b/docs/zh/07-operation/pic/explorer-13-editStableEntry.jpeg new file mode 100644 index 0000000000..90c94d4eb9 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-13-editStableEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-14-editStableInfo.jpeg b/docs/zh/07-operation/pic/explorer-14-editStableInfo.jpeg new file mode 100644 index 0000000000..7874356cbf Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-14-editStableInfo.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-15-delStb.jpeg b/docs/zh/07-operation/pic/explorer-15-delStb.jpeg new file mode 100644 index 0000000000..3594d6b0a8 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-15-delStb.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-16-sqlEditor.jpeg b/docs/zh/07-operation/pic/explorer-16-sqlEditor.jpeg new file mode 100644 index 0000000000..447d94ba91 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-16-sqlEditor.jpeg differ diff --git a/docs/zh/07-operation/pic/explorer-17-favoritesAdd.png b/docs/zh/07-operation/pic/explorer-17-favoritesAdd.png new file mode 100644 index 0000000000..32b3b7610c Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-17-favoritesAdd.png differ diff --git a/docs/zh/07-operation/pic/explorer-18-favoritesAddPublic.png b/docs/zh/07-operation/pic/explorer-18-favoritesAddPublic.png new file mode 100644 index 0000000000..1521b79d48 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-18-favoritesAddPublic.png differ diff --git a/docs/zh/07-operation/pic/explorer-19-favoritesPublic.png b/docs/zh/07-operation/pic/explorer-19-favoritesPublic.png new file mode 100644 index 0000000000..e3d82fa752 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-19-favoritesPublic.png differ diff --git a/docs/zh/07-operation/pic/explorer-20-favoritesCancelPublic.png b/docs/zh/07-operation/pic/explorer-20-favoritesCancelPublic.png new file mode 100644 index 0000000000..9611463840 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-20-favoritesCancelPublic.png differ diff --git a/docs/zh/07-operation/pic/explorer-21-favoritesSearch.png b/docs/zh/07-operation/pic/explorer-21-favoritesSearch.png new file mode 100644 index 0000000000..71b2b8f4b3 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-21-favoritesSearch.png differ diff --git a/docs/zh/07-operation/pic/explorer-22-favoritesDelete.png b/docs/zh/07-operation/pic/explorer-22-favoritesDelete.png new file mode 100644 index 0000000000..d7716f12f4 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-22-favoritesDelete.png differ diff --git a/docs/zh/07-operation/pic/explorer-23-favoritesNotes.png b/docs/zh/07-operation/pic/explorer-23-favoritesNotes.png new file mode 100644 index 0000000000..b18e3a6b02 Binary files /dev/null and b/docs/zh/07-operation/pic/explorer-23-favoritesNotes.png differ diff --git a/docs/zh/07-operation/pic/management-01-importInfo.jpeg b/docs/zh/07-operation/pic/management-01-importInfo.jpeg new file mode 100644 index 0000000000..d820b61e4e Binary files /dev/null and b/docs/zh/07-operation/pic/management-01-importInfo.jpeg differ diff --git a/docs/zh/07-operation/pic/management-01-systemEntry.jpeg b/docs/zh/07-operation/pic/management-01-systemEntry.jpeg new file mode 100644 index 0000000000..d87892c15c Binary files /dev/null and b/docs/zh/07-operation/pic/management-01-systemEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/management-02-addUser.jpeg b/docs/zh/07-operation/pic/management-02-addUser.jpeg new file mode 100644 index 0000000000..0cc3404a2f Binary files /dev/null and b/docs/zh/07-operation/pic/management-02-addUser.jpeg differ diff --git a/docs/zh/07-operation/pic/management-02-addUserSucc.jpeg b/docs/zh/07-operation/pic/management-02-addUserSucc.jpeg new file mode 100644 index 0000000000..a49c9db9f4 Binary files /dev/null and b/docs/zh/07-operation/pic/management-02-addUserSucc.jpeg differ diff --git a/docs/zh/07-operation/pic/management-04-backupEntry.jpeg b/docs/zh/07-operation/pic/management-04-backupEntry.jpeg new file mode 100644 index 0000000000..8c8f35482a Binary files /dev/null and b/docs/zh/07-operation/pic/management-04-backupEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/management-04-backupModal.jpeg b/docs/zh/07-operation/pic/management-04-backupModal.jpeg new file mode 100644 index 0000000000..16f6664d1a Binary files /dev/null and b/docs/zh/07-operation/pic/management-04-backupModal.jpeg differ diff --git a/docs/zh/07-operation/pic/management-06-cluster.jpeg b/docs/zh/07-operation/pic/management-06-cluster.jpeg new file mode 100644 index 0000000000..b606cdc4fa Binary files /dev/null and b/docs/zh/07-operation/pic/management-06-cluster.jpeg differ diff --git a/docs/zh/07-operation/pic/management-07-license.jpeg b/docs/zh/07-operation/pic/management-07-license.jpeg new file mode 100644 index 0000000000..1b7f9ff801 Binary files /dev/null and b/docs/zh/07-operation/pic/management-07-license.jpeg differ diff --git a/docs/zh/07-operation/pic/management-08-activationCode.jpeg b/docs/zh/07-operation/pic/management-08-activationCode.jpeg new file mode 100644 index 0000000000..07432c1778 Binary files /dev/null and b/docs/zh/07-operation/pic/management-08-activationCode.jpeg differ diff --git a/docs/zh/07-operation/pic/management-09-audit.jpeg b/docs/zh/07-operation/pic/management-09-audit.jpeg new file mode 100644 index 0000000000..15b4ad7d27 Binary files /dev/null and b/docs/zh/07-operation/pic/management-09-audit.jpeg differ diff --git a/docs/zh/07-operation/pic/management-10-replicationEntry.jpeg b/docs/zh/07-operation/pic/management-10-replicationEntry.jpeg new file mode 100644 index 0000000000..ed0d9e9376 Binary files /dev/null and b/docs/zh/07-operation/pic/management-10-replicationEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/management-11-replicationModal.jpeg b/docs/zh/07-operation/pic/management-11-replicationModal.jpeg new file mode 100644 index 0000000000..bd64c4e01b Binary files /dev/null and b/docs/zh/07-operation/pic/management-11-replicationModal.jpeg differ diff --git a/docs/zh/07-operation/pic/management-12-licenseNew.jpeg b/docs/zh/07-operation/pic/management-12-licenseNew.jpeg new file mode 100644 index 0000000000..e0a8436dda Binary files /dev/null and b/docs/zh/07-operation/pic/management-12-licenseNew.jpeg differ diff --git a/docs/zh/07-operation/pic/management-13-activationCodeNew.jpeg b/docs/zh/07-operation/pic/management-13-activationCodeNew.jpeg new file mode 100644 index 0000000000..d3b7fb2f3e Binary files /dev/null and b/docs/zh/07-operation/pic/management-13-activationCodeNew.jpeg differ diff --git a/docs/zh/07-operation/pic/monitor-01.jpg b/docs/zh/07-operation/pic/monitor-01.jpg new file mode 100644 index 0000000000..425def6edf Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-01.jpg differ diff --git a/docs/zh/07-operation/pic/monitor-02.jpg b/docs/zh/07-operation/pic/monitor-02.jpg new file mode 100644 index 0000000000..1b77a9f97f Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-02.jpg differ diff --git a/docs/zh/07-operation/pic/monitor-03.png b/docs/zh/07-operation/pic/monitor-03.png new file mode 100644 index 0000000000..b639a6739a Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-03.png differ diff --git a/docs/zh/07-operation/pic/monitor-04.jpg b/docs/zh/07-operation/pic/monitor-04.jpg new file mode 100644 index 0000000000..510af51d15 Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-04.jpg differ diff --git a/docs/zh/07-operation/pic/monitor-05.png b/docs/zh/07-operation/pic/monitor-05.png new file mode 100644 index 0000000000..e2e652d7b8 Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-05.png differ diff --git a/docs/zh/07-operation/pic/monitor-06.jpg b/docs/zh/07-operation/pic/monitor-06.jpg new file mode 100644 index 0000000000..151198a188 Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-06.jpg differ diff --git a/docs/zh/07-operation/pic/monitor-07.png b/docs/zh/07-operation/pic/monitor-07.png new file mode 100644 index 0000000000..9f836332bc Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-07.png differ diff --git a/docs/zh/07-operation/pic/monitor-08.png b/docs/zh/07-operation/pic/monitor-08.png new file mode 100644 index 0000000000..875775335c Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-08.png differ diff --git a/docs/zh/07-operation/pic/monitor-09.jpg b/docs/zh/07-operation/pic/monitor-09.jpg new file mode 100644 index 0000000000..5b3b8db655 Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-09.jpg differ diff --git a/docs/zh/07-operation/pic/monitor-10.jpg b/docs/zh/07-operation/pic/monitor-10.jpg new file mode 100644 index 0000000000..1c2fc3d9df Binary files /dev/null and b/docs/zh/07-operation/pic/monitor-10.jpg differ diff --git a/docs/zh/07-operation/pic/stream-01-streamEntry.jpeg b/docs/zh/07-operation/pic/stream-01-streamEntry.jpeg new file mode 100644 index 0000000000..5e7b623d15 Binary files /dev/null and b/docs/zh/07-operation/pic/stream-01-streamEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/stream-02-createStreamEntry.jpeg b/docs/zh/07-operation/pic/stream-02-createStreamEntry.jpeg new file mode 100644 index 0000000000..68e711edf5 Binary files /dev/null and b/docs/zh/07-operation/pic/stream-02-createStreamEntry.jpeg differ diff --git a/docs/zh/07-operation/pic/stream-03-createStreamWizard.jpeg b/docs/zh/07-operation/pic/stream-03-createStreamWizard.jpeg new file mode 100644 index 0000000000..1d381dc965 Binary files /dev/null and b/docs/zh/07-operation/pic/stream-03-createStreamWizard.jpeg differ diff --git a/docs/zh/07-operation/pic/stream-04-createStreamWizard.jpeg b/docs/zh/07-operation/pic/stream-04-createStreamWizard.jpeg new file mode 100644 index 0000000000..1c271e7740 Binary files /dev/null and b/docs/zh/07-operation/pic/stream-04-createStreamWizard.jpeg differ diff --git a/docs/zh/07-operation/pic/stream-05-createStreamSucc1.jpeg b/docs/zh/07-operation/pic/stream-05-createStreamSucc1.jpeg new file mode 100644 index 0000000000..9ceb096e5b Binary files /dev/null and b/docs/zh/07-operation/pic/stream-05-createStreamSucc1.jpeg differ diff --git a/docs/zh/07-operation/pic/stream-06-createStreamSql.jpeg b/docs/zh/07-operation/pic/stream-06-createStreamSql.jpeg new file mode 100644 index 0000000000..0f178d2ee0 Binary files /dev/null and b/docs/zh/07-operation/pic/stream-06-createStreamSql.jpeg differ diff --git a/docs/zh/07-operation/pic/stream-07-createStreamSucc2.jpeg b/docs/zh/07-operation/pic/stream-07-createStreamSucc2.jpeg new file mode 100644 index 0000000000..f5bc468388 Binary files /dev/null and b/docs/zh/07-operation/pic/stream-07-createStreamSucc2.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-01-dataSubscription.jpeg b/docs/zh/07-operation/pic/topic-01-dataSubscription.jpeg new file mode 100644 index 0000000000..4251bdf663 Binary files /dev/null and b/docs/zh/07-operation/pic/topic-01-dataSubscription.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-02-addTopic.jpeg b/docs/zh/07-operation/pic/topic-02-addTopic.jpeg new file mode 100644 index 0000000000..c611ae9783 Binary files /dev/null and b/docs/zh/07-operation/pic/topic-02-addTopic.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-03-addTopicWizard.jpeg b/docs/zh/07-operation/pic/topic-03-addTopicWizard.jpeg new file mode 100644 index 0000000000..e227d161ce Binary files /dev/null and b/docs/zh/07-operation/pic/topic-03-addTopicWizard.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-05-addTopicSucc1.jpeg b/docs/zh/07-operation/pic/topic-05-addTopicSucc1.jpeg new file mode 100644 index 0000000000..a9a5260fb0 Binary files /dev/null and b/docs/zh/07-operation/pic/topic-05-addTopicSucc1.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-06-addTopicSql.jpeg b/docs/zh/07-operation/pic/topic-06-addTopicSql.jpeg new file mode 100644 index 0000000000..9097b5e4cd Binary files /dev/null and b/docs/zh/07-operation/pic/topic-06-addTopicSql.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-07-addTopicsSucc2.jpeg b/docs/zh/07-operation/pic/topic-07-addTopicsSucc2.jpeg new file mode 100644 index 0000000000..f524cf1449 Binary files /dev/null and b/docs/zh/07-operation/pic/topic-07-addTopicsSucc2.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-08-shareTopic.jpeg b/docs/zh/07-operation/pic/topic-08-shareTopic.jpeg new file mode 100644 index 0000000000..bd51cd764d Binary files /dev/null and b/docs/zh/07-operation/pic/topic-08-shareTopic.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-09-sample.jpeg b/docs/zh/07-operation/pic/topic-09-sample.jpeg new file mode 100644 index 0000000000..72128e95ed Binary files /dev/null and b/docs/zh/07-operation/pic/topic-09-sample.jpeg differ diff --git a/docs/zh/07-operation/pic/topic-10-consumer.jpeg b/docs/zh/07-operation/pic/topic-10-consumer.jpeg new file mode 100644 index 0000000000..2c816ff307 Binary files /dev/null and b/docs/zh/07-operation/pic/topic-10-consumer.jpeg differ