Skip to content

Commit

Permalink
dm: add description about strict-optimistic-shard-mode (#14232)
Browse files Browse the repository at this point in the history
  • Loading branch information
GMHDBJD authored Jun 25, 2023
1 parent 4f35c01 commit 5037576
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
4 changes: 2 additions & 2 deletions dm/feature-shard-merge-optimistic.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ DM 支持在线上执行分库分表的 DDL 语句(通称 Sharding DDL),

## 乐观协调模式的配置

在任务的配置文件中指定 `shard-mode``optimistic` 则使用“乐观协调”模式,示例配置文件可以参考 [DM 任务完整配置文件介绍](/dm/task-configuration-file-full.md)
在任务的配置文件中指定 `shard-mode``optimistic` 则使用“乐观协调”模式,可通过开启 `strict-optimistic-shard-mode` 限制“乐观协调”模式的行为,示例配置文件可以参考 [DM 任务完整配置文件介绍](/dm/task-configuration-file-full.md)

## 使用限制

Expand All @@ -41,7 +41,7 @@ DM 支持在线上执行分库分表的 DDL 语句(通称 Sharding DDL),
- 增加没有默认值且非空的列:`ALTER TABLE table_name ADD COLUMN column_1 NOT NULL;`
- 重命名索引:`ALTER TABLE table_name RENAME INDEX index_1 TO index_2;`

各分表在执行以上 DDL 时,若顺序不同将导致同步中断,例如下述场景:
各分表在执行以上 DDL 时,如果指定 `strict-optimistic-shard-mode: true`,会直接中断任务并报错。如果指定 `strict-optimistic-shard-mode: false` 或未指定,若分表 DDL 顺序不同,将导致同步中断,例如下述场景:

- 分表 1 先重命名列,再修改列类型
1. 重命名列:`ALTER TABLE table_name RENAME COLUMN column_1 TO column_2;`
Expand Down
1 change: 1 addition & 0 deletions dm/task-configuration-file-full.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ name: test # 任务名称,需要全局唯一
task-mode: all # 任务模式,可设为 "full" - "只进行全量数据迁移"、"incremental" - "Binlog 实时同步"、"all" - "全量 + Binlog 实时同步"
shard-mode: "pessimistic" # 任务协调模式,可选的模式有 ""、"pessimistic、"optimistic"。默认值为 "" 即无需协调。如果是分库分表合并任务,请设置为悲观协调模式 "pessimistic"。
# 在 v2.0.6 版本后乐观模式逐渐成熟,深入了解乐观协调模式的原理和使用限制后,也可以设置为乐观协调模式 "optimistic"
strict-optimistic-shard-mode: false # 仅在乐观协调模式下生效,限制乐观协调模式的行为,默认值为 false。在 v7.2.0 中引入,详见 https://docs.pingcap.com/zh/tidb/v7.2/feature-shard-merge-optimistic
meta-schema: "dm_meta" # 下游储存 `meta` 信息的数据库
# timezone: "Asia/Shanghai" # 指定数据迁移任务时 SQL Session 使用的时区。DM 默认使用目标库的全局时区配置进行数据迁移,并且自动确保同步数据的正确性。使用自定义时区依然可以确保整个流程的正确性,但一般不需要手动指定。

Expand Down

0 comments on commit 5037576

Please sign in to comment.