Skip to content

Commit

Permalink
some comments fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
fengou1 committed Mar 15, 2022
1 parent a1cfaae commit f3a787e
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions br/br-batch-create-table.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ summary: 了解 BR 数据恢复批量建表功能,在集群 restore 的情况
{{< copyable "shell-regular" >}}

```shell
bin/br restore table --db batchmark --table order_line -s local:///br_data/ --pd 172.16.5.198:2379 --log-file restore-concurrency.log --concurrency 1024 --ddl-batch-size=256
bin/br restore full -s local:///br_data/ --pd 172.16.5.198:2379 --log-file restore-concurrency.log --concurrency 1024 --ddl-batch-size=256
```

* 此参数在数据恢复时,可以加速建表速度,测试显示6万张表恢复建表时间仅需5分钟
**此参数在数据恢复时,可以加速建表速度,测试显示 6 万张表恢复建表时间仅需 5 分钟**

## 使用限制

Expand All @@ -32,15 +32,15 @@ bin/br restore table --db batchmark --table order_line -s local:///br_data/ --pd
该功能的已知问题及其解决方案如下:

- BR 恢复存档时报错 `entry too large, the max entry size is 6291456, the size of data is 7690800`
- 解决方法:可以尝试降低并发大小,如设置 `--ddl-batch-size=128` 或者更小的值。当你已经设置了 `--ddl-batch-size` 参数值后,在使用 BR 恢复数据时,BR 会先调用内部接口 `BatchCreateTableWithInfo`,然后使用内部 DDL job `ActionCreateTables`,最后根据已设置的 `--ddl-batch-size` 的值来在 TiDB 建表。当 TiDB 执行这个 DDL job 时,TiDB 会把 job 队列写到 TiKV 上。由于 TiDB 能够一次性发送的 job message 默认的最大值为 6 MB(**不建议**修改此值),因此,单次发送的所有表的 schema 总和不可以超过 6 MB,否则,会报 `entry too large, the max entry size is 6291456, the size of data is 7690800` 错误。如需了解有关单个写入请求的数据量的具体限制,请参阅 TiDB 配置项 [txn-entry-size-limit](/tidb-configuration-file.md#txn-entry-size-limit-从-v50-版本开始引入) 和 TiKV 配置项 [raft-entry-max-size](/tikv-configuration-file.md#raft-entry-max-size)
- 解决方法:可以尝试降低并发大小,设置 `--ddl-batch-size=128` 或者更小的值。原因是当 TiDB 执行这个 DDL job 时,TiDB 会把 job 队列写到 TiKV 上。由于 TiDB 能够一次性发送的 job message 默认的最大值为 6 MB(**不建议**修改此值),因此,单次发送的所有表的 schema 总和不可以超过 6 MB,否则,会报 `entry too large, the max entry size is 6291456, the size of data is 7690800` 错误。如需了解有关单个写入请求的数据量的具体限制,请参阅 TiDB 配置项 [txn-entry-size-limit](/tidb-configuration-file.md#txn-entry-size-limit-从-v50-版本开始引入) 和 TiKV 配置项 [raft-entry-max-size](/tikv-configuration-file.md#raft-entry-max-size)

## 实现原理

在 v6.0.0 以前,BR使用老的建表方法,老的建表方法是类似于 SQL 层 create table, 每张表会引起一次 schema version 的变更, 每次 schema 变更需要 需要同步到其他 BR 和其他的 TiDB.在 v6.0.0 及以后,数据恢复批量建表会按批来建表,每次建一批表且 TiDB schema version 变更一次。此方法极大的提高了建表速度
在 v6.0.0 以前,BR使用老的建表方法,老的建表方法是类似于 SQL 层 create table每张表会引起一次 schema version 的变更, 每次 schema 变更需要同步到其他 BR 和其他的 TiDB在 v6.0.0 及以后,数据恢复批量建表会按批来建表,每次建一批表且 TiDB schema version 仅变更一次。此方法极大地提高了建表速度

### 以下集群配置测试结果

* 集群配置:15 个 TiKV 配备 16 个 CPU 80G 内存, 3个 TiDB, 3个 PD.
* 集群配置:15 个 TiKV 配备 16 个 CPU 80G 内存, 3 个 TiDB, 3 个 PD.
* 数据规模:`total-kv-size=16.16TB`
* TiKV [import.num-threads](/tikv-configuration-file.md#num-threads) 设置为 16

Expand Down

0 comments on commit f3a787e

Please sign in to comment.