TiDB Lightning 目标数据库要求

使用 TiDB Lightning 导入数据前,先检查环境是否满足要求,这有助于减少导入过程的错误,避免导入失败的情况。

目标数据库权限要求

TiDB Lightning 导入数据时,根据导入方式和启用特性等,需要下游数据库用户具备不同的权限,可参考下表:

特性作用域所需权限备注
必需基本功能目标 tableCREATE,SELECT,INSERT,UPDATE,DELETE,DROP,ALTERDROP 仅 tidb-lightning-ctl 在执行 checkpoint-destroy-all 时需要
目标 databaseCREATE
必需逻辑导入模式information_schema.columnsSELECT
物理导入模式mysql.tidbSELECT
-SUPER
-RESTRICTED_VARIABLES_ADMIN,RESTRICTED_TABLES_ADMIN当目标 TiDB 开启 SEM
推荐冲突检测,max-errorlightning.task-info-schema-name 配置的 schemaSELECT,INSERT,UPDATE,DELETE,CREATE,DROP如不需要,该值必须设为""
可选并行导入lightning.meta-schema-name 配置的 schemaSELECT,INSERT,UPDATE,DELETE,CREATE,DROP如不需要,该值必须设为""
可选checkpoint.driver = "mysql"checkpoint.schema 设置SELECT,INSERT,UPDATE,DELETE,CREATE,DROP使用数据库而非文件形式存放 checkpoint 信息时需要

目标数据库所需空间

目标 TiKV 集群必须有足够空间接收新导入的数据。除了标准硬件配置以外,目标 TiKV 集群的总存储空间必须大于 数据源大小 × 副本数量 × 2。例如集群默认使用 3 副本,那么总存储空间需为数据源大小的 6 倍以上。公式中的 2 倍可能难以理解,其依据是以下因素的估算空间占用:

  • 索引会占据额外的空间
  • RocksDB 的空间放大效应

目前无法精确计算 Dumpling 从 MySQL 导出的数据大小,但你可以用下面 SQL 语句统计信息表的 data_length 字段估算数据量:

统计所有 schema 大小,单位 MiB,注意修改 ${schema_name}

SELECT table_schema, SUM(data_length)/1024/1024 AS data_length, SUM(index_length)/1024/1024 AS index_length, SUM(data_length+index_length)/1024/1024 AS sum FROM information_schema.tables WHERE table_schema = "${schema_name}" GROUP BY table_schema;

统计最大单表,单位 MiB,注意修改 ${schema_name}

SELECT table_name, table_schema, SUM(data_length)/1024/1024 AS data_length, SUM(index_length)/1024/1024 AS index_length, SUM(data_length+index_length)/1024/1024 AS sum FROM information_schema.tables WHERE table_schema = "${schema_name}" GROUP BY table_name,table_schema ORDER BY sum DESC LIMIT 5;