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}

  1. -- 统计所有 schema 大小
  2. SELECT
  3. TABLE_SCHEMA,
  4. FORMAT_BYTES(SUM(DATA_LENGTH)) AS 'Data Size',
  5. FORMAT_BYTES(SUM(INDEX_LENGTH)) 'Index Size'
  6. FROM
  7. information_schema.tables
  8. GROUP BY
  9. TABLE_SCHEMA;
  10. -- 统计最大的 5 个单表
  11. SELECT
  12. TABLE_NAME,
  13. TABLE_SCHEMA,
  14. FORMAT_BYTES(SUM(data_length)) AS 'Data Size',
  15. FORMAT_BYTES(SUM(index_length)) AS 'Index Size',
  16. FORMAT_BYTES(SUM(data_length+index_length)) AS 'Total Size'
  17. FROM
  18. information_schema.tables
  19. GROUP BY
  20. TABLE_NAME,
  21. TABLE_SCHEMA
  22. ORDER BY
  23. SUM(DATA_LENGTH+INDEX_LENGTH) DESC
  24. LIMIT
  25. 5;