Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 26 additions & 10 deletions faq/upgrade-faq.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,40 @@
---
title: 升级后常见问题
title: 升级与升级后常见问题
summary: TiDB 升级与升级后的常见问题与解决办法。
category: FAQ
aliases: ['/docs-cn/dev/faq/upgrade/']
---

# 升级后常见问题
# 升级与升级后常见问题

本文列出了一些升级后可能会遇到的问题与解决办法
本文介绍 TiDB 升级与升级后的常见问题与解决办法

## 执行 DDL 操作时遇到的字符集 (charset) 问题
## 升级常见问题

本小节列出了 TiDB 升级相关的常见问题与解决办法。

### 滚动升级有那些影响?

滚动升级 TiDB 服务,滚动升级期间不影响业务运行。需要配置最小集群拓扑(TiDB \* 2、PD \* 3、TiKV \* 3),如果集群环境中有 Pump 和 Drainer 服务,建议先停止 Drainer,然后滚动升级(升级 TiDB 时会升级 Pump)。

### Binary 如何升级?

Binary 不是建议的安装方式,对升级支持也不友好,建议换成 [TiUP 部署](/production-deployment-using-tiup.md)。

## 升级后常见问题

本小节列出了一些升级后可能会遇到的问题与解决办法。

### 执行 DDL 操作时遇到的字符集 (charset) 问题

TiDB 在 v2.1.0 以及之前版本(包括 v2.0 所有版本)中,默认字符集是 UTF8。从 v2.1.1 开始,默认字符集变更为 UTF8MB4。如果在 v2.1.0 及之前版本中,建表时显式指定了 table 的 charset 为 UTF8,那么升级到 v2.1.1 之后,执行 DDL 操作可能会失败。

要避免该问题,需注意以下两个要点:

1. 在 v2.1.3 之前,TiDB 不支持修改 column 的 charset。所以,执行 DDL 操作时,新 column 的 charset 需要和旧 column 的 charset 保持一致。

2. 在 v2.1.3 之前,即使 column 的 charset 和 table 的 charset 不一样,`show create table` 也不会显示 column 的 charset,但可以通过 HTTP API 获取 table 的元信息来查看 column 的 charset,下文提供了示例。
- 在 v2.1.3 之前,TiDB 不支持修改 column 的 charset。所以,执行 DDL 操作时,新 column 的 charset 需要和旧 column 的 charset 保持一致。
- 在 v2.1.3 之前,即使 column 的 charset 和 table 的 charset 不一样,`show create table` 也不会显示 column 的 charset,但可以通过 HTTP API 获取 table 的元信息来查看 column 的 charset,下文提供了示例。

### 问题 1:`unsupported modify column charset utf8mb4 not match origin utf8`
#### `unsupported modify column charset utf8mb4 not match origin utf8`

- 升级前:v2.1.0 及之前版本

Expand Down Expand Up @@ -115,7 +131,7 @@ alter table t change column a a varchar(22) character set utf8;
}
```

### 问题 2:`unsupported modify charset from utf8mb4 to utf8`
#### `unsupported modify charset from utf8mb4 to utf8`

- 升级前:v2.1.1,v2.1.2

Expand Down Expand Up @@ -196,7 +212,7 @@ alter table t change column a a varchar(22) character set utf8;
alter table t change column a a varchar(20) character set utf8mb4;
```

### 问题 3:`ERROR 1366 (HY000): incorrect utf8 value f09f8c80(🌀) for column a`
#### `ERROR 1366 (HY000): incorrect utf8 value f09f8c80(🌀) for column a`

TiDB 在 v2.1.1 及之前版本中,如果 charset 是 UTF8,没有对 4-byte 的插入数据进行 UTF8 Unicode encoding 检查。在v2.1.2 及之后版本中,添加了该检查。

Expand Down