Skip to content

Commit

Permalink
*: support smooth upgrade TiDB
Browse files Browse the repository at this point in the history
  • Loading branch information
zimulala committed May 17, 2023
1 parent 7f9c014 commit d25e45a
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 5 deletions.
1 change: 1 addition & 0 deletions TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@
- [与 Apache Kafka 和 Apache Flink 进行数据集成](/replicate-data-to-kafka.md)
- 运维操作
- 升级 TiDB 版本
- [平滑升级 TiDB](/upgrade-tidb.md)
- [使用 TiUP 升级](/upgrade-tidb-using-tiup.md)
- [使用 TiDB Operator](https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/upgrade-a-tidb-cluster)
- [TiFlash v6.2 升级帮助](/tiflash-620-upgrade-guide.md)
Expand Down
10 changes: 8 additions & 2 deletions faq/upgrade-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@ aliases: ['/docs-cn/dev/faq/upgrade-faq/','/docs-cn/dev/faq/upgrade/']

### 集群在执行 DDL 请求期间可以进行升级操作吗?

集群中有 DDL 语句正在被执行时(通常为 `ADD INDEX` 和列类型变更等耗时较久的 DDL 语句),**请勿进行**升级操作。在升级前,建议使用 [`ADMIN SHOW DDL`](/sql-statements/sql-statement-admin-show-ddl.md) 命令查看集群中是否有正在进行的 DDL Job。如需升级,请等待 DDL 执行完成或使用 [`ADMIN CANCEL DDL`](/sql-statements/sql-statement-admin-cancel-ddl.md) 命令取消该 DDL Job 后再进行升级。
* 从 TiDB 低版本升级至 v7.1 版本时:

另外,在升级 TiDB 集群的过程中,**请勿执行** DDL 语句,否则可能会出现行为未定义的问题。
* 集群中有 DDL 语句正在被执行时(通常为 `ADD INDEX` 和列类型变更等耗时较久的 DDL 语句),**请勿进行**升级操作。在升级前,建议使用 [`ADMIN SHOW DDL`](/sql-statements/sql-statement-admin-show-ddl.md) 命令查看集群中是否有正在进行的 DDL Job。如需升级,请等待 DDL 执行完成或使用 [`ADMIN CANCEL DDL`](/sql-statements/sql-statement-admin-cancel-ddl.md) 命令取消该 DDL Job 后再进行升级。

* 另外,在升级 TiDB 集群的过程中,**请勿执行** DDL 语句,否则可能会出现行为未定义的问题。

* 从 TiDB v7.1 版本升级至更高的版本时:

* 不用遵循限制低版本升级时的限制,即在升级时可以接收用户 DDL 任务。建议参考[平滑升级 TiDB](/upgrade-tidb.md)

### Binary 如何升级?

