Skip to content

Commit

Permalink
tidb-binlog: support binlog for clustered index (pingcap#6405)
Browse files Browse the repository at this point in the history
  • Loading branch information
lysu authored Jun 10, 2021
1 parent 1ac899b commit acd698a
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
3 changes: 2 additions & 1 deletion clustered-indexes.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,12 @@ mysql> SELECT TIDB_PK_TYPE FROM information_schema.tables WHERE table_schema = '
目前 TiDB 的聚簇索引具有以下两类限制:

- 明确不支持且没有支持计划的使用限制:
- 不支持与 TiDB Binlog 一起使用。开启 TiDB Binlog 后 TiDB 只允许创建单个整数列作为主键的聚簇索引;已创建的聚簇索引表的数据插入、删除和更新动作不会通过 TiDB Binlog 同步到下游。如需同步聚簇索引表,请使用 [TiCDC](/ticdc/ticdc-overview.md)
- 不支持与 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md) 一起使用;[`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions) 在聚簇索引表上不生效。
- 不支持对聚簇索引表进行降级。如需降级,请使用逻辑备份工具迁移数据。
- 另一类是尚未支持,但未来有计划支持的使用限制:
- 尚未支持通过 `ALTER TABLE` 语句增加、删除、修改聚簇索引。
- 特定版本的限制
- 在 v5.0 版本中,聚簇索引不支持与 TiDB Binlog 一起使用。开启 TiDB Binlog 后,TiDB 只允许创建单个整数列作为主键的聚簇索引;已创建的聚簇索引表的数据插入、删除和更新动作不会通过 TiDB Binlog 同步到下游。如需同步聚簇索引表,请升级至 v5.1 版本或使用 [TiCDC](/ticdc/ticdc-overview.md)

开启 TiDB Binlog 之后,要创建的聚簇索引如果不是由单个整数列构成,会报以下错误:

Expand Down
7 changes: 6 additions & 1 deletion tidb-binlog/tidb-binlog-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,14 @@ TiDB Binlog 集群主要分为 Pump 和 Drainer 两个组件,以及 binlogctl

## 注意事项

* TiDB Binlog 和 TiDB 在 v5.1 版本中解决了 v5.0 版本中引入的聚簇索引与 TiDB Binlog 不兼容问题。在升级 TiDB Binlog 和 TiDB Server 到 v5.1 版本后:开启 TiDB Binlog 后,TiDB 支持创建聚簇索引表;聚簇索引表的数据插入、删除和更新操作支持通过 TiDB Binlog 同步到下游。对于同步聚簇索引表时需注意:

- 如果从 v5.0 版本手动控制组件升级顺序进行升级,请确保先将 TiDB Binlog 升级至 v5.1 版本后再将 TiDB Server 升级至 v5.1 版本。
- 推荐将上下游的 TiDB 系统变量 [`tidb_enable_clustered_index`](/system-variables.md#tidb_enable_clustered_index-从-v50-版本开始引入) 配置为一致的值来保证上下游 TiDB 聚簇索引表结构一致。

* TiDB Binlog 与 TiDB v5.0 版本开始引入的以下特性不兼容,无法一起使用:

- [TiDB 聚簇索引特性](/clustered-indexes.md#限制):开启 TiDB Binlog 后 TiDB 不允许创建非单个整数列作为主键的聚簇索引;已创建的聚簇索引表的数据插入、删除和更新动作不会通过 TiDB Binlog 同步到下游。如需同步聚簇索引表,请使用 [TiCDC](/ticdc/ticdc-overview.md)
- [TiDB 聚簇索引特性](/clustered-indexes.md#限制):开启 TiDB Binlog 后 TiDB 不允许创建非单个整数列作为主键的聚簇索引;已创建的聚簇索引表的数据插入、删除和更新动作不会通过 TiDB Binlog 同步到下游。如需同步聚簇索引表,请升级至 v5.1 版本或使用 [TiCDC](/ticdc/ticdc-overview.md)
- TiDB 系统变量 [tidb_enable_async_commit](/system-variables.md#tidb_enable_async_commit-从-v50-版本开始引入):启用 TiDB Binlog 后,开启该选项无法获得性能提升。要获得性能提升,建议使用 [TiCDC](/ticdc/ticdc-overview.md) 替代 TiDB Binlog。
- TiDB 系统变量 [tidb_enable_1pc](/system-variables.md#tidb_enable_1pc-从-v50-版本开始引入):启用 TiDB Binlog 后,开启该选项无法获得性能提升。要获得性能提升,建议使用 [TiCDC](/ticdc/ticdc-overview.md) 替代 TiDB Binlog。

Expand Down
5 changes: 3 additions & 2 deletions upgrade-tidb-using-tiup.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ tiup cluster upgrade <cluster-name> <version> --force
tiup install ctl:v5.0.0
```
## 5. TiDB 5.0 兼容性变化
## 5. TiDB 5.1 兼容性变化
兼容性变化请参考 5.0 GA Release Notes。
- 兼容性变化请参考 5.1 GA Release Notes。
- 请避免在对使用 TiDB-Binlog 的集群进行滚动升级过程中新创建聚簇索引表。

0 comments on commit acd698a

Please sign in to comment.