- 关于 TiDB
- 快速上手
- 部署集群
- 数据迁移
- 数据迁移概述
- 从 MySQL 迁移至 TiDB
- 从 CSV 文件迁移至 TiDB
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 系统调优
- 软件调优
- SQL 性能调优
- 教程
- TiDB 生态工具
- TiDB 生态工具功能概览
- TiDB 生态工具适用场景
- TiDB 工具下载
- Backup & Restore (BR)
- TiDB Binlog
- TiDB Lightning
- TiCDC 简介
- Dumpling 使用文档
- sync-diff-inspector
- Loader 使用文档
- Mydumper 使用文档
- Syncer 使用文档
- TiSpark
- 参考指南
- 架构
- 监控指标
- 安全加固
- 权限
- SQL
- SQL 语言结构和语法
- 属性
- 字面值
- Schema 对象名
- 关键字
- 用户自定义变量
- 表达式语法
- 注释语法
- SQL 语句
- ADD COLUMN
- ADD INDEX
- ADMIN
- ALTER DATABASE
- ALTER INSTANCE
- ALTER TABLE
- ALTER USER
- ANALYZE
- BACKUP
- BEGIN
- CHANGE COLUMN
- CHANGE DRAINER
- CHANGE PUMP
- COMMIT
- CREATE [GLOBAL|SESSION] BINDING
- CREATE DATABASE
- CREATE INDEX
- CREATE ROLE
- CREATE SEQUENCE
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE USER
- CREATE VIEW
- DEALLOCATE
- DELETE
- DESC
- DESCRIBE
- DO
- DROP [GLOBAL|SESSION] BINDING
- DROP COLUMN
- DROP DATABASE
- DROP INDEX
- DROP ROLE
- DROP SEQUENCE
- DROP STATS
- DROP TABLE
- DROP USER
- DROP VIEW
- EXECUTE
- EXPLAIN ANALYZE
- EXPLAIN
- FLASHBACK TABLE
- FLUSH PRIVILEGES
- FLUSH STATUS
- FLUSH TABLES
- GRANT
- GRANT
- INSERT
- KILL [TIDB]
- LOAD STATS
- MODIFY COLUMN
- PREPARE
- RECOVER TABLE
- RENAME INDEX
- RENAME TABLE
- REPLACE
- RESTORE
- REVOKE
- REVOKE
- ROLLBACK
- SELECT
- SET DEFAULT ROLE
- SET [NAMES|CHARACTER SET]
- SET PASSWORD
- SET ROLE
- SET TRANSACTION
- SET [GLOBAL|SESSION]
- SHOW [BACKUPS|RESTORES]
- SHOW ANALYZE STATUS
- SHOW [GLOBAL|SESSION] BINDINGS
- SHOW BUILTINS
- SHOW CHARACTER SET
- SHOW COLLATION
- SHOW [FULL] COLUMNS FROM
- SHOW CONFIG
- SHOW CREATE SEQUENCE
- SHOW CREATE TABLE
- SHOW CREATE USER
- SHOW DATABASES
- SHOW DRAINER STATUS
- SHOW ENGINES
- SHOW ERRORS
- SHOW [FULL] FIELDS FROM
- SHOW GRANTS
- SHOW INDEX [FROM|IN]
- SHOW INDEXES [FROM|IN]
- SHOW KEYS [FROM|IN]
- SHOW MASTER STATUS
- SHOW PLUGINS
- SHOW PRIVILEGES
- SHOW [FULL] PROCESSLIST
- SHOW PROFILES
- SHOW PUMP STATUS
- SHOW SCHEMAS
- SHOW STATS_HEALTHY
- SHOW STATS_HISTOGRAMS
- SHOW STATS_META
- SHOW [GLOBAL|SESSION] STATUS
- SHOW TABLE NEXTROWID
- SHOW TABLE REGIONS
- SHOW TABLE STATUS
- SHOW [FULL] TABLES
- SHOW [GLOBAL|SESSION] VARIABLES
- SHOW WARNINGS
- SHUTDOWN
- Split Region 使用文档
- START TRANSACTION
- TRACE
- TRUNCATE
- UPDATE
- USE
- 数据类型
- 函数与操作符
- 约束
- 生成列
- SQL 模式
- 事务
- 垃圾回收 (GC)
- 视图
- 分区表
- 字符集和排序规则
- 系统表
- TiDB 系统表
- INFORMATION_SCHEMA
- TiDB 简介
- ANALYZE_STATUS
- CHARACTER_SETS
- CLUSTER_CONFIG
- CLUSTER_HARDWARE
- CLUSTER_INFO
- CLUSTER_LOAD
- CLUSTER_LOG
- CLUSTER_SYSTEMINFO
- COLLATIONS
- COLLATIONCHARACTERSET_APPLICABILITY
- COLUMNS
- DDL_JOBS
- ENGINES
- INSPECTION_RESULT
- INSPECTION_RULES
- INSPECTION_SUMMARY
- KEYCOLUMNUSAGE
- METRICS_SUMMARY
- METRICS_TABLES
- PARTITIONS
- PROCESSLIST
- SCHEMATA
- SEQUENCES
- SESSION_VARIABLES
- SLOW_QUERY
- STATISTICS
- TABLES
- TABLE_CONSTRAINTS
- TABLESTORAGESTATS
- TIDBHOTREGIONS
- TIDB_INDEXES
- TIDBSERVERSINFO
- TIFLASH_REPLICA
- TIKVREGIONPEERS
- TIKVREGIONSTATUS
- TIKVSTORESTATUS
- USER_PRIVILEGES
- VIEWS
- Metrics Schema
- SQL 语言结构和语法
- UI
- CLI
- 命令行参数
- 配置文件参数
- 系统变量
- 存储引擎
- TiUP
- 遥测
- 错误码与故障诊断
- TiCDC Open Protocol
- 通过拓扑 label 进行副本调度
- 常见问题解答 (FAQ)
- 术语表
TiDB Lightning 常见问题
本文列出了一些使用 TiDB Lightning 时可能会遇到的问题与解决办法。
注意:
使用 TiDB Lightning 的过程中如遇错误,参考 TiDB Lightning 故障诊断进行排查。
TiDB Lightning 对 TiDB/TiKV/PD 的最低版本要求是多少?
TiDB Lightning 的版本应与集群相同。如果使用 Local-backend 模式,最低版本要求为 4.0.0。如果使用 Importer-backend 或 TiDB-backend 模式 最低版本要求是 2.0.9,但建议使用最新的稳定版本 3.0。
TiDB Lightning 支持导入多个库吗?
支持。
TiDB Lightning 对下游数据库的账号权限要求是怎样的?
TiDB Lightning 需要以下权限:
- SELECT
- UPDATE
- ALTER
- CREATE
- DROP
如果选择 TiDB-backend 模式,或目标数据库用于存储断点,则 TiDB Lightning 额外需要以下权限:
- INSERT
- DELETE
Local-backend 和 Importer-backend 无需以上两个权限,因为数据直接被 Ingest 到 TiKV 中,所以绕过了 TiDB 的权限系统。只要 TiKV、TiKV Importer 和 TiDB Lightning 的端口在集群之外不可访问,就可以保证安全。
如果 TiDB Lightning 配置项 checksum = true
,则 TiDB Lightning 需要有下游 TiDB admin 用户权限。
TiDB Lightning 在导数据过程中某个表报错了,会影响其他表吗?进程会马上退出吗?
如果只是个别表报错,不会影响整体。报错的那个表会停止处理,继续处理其他的表。
如何正确重启 TiDB Lightning?
根据 tikv-importer
的状态,重启 TiDB Lightning 的基本顺序如下:
如果 tikv-importer
仍在运行:
- 如何校验导入的数据的正确性?
TiDB Lightning 默认会对导入数据计算校验和 (checksum),如果校验和不一致就会停止导入该表。可以在日志看到相关的信息。
TiDB 也支持从 MySQL 命令行运行
ADMIN CHECKSUM TABLE
指令来计算校验和。ADMIN CHECKSUM TABLE `schema`.`table`;
+---------+------------+---------------------+-----------+-------------+ | Db_name | Table_name | Checksum_crc64_xor | Total_kvs | Total_bytes | +---------+------------+---------------------+-----------+-------------+ | schema | table | 5505282386844578743 | 3 | 96 | +---------+------------+---------------------+-----------+-------------+ 1 row in set (0.01 sec)
TiDB Lightning 支持哪些格式的数据源?
TiDB Lightning 只支持两种格式的数据源:
我已经在下游创建好库和表了,TiDB Lightning 可以忽略建库建表操作吗?
可以。在配置文档中的
[mydumper]
部分将no-schema
设置为true
即可。no-schema=true
会默认下游已经创建好所需的数据库和表,如果没有创建,会报错。有些不合法的数据,能否通过关掉严格 SQL 模式 (Strict SQL Mode) 来导入?
可以。Lightning 默认的
sql_mode
为"STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
。这个设置不允许一些非法的数值,例如
1970-00-00
这样的日期。可以修改配置文件[tidb]
下的sql-mode
值。... [tidb] sql-mode = "" ...
可以启用一个
tikv-importer
,同时有多个tidb-lightning
进程导入数据吗?只要每个 Lightning 操作的表互不相同就可以。
如何正确结束
tikv-importer
进程?根据部署方式,选择相应操作结束进程
使用 TiDB Ansible 部署:在 Importer 的服务器上运行
scripts/stop_importer.sh
。手动部署:如果
tikv-importer
正在前台运行,可直接按 Ctrl+C 退出。否则,可通过ps aux | grep tikv-importer
获取进程 ID,然后通过kill «pid»
结束进程。
如何正确结束
tidb-lightning
进程?根据部署方式,选择相应操作结束进程
使用 TiDB Ansible 部署:在 Lightning 的服务器上运行
scripts/stop_lightning.sh
。手动部署:如果
tidb-lightning
正在前台运行,可直接按 Ctrl+C 退出。否则,可通过ps aux | grep tidb-lightning
获取进程 ID,然后通过kill -2 «pid»
结束进程。
tidb-lightning
在服务器上运行,进程莫名其妙地退出了,是怎么回事呢?这种情况可能是启动方式不正确,导致收到 SIGHUP 信号而退出。此时
tidb-lightning.log
通常有如下日志:[2018/08/10 07:29:08.310 +08:00] [INFO] [main.go:41] ["got signal to exit"] [signal=hangup]
不推荐在命令行中直接使用
nohup
启动进程,推荐使用脚本启动tidb-lightning
。为什么用过 TiDB Lightning 之后,TiDB 集群变得又慢又耗 CPU?
如果
tidb-lightning
异常退出,集群可能仍处于“导入模式” (import mode),该模式不适用于生产环境。此时可执行以下命令查看当前使用的模式:tidb-lightning-ctl --fetch-mode
可执行以下命令强制切换回“普通模式” (normal mode):
tidb-lightning-ctl --switch-mode=normal
TiDB Lightning 可以使用千兆网卡吗?
使用 TiDB Lightning 建议配置万兆网卡。不推荐使用千兆网卡,尤其是在部署
tikv-importer
的机器上。千兆网卡的总带宽只有 120 MB/s,而且需要与整个 TiKV 集群共享。在使用 TiDB Lightning 导入时,极易用尽所有带宽,继而因 PD 无法联络集群使集群断连。为了避免这种情况,你可以在
tikv-importer
的配置文件中限制上传速度。[import] # Importer 上传至 TiKV 的最大速度(字节/秒)。 # 建议将该速度设为 100 MB/s 或更小。 upload-speed-limit = "100MB"
为什么 TiDB Lightning 需要在 TiKV 集群预留这么多空间?
当使用默认的 3 副本设置时,TiDB Lightning 需要 TiKV 集群预留数据源大小 6 倍的空间。多出来的 2 倍是算上下列没储存在数据源的因素的保守估计:
- 索引会占据额外的空间
- RocksDB 的空间放大效应
TiDB Lightning 使用过程中是否可以重启 TiKV Importer?
不能,Importer 会在内存中存储一些引擎文件,Importer 重启后,
tidb-lightning
会因连接失败而停止。此时,你需要清除失败的断点,因为这些 Importer 特有的信息丢失了。你可以在之后如何清除所有与 TiDB Lightning 相关的中间数据?删除断点文件。
tidb-lightning-ctl --config conf/tidb-lightning.toml --checkpoint-remove=all
如果出于某些原因而无法运行该命令,你可以尝试手动删除
/tmp/tidb_lightning_checkpoint.pb
文件。删除
tikv-importer
所在机器上的整个 “import” 文件目录。如果需要的话,删除 TiDB 集群上创建的所有表和库。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论