Expand Down
8 changes: 5 additions & 3 deletions upgrade-tidb-using-tiup.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ aliases: ['/docs-cn/dev/upgrade-tidb-using-tiup/','/docs-cn/dev/how-to/upgrade/u

> **警告:**
>
> - 不支持将 TiFlash 组件从 5.3 之前的老版本在线升级至 5.3 及之后的版本,只能采用停机升级。如果集群中其他组件(如 tidb,tikv)不能停机升级,参考[不停机升级](#不停机升级)中的注意事项。
> - 在升级 TiDB 集群的过程中,**请勿执行** DDL 语句,否则可能会出现行为未定义的问题。
> - 集群中有 DDL 语句正在被执行时(通常为 `ADD INDEX` 和列类型变更等耗时较久的 DDL 语句),**请勿进行**升级操作。在升级前,建议使用 [`ADMIN SHOW DDL`](/sql-statements/sql-statement-admin-show-ddl.md) 命令查看集群中是否有正在进行的 DDL Job。如需升级,请等待 DDL 执行完成或使用 [`ADMIN CANCEL DDL`](/sql-statements/sql-statement-admin-cancel-ddl.md) 命令取消该 DDL Job 后再进行升级。
> 1. 不支持将 TiFlash 组件从 5.3 之前的老版本在线升级至 5.3 及之后的版本,只能采用停机升级。如果集群中其他组件(如 tidb,tikv)不能停机升级,参考[不停机升级](#不停机升级)中的注意事项。
> 2. 在升级 TiDB 集群的过程中,**请勿执行** DDL 语句,否则可能会出现行为未定义的问题。
> 3. 集群中有 DDL 语句正在被执行时(通常为 `ADD INDEX` 和列类型变更等耗时较久的 DDL 语句),**请勿进行**升级操作。在升级前,建议使用 [`ADMIN SHOW DDL`](/sql-statements/sql-statement-admin-show-ddl.md) 命令查看集群中是否有正在进行的 DDL Job。如需升级,请等待 DDL 执行完成或使用 [`ADMIN CANCEL DDL`](/sql-statements/sql-statement-admin-cancel-ddl.md) 命令取消该 DDL Job 后再进行升级。
>
> 从 TiDB v7.1 版本升级至更高的版本时,可以不遵循上面的限制 1 和 2,建议参考[平滑升级 TiDB 的限制](/upgrade-tidb.md#使用限制)
> **注意:**
>
Expand Down
43 changes: 43 additions & 0 deletions upgrade-tidb.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: 平滑升级 TiDB
summary: 本文介绍支持无需手动取消 DDL 的平滑升级集群功能。
---

# 平滑升级 TiDB

此功能用于取消禁止用户 DDL 操作存在于升级过程的限制。本文档介绍了 TiDB 升级过程中对用户 DDL 操作的支持和约束情况。

此功能具体放开的两个限制如下(可以参考[使用 TiUP 升级 TiDB](/upgrade-tidb-using-tiup.md#使用-tiup-升级-tidb)中警告部分):

1. 在升级过程中,请勿执行 DDL 操作,否则可能会出现行为未定义的问题;
2. 集群中有 DDL 语句正在被执行时(通常为 ADD INDEX 和列类型变更等耗时较久的 DDL 语句),请勿进行升级操作。

## 功能简介

在 TiDB 升级过程中会先暂停用户 DDL 操作,然后执行升级过程中的系统 DDL 操作,再恢复原先的 DDL 操作,最后完整升级。其中恢复的用户 DDL job 还是按升级前的顺序执行。此外,整个升级过程无需用户干预。

## 使用限制

### 用户操作限制

* 在升级前,有正在处理的 canceling DDL job (即有正在被处理的 DDL job 被用户取消了)时,升级会直接报错(因为 canceling 状态的 job 不能被 `pause`)并退出升级。

* 在升级过程中,不允许以下操作:

* 禁止对系统表(mysql.*、information_schema.*、performance_schema.*、metrics_schema.*)进行 DDL 操作。

* `ADMIN CANCEL/PAUSE/RESUME DDL JOBS job_id [, job_id] ...;`

### 组件使用限制

* 升级过程中,不支持的一些组件操作如下:

* BR,Lightning (Physical Import Mode) 和通过 ingest 方式导入数据等组件:升级过程中不能处理这类组件的操作,是因为这些操作中可能将 paused 状态的 DDL 拷贝到 TiDB。但是此状态的 DDL 不能自动 resume,可能导致后续 DDL 卡住的情况。

* DM,Lightning (Logical Import Mode) 和 TiCDC 等组件。即在升级过程中,通过此类组件导入 SQL 到 TiDB,且其中有 DDL 操作,那么会导致此导入操作阻塞,此外可能存在未定义错误。

## 支持版本

此功能从 v7.1.0 版本开始引入,且当前为实验特性。

此功能支持版本:从 TiDB v7.1 版本升级至更高的版本。

0 comments on commit d25e45a

Please sign in to comment.