@@ -5,32 +5,32 @@ description:
55 调查和管理兼容性
66---
77
8- 本指南将介绍如何调查和管理兼容性 :
9- - 在 databend-query 和 databend-meta 之间 。
10- - 在不同版本的 databend-meta 之间 。
8+ 本指南将介绍如何调查和管理以下兼容性 :
9+ - databend-query 和 databend-meta 之间的兼容性 。
10+ - 不同版本的 databend-meta 之间的兼容性 。
1111
1212## databend-query 和 databend-meta 之间的兼容性
1313
1414### 识别版本
1515
16- - 查找 databend-query 的构建版本及其兼容的 databend-meta 版本:
16+ - 要查找 databend-query 的构建版本及其兼容的 databend-meta 版本:
1717
1818 ``` shell
1919 databend-query --cmd ver
2020
21- # 输出:
21+ # 输出:
2222 version: 0.7.61-nightly
2323 min-compatible-metasrv-version: 0.7.59
2424 ```
2525
2626 这意味着此版本的 databend-query(` 0.7.61-nightly ` ) 可以与至少版本为 ` 0.7.59 ` 的 databend-meta 通信。
2727
28- - 查找 databend-meta 的构建版本及其兼容的 databend-query 版本:
28+ - 要查找 databend-meta 的构建版本及其兼容的 databend-query 版本:
2929
3030 ``` shell
3131 databend-meta --cmd ver
3232
33- # 输出:
33+ # 输出:
3434 version: 0.7.61-nightly
3535 min-compatible-client-version: 0.7.57
3636 ```
@@ -39,8 +39,8 @@ description:
3939
4040### 维护兼容性
4141
42- 一个 databend 集群必须部署兼容版本的 databend-query 和 databend-meta。
43- 一个 databend-query 和 databend-meta 是兼容的,当且仅当以下陈述成立 :
42+ databend 集群必须部署兼容版本的 databend-query 和 databend-meta。
43+ databend-query 和 databend-meta 兼容当且仅当以下条件成立 :
4444
4545```
4646databend-query.version >= databend-meta.min-compatible-client-version
@@ -49,33 +49,33 @@ databend-bend.version >= databend-query.min-compatible-metasrv-version
4949
5050::: caution
5151
52- 如果部署了不兼容的版本,当 databend-query 尝试连接到 databend-meta 时,会发生 ` InvalidArgument ` 错误,
52+ 如果部署了不兼容的版本,当 databend-query 尝试连接 databend-meta 时,将会发生 ` InvalidArgument ` 错误,
5353该错误可以在 databend-query 日志中找到。
5454然后 databend-query 将停止工作。
5555
5656:::
5757
5858#### 兼容性验证协议
5959
60- 当 meta-client( databend-query) 和 databend-meta 之间建立连接时,会在 ` handshake ` RPC 中检查兼容性。
60+ 当 meta-client( databend-query) 和 databend-meta 之间建立连接时,会在 ` handshake ` RPC 中检查兼容性。
6161
62- 客户端 ` C ` ( databend-query) 和服务器 ` S ` ( databend-meta) 维护两个语义版本:
62+ 客户端 ` C ` ( databend-query) 和服务器 ` S ` ( databend-meta) 维护两个语义版本:
6363
64- - ` C ` 维护其自身的 semver( ` C.ver ` ) 和最小兼容的 ` S ` semver( ` C.min_srv_ver ` ) 。
65- - ` S ` 维护其自身的 semver( ` S.ver ` ) 和最小兼容的 ` S ` semver( ` S.min_cli_ver ` ) 。
64+ - ` C ` 维护其自身的 semver( ` C.ver ` ) 和最小兼容的 ` S ` semver( ` C.min_srv_ver ` ) 。
65+ - ` S ` 维护其自身的 semver( ` S.ver ` ) 和最小兼容的 ` S ` semver( ` S.min_cli_ver ` ) 。
6666
6767当握手时:
6868
69- - ` C ` 将其 ver ` C.ver ` 发送给 ` S ` ,
70- - 当 ` S ` 接收到握手请求时 ,` S ` 断言 ` C.ver >= S.min_cli_ver ` 。
71- - 然后 ` S ` 用其 ` S.ver ` 回复握手回复 。
72- - 当 ` C ` 接收到回复时 ,` C ` 断言 ` S.ver >= C.min_srv_ver ` 。
69+ - ` C ` 发送其版本 ` C.ver ` 给 ` S ` ,
70+ - 当 ` S ` 收到握手请求时 ,` S ` 断言 ` C.ver >= S.min_cli_ver ` 。
71+ - 然后 ` S ` 回复握手响应,包含其 ` S.ver ` 。
72+ - 当 ` C ` 收到响应时 ,` C ` 断言 ` S.ver >= C.min_srv_ver ` 。
7373
7474如果这两个断言都成立,则握手成功。
7575
7676例如:
7777- ` S: (ver=3, min_cli_ver=1) ` 与 ` C: (ver=3, min_srv_ver=2) ` 兼容。
78- - ` S: (ver=4, min_cli_ver=4) ` ** 不** 与 ` C: (ver=3, min_srv_ver=2) ` 兼容。
78+ - ` S: (ver=4, min_cli_ver=4) ` ** 不** 与 ` C: (ver=3, min_srv_ver=2) ` 兼容。
7979 因为虽然 ` S.ver(4) >= C.min_srv_ver(3) ` 成立,
8080 但 ` C.ver(3) >= S.min_cli_ver(4) ` 不成立。
8181
@@ -93,7 +93,7 @@ S.ver: 2 3 4
9393
9494#### 兼容性状态
9595
96- 以下是最新 query-meta 兼容性的图示 :
96+ 以下是 query-meta 最新兼容性的说明 :
9797
9898| ` Meta\Query ` | [ 0.9.41, 1.1.34) | [ 1.1.34, 1.2.287) | [ 1.2.287, 1.2.361) | [ 1.2.361, +∞) |
9999| :-------------------| :-----------------| :---------------| :-----------| :-----------|
@@ -106,7 +106,7 @@ S.ver: 2 3 4
106106| [ 1.2.226, 1.2.258) | ✅ | ✅ | ✅ | ❌ |
107107| [ 1.2.258, +∞) | ✅ | ✅ | ✅ | ✅ |
108108
109- 未包含在上表中的历史版本 :
109+ 未包含在上述图表中的历史版本 :
110110
111111- Query ` [0.7.59, 0.8.80) ` 与 Meta ` [0.8.30, 0.9.23) ` 兼容。
112112- Query ` [0.8.80, 0.9.41) ` 与 Meta ` [0.8.35, 0.9.42) ` 兼容。
@@ -116,19 +116,19 @@ S.ver: 2 3 4
116116
117117## databend-query 之间的兼容性
118118
119- | Query 版本 | 向后兼容性 |
120- | :-------------------| :--------------------|
121- | [ -∞, 1.2.307) | [ -∞, 1.2.311) |
122- | [ 1.2.307, 1.2.311) | [ -∞, 1.2.311) |
123- | [ 1.2.311, +∞) | [ 1.2.307, +∞) |
119+ | Query 版本 | 向后兼容于 |
120+ | :-------------------| :-------------------------- |
121+ | [ -∞, 1.2.307) | [ -∞, 1.2.311) |
122+ | [ 1.2.307, 1.2.311) | [ -∞, 1.2.311) |
123+ | [ 1.2.311, +∞) | [ 1.2.307, +∞) |
124124
125- 自 1.2.307 起,支持反序列化 Role 信息为 pb 和 json,但仅支持将 Role 信息序列化为 json。
125+ 自 1.2.307 起,支持使用 pb 和 json 反序列化 Role 信息 ,但仅支持将 Role 信息序列化为 json。
126126
127127自 1.2.311 起,仅支持将 Role 信息序列化为 pb。
128128
129- 防止未成功升级的查询节点在滚动升级期间因角色操作而读取数据 。建议先升级到 1.2.307,然后再升级到 1.2.311。
129+ 防止在滚动升级期间,未成功升级的查询节点由于对 Role 的操作而无法读取数据 。建议先升级到 1.2.307,然后再升级到 1.2.311。
130130
131- 例如,当前版本为 1.2.306 升级到 1.2.312:
131+ 例如,当前版本为 1.2.306, 升级到 1.2.312:
132132
133133```
1341341.2.307 -> 1.2.311 -> 1.2.312
@@ -137,44 +137,46 @@ S.ver: 2 3 4
137137
138138## databend-meta 之间的兼容性
139139
140- | Meta 版本 | 向后兼容性 |
141- | :-------------------| : --------------------|
142- | [ 0.9.41, 1.2.212) | [ 0.9.41, 1.2.212) |
143- | [ 1.2.212, 1.2.479) | [ 0.9.41, 1.2.479) |
144- | [ 1.2.479, 1.2.655) | [ 1.2.288, 1.2.655) |
145- | [ 1.2.655, +∞) | [ 1.2.288, +∞) |
140+ | Meta 版本 | 向后兼容于 |
141+ | :-------------------- | :----- --------------------|
142+ | [ 0.9.41, 1.2.212) | [ 0.9.41, 1.2.212) |
143+ | [ 1.2.212, 1.2.479) | [ 0.9.41, 1.2.479) |
144+ | [ 1.2.479, 1.2.655) | [ 1.2.288, 1.2.655) |
145+ | [ 1.2.655, +∞) | [ 1.2.288, +∞) |
146146
147147
148- - ` 1.2.53 ` 不兼容,允许滚动升级而无需传输快照。
149- 快照格式发生变化,因此在滚动升级期间,
150- 要求所有节点数据都是最新的,确保无需通过快照进行复制。
148+ ![ Image] ( https://github.com/user-attachments/assets/f63d80ee-f646-4d6a-9bec-be607e47088d )
149+
150+ - ` 1.2.53 ` 不兼容,允许在不传输快照的情况下进行滚动升级。
151+ 快照格式已更改,因此在滚动升级期间,
152+ 需要所有节点数据保持最新,确保无需通过快照进行复制。
151153
152154- ` 1.2.163 ` 功能:gRPC API:添加了 ` kv_read_v1() ` 。用于流式读取。
153155
154- - ` 1.2.212 ` 2023-11-16 功能:raft API:` install_snapshot_v1() ` 。兼容旧版本 。
156+ - ` 1.2.212 ` 2023-11-16 功能:raft API:` install_snapshot_v1() ` 。与旧版本兼容 。
155157 支持滚动升级。
156- 在此版本中,databend-meta raft-server 引入了一个新的 API ` install_snapshot_v1() ` 。
158+ 在此版本中,databend-meta raft-server 引入了新的 API ` install_snapshot_v1() ` 。
157159 raft-client 将尝试使用此新 API 或原始的 ` install_snapshot() ` 。
158160
159- - ` 1.2.479 ` 2024-05-21 移除:从客户端和服务器中移除了 ` install_snapshot() ` (v0) 。
160- ` install_snapshot_v1() ` 是唯一用于安装快照的 API,并且成为客户端的** 必需** 。
161+ - ` 1.2.479 ` 2024-05-21 移除:` install_snapshot() ` (v0) 从客户端和服务器中移除 。
162+ ` install_snapshot_v1() ` 是安装快照的唯一 API,并且成为客户端的 ** 必需** 功能 。
161163
162164- ` 1.2.528 ` 2024-06-13 移除磁盘数据版本 ` V001 ` 。第一个使用 ` V002 ` 的版本是 ` 1.2.53 ` ,2023-08-08。
163165 因此,自 ` 1.2.528 ` 起,最旧的兼容版本是 ` 1.2.53 ` 。
164- 因此,从此版本起 ,兼容性保持不变。
166+ 因此,从该版本开始 ,兼容性保持不变。
165167
166168- ` 1.2.552 ` 2024-07-02 引入磁盘 ` V003 ` ,使用 ` rotbl ` 格式快照,
167- 与 ` V002 ` 兼容。最旧的兼容版本是 ` 1.2.288 ` (` 1.2.212~1.2.287 ` 被移除 )。
169+ 与 ` V002 ` 兼容。最旧的兼容版本是 ` 1.2.288 ` (` 1.2.212~1.2.287 ` 已被移除 )。
168170
169171- ` 1.2.655 ` 2024-11-11 引入磁盘 ` V004 ` ,使用基于 WAL 的 Raft 日志存储,
170- 与 ` V002 ` 兼容。最旧的兼容版本是 ` 1.2.288 ` (` 1.2.212~1.2.287 ` 被移除 )。
172+ 与 ` V002 ` 兼容。最旧的兼容版本是 ` 1.2.288 ` (` 1.2.212~1.2.287 ` 已被移除 )。
171173
172174
173175## databend-meta 磁盘数据的兼容性
174176
175177Databend-meta 的磁盘数据随着时间的推移而演变,同时保持向后兼容性。
176178
177- | DataVersion | Databend 版本 | 最小兼容性 |
179+ | 数据版本 | Databend 版本 | 最小兼容版本 |
178180| :------------| :-----------------| :--------------------|
179181| V004 | 1.2.655 | V002 |
180182| V003 | 1.2.547 | V002 |
@@ -201,15 +203,15 @@ On Disk Data:
201203- ` Working DataVersion ` 表示 Databend-meta 操作的版本。
202204- ` On Disk Data -- DataVersion ` 表示磁盘数据的版本。
203205
204- Working DataVersion 必须大于或等于磁盘 DataVersion;否则,系统将崩溃 。
206+ Working DataVersion 必须大于或等于磁盘 DataVersion;否则,它将 panic 。
205207
206208磁盘 DataVersion 必须与当前 Databend-meta 版本兼容。
207- 如果不兼容,系统将提示用户降级 Databend-meta 并崩溃退出 。
209+ 如果不兼容,系统将提示用户降级 Databend-meta 并以 panic 退出 。
208210
209211### 自动升级
210212
211- 当 ` databend-meta ` 启动时,如果磁盘数据与 Working DataVersion 兼容,则会升级磁盘数据 。
212- 升级进度将打印到 ` stderr ` 和 INFO 级别的日志文件中 ,例如:
213+ 当 ` databend-meta ` 启动时,如果磁盘数据与 Working DataVersion 兼容,则会进行升级 。
214+ 升级进度将打印到 ` stderr ` 并记录到日志文件中 ,例如:
213215
214216``` text
215217Upgrade on-disk data
@@ -222,15 +224,15 @@ Finished upgrading: version: V001, upgrading: None
222224Write header: version: V001, upgrading: None
223225```
224226
225- 如果 ` databend-meta ` 在升级完成之前崩溃 ,
226- 它将清除部分升级的数据并在再次启动时恢复升级 。
227+ 如果 ` databend-meta ` 在升级完成前崩溃 ,
228+ 它将在启动时清除部分升级的数据并恢复升级 。
227229
228230### 备份数据兼容性
229231
230- - 导出的备份数据** 只能** 使用相同版本的 ` databend-metactl ` 导入。
232+ - 导出的备份数据 ** 只能** 使用相同版本的 ` databend-metactl ` 导入。
231233
232234- 备份的第一行是版本,例如:
233235 ` ["header",{"DataHeader":{"key":"header","value":{"version":"V100","upgrading":null}}}] `
234236
235- - ** 不会** 在导入时进行自动升级 。
237+ - 导入时 ** 不会** 进行自动升级 。
236238 自动升级仅在 ` databend-meta ` 启动时进行。
0 commit comments