Skip to content

Commit

Permalink
lightning: add new configuration for incremental restore (pingcap#8129)
Browse files Browse the repository at this point in the history
  • Loading branch information
glorv authored Jan 14, 2022
1 parent c216bc8 commit 32554c5
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 11 deletions.
14 changes: 13 additions & 1 deletion tidb-lightning/tidb-lightning-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ table-concurrency = 6
# 对于不同的存储介质,此参数可能需要调整以达到最佳效率。
io-concurrency = 5

# 在并行导入模式下,在目标集群保存各个 TiDB Lightning 实例元信息的 schema 名字,默认为 "lightning_metadata"。
# 如果未开启并行导入模式,无须设置此配置项。
# **注意:**
# - 对于参与同一批并行导入的每个 TiDB Lightning 实例,该参数设置的值必须相同,否则将无法确保导入数据的正确性。
# - 如果开启并行导入模式,需要确保导入使用的用户(对于 tidb.user 配置项)有权限创建和访问此配置对应的库。
# - TiDB Lightning 在导入完成后会删除此 schema,因此不要使用已存在的库名配置该参数。
meta-schema-name = "lightning_metadata"

[security]
# 指定集群中用于 TLS 连接的证书和密钥。
# CA 的公钥证书。如果留空,则禁用 TLS。
Expand Down Expand Up @@ -93,8 +101,12 @@ driver = "file"
# keep-after-success = false

[tikv-importer]
# 选择后端:“local” 或 “importer” 或 “tidb”
# "local":默认使用该模式,适用于 TB 级以上大数据量,但导入期间下游 TiDB 无法对外提供服务。
# "tidb":TB 级以下数据量也可以采用 "tidb" 后端模式,下游 TiDB 可正常提供服务。
# backend = "local"
# 是否允许向已存在数据的表导入数据。默认值为 false。
# 当使用并行导入模式时,由于多个 TiDB Lightning 实例同时导入一张表,因此此开关必须设置为 true。
# incremental-import = false
# 当后端是 “importer” 时,tikv-importer 的监听地址(需改为实际地址)。
addr = "172.16.31.10:8287"
# 当后端是 “tidb” 时,插入重复数据时执行的操作。
Expand Down
6 changes: 5 additions & 1 deletion tidb-lightning/tidb-lightning-distributed-import.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,11 @@ status-addr = ":8289"
data-source-dir = "/path/to/source-dir"
[tikv-importer]
# 使用 Local 后端
# 是否允许向已存在数据的表导入数据。默认值为 false。
# 当使用并行导入模式时,由于多个 TiDB Lightning 实例同时导入一张表,因此此开关必须设置为 true。
incremental-import = true
# "local":默认使用该模式,适用于 TB 级以上大数据量,但导入期间下游 TiDB 无法对外提供服务。
# "tidb":TB 级以下数据量也可以采用 "tidb" 后端模式,下游 TiDB 可正常提供服务。
backend = "local"
# 设置本地排序数据的路径
Expand Down
19 changes: 10 additions & 9 deletions tidb-lightning/tidb-lightning-prechecks.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ summary: 本文档介绍了 TiDB Lightning 前置检查功能,确保 TiDB Ligh

下表介绍了各检查项和详细解释。

| 检查项 | 解释 |
| ---- | ---- |
| 集群版本/状态是否正常| 检查配置中集群是否可以连接,当后端模式是 Local 的时候,还会检查 TiKV/PD/TiFlash 版本是否支持 Local 导入模式。|
| 是否有权限读取数据 | 检查当从云存储(Amazon S3)读取数据的时候,是否有对应的权限,确保不会因权限缺失导致导入中断。|
| 导入空间是否足够 | 检查 TiKV 集群是否有足够空间导入数据。检查时会对数据源进行采样,通过采样结果预估索引大小占比。由于估算中考虑了索引,因此可能会出现尽管数据源大小低于本地盘可用空间,但依然无法通过检测的情况。当后端是 Local 的时候,因为需要在本地进行外部排序,所以还会检查本地存储是否足够。|
| region 分布状态 | 检查 TiKV 集群的 region 分布是否均匀,以及是否存在大量空 region,如果空 region 的数量大于 max(1000, 表的数量 * 3) ,即大于 “1000” 和 “3 倍表数量”二者中的最大者,无法执行导入。 |
| 数据文件是否有大 CSV 文件 | 当备份文件中出现大于 10 GiB 的 CSV 文件且无法进行自动切分(StrictFormat=false)的时候,会导致导入性能下降。该检查的目的是提醒用户确保数据格式的情况下,开启自动切分 CSV 功能。 |
| 是否可以从断点恢复 | 该检查是确保断点恢复过程中,不会出现对源文件和数据库中 schema 进行修改,导致导入错误数据的情况。|
| 是否可以导入数据到已存在的数据表中| 当导入到已创建好的数据表中时,该检查尽可能的检查此次导入的源文件是否和已存在的数据表匹配。检查列数是否匹配,如果源文件存在列名,则检查列名是否匹配。当源文件存在缺省列,则检查缺省列在数据表中是否存在 Default Value,如果存在,则检查通过。|
| 检查项 | 支持版本 | 解释 |
| ---- | --- | ---- |
| 集群版本/状态是否正常| >= 5.3.0 | 检查配置中集群是否可以连接,当后端模式是 Local 的时候,还会检查 TiKV/PD/TiFlash 版本是否支持 Local 导入模式。|
| 是否有权限读取数据 | >= 5.3.0 | 检查当从云存储(Amazon S3)读取数据的时候,是否有对应的权限,确保不会因权限缺失导致导入中断。|
| 导入空间是否足够 | >= 5.3.0 | 检查 TiKV 集群是否有足够空间导入数据。检查时会对数据源进行采样,通过采样结果预估索引大小占比。由于估算中考虑了索引,因此可能会出现尽管数据源大小低于本地盘可用空间,但依然无法通过检测的情况。当后端是 Local 的时候,因为需要在本地进行外部排序,所以还会检查本地存储是否足够。|
| Region 分布状态 | >= 5.3.0 | 检查 TiKV 集群的 Region 分布是否均匀,以及是否存在大量空 region,如果空 Region 的数量大于 `max(1000, 表的数量 * 3)`,即大于 "1000" 和 "3 倍表数量"二者中的较大者,TiDB Lightning 无法执行导入。 |
| 数据文件是否有大 CSV 文件 | >= 5.3.0 | 当备份文件中出现大于 10 GiB 的 CSV 文件且无法进行自动切分 (StrictFormat=false) 的时候,会导致导入性能下降。该检查的目的是提醒用户确保数据格式的情况下,开启自动切分 CSV 功能。 |
| 是否可以从断点恢复 | >= 5.3.0 | 该检查是确保断点恢复过程中,不会出现对源文件和数据库中 schema 进行修改,导致导入错误数据的情况。|
| 是否可以导入数据到已存在的数据表中 | >= 5.3.0 | 当导入到已创建好的数据表中时,该检查尽可能的检查此次导入的源文件是否和已存在的数据表匹配。检查列数是否匹配,如果源文件存在列名,则检查列名是否匹配。当源文件存在缺省列,则检查缺省列在数据表中是否存在 Default Value,如果存在,则检查通过。|
| 导入的目标表是否为空 | >= 5.4.0 | 如果导入的目标表不为空,则 TiDB Lightning 会自动报错退出;如果开启了并行导入模式 (incremental-import = true),则会跳过此检查项。 |

0 comments on commit 32554c5

Please sign in to comment.