一、Tidb lightning的部署
方法一、
1.联网安装
[root@tidb01 ~]# tiup install tidb-lightning
方法二(tidb-community-toolkit)
1.下载包(https://docs.pingcap.com/zh/tidb/v6.1/download-ecosystem-tools),解压
获取:
wget https://download.pingcap.org/tidb-community-toolkit-v6.1.0-linux-amd64.tar.gz
解压tar xvf xxxxxxxx
2.配置环境变量
二、Tidb lightning的使用
文件名
查找对象位置
which tidb-lightning
1.编辑配置文件
vi tidb-lightning.toml
[lightning]
# 日志
level = "info"
file = "tidb-lightning.log"
max-size = 128 # MB
max-days = 28
max-backups = 14
#导入并发数,默认为逻辑cpu个数,不需配置
#混合部署的情况可配置为逻辑cpu的75%大小
#region-concurrency =
# 启动之前检查集群是否满足最低需求。
check-requirements = true
[mydumper]
# 本地源数据目录或外部存储 URL
data-source-dir = "/data/my_database"
#默认规则会过滤mysql、sys、INFORMATION_SCHEMA、PERFORMANCE_SCHEMA、METRICS_SCHEMA、INSPECTION_SCHEMA 系统数据库下的所有表
#不配置会导致报错 找不到schema 的异常。!表示过滤掉。
filter = ['*.*', '!mysql.*', '!sys.*', '!INFORMATION_SCHEMA.*', '!PERFORMANCE_SCHEMA.*', '!METRICS_SCHEMA.*', '!INSPECTION_SCHEMA.*']
# [[mydumper.files]]
# 解析 AWS Aurora parquet 文件所需的表达式
# pattern = '(?i)^(?:[^/]*/)*([a-z0-9_]+)\.([a-z0-9_]+)/(?:[^/]*/)*(?:[a-z0-9\-_.]+\.(parquet))$'
# schema = '$1'
# table = '$2'
# type = '$3'
#eg.
# pattern = '(?i)^(?:[^!]*/)*emp\.sal\.(00000000[0-1] | 000000001)\.csv'
# schema = "emp"
# table = "sal"
# type = "csv"
# 配置 CSV 文件的解析方式。
[mydumper.csv]
# 字段分隔符,支持一个或多个字符,默认值为 ','。
separator = ','
# 引用定界符,设置为空表示字符串未加引号。
delimiter = '"'
# 行尾定界字符,支持一个或多个字符。设置为空(默认值)表示 "\n"(换行)和 "\r\n" (回车+换行),均表示行尾。
terminator = ""
# CSV 文件是否包含表头。
# 如果 header = true,将跳过首行。
header = true
# CSV 文件是否包含 NULL。
# 如果 not-null = true,CSV 所有列都不能解析为 NULL。
not-null = false
# 如果 not-null = false(即 CSV 可以包含 NULL),
# 为以下值的字段将会被解析为 NULL。
null = '\N'
# 是否对字段内“\“进行转义
backslash-escape = true
# 如果有行以分隔符结尾,删除尾部分隔符。
trim-last-separator = false
[tikv-importer]
# 导入模式配置,设为 local 即使用 Physical Import Mode
backend = "local"
#是否允许向已存在数据的表导入。默认为false。
#当使用并行导入时,由于多个tidb lightning实例同时导入一张表,因此次开关必须设为true。
Incremental-import = true
# 冲突数据处理方式
duplicate-resolution = 'remove'
# 本地进行 KV 排序的路径,临时存储地址。
sorted-kv-dir = "./some-dir"
[tidb]
# 目标集群的信息。tidb-server 的地址,填一个即可。
host = "172.16.31.1"
port = 4000
user = "root"
# 设置连接 TiDB 的密码,可为明文或 Base64 编码。
password = ""
# 必须配置。表结构信息从 TiDB 的“status-port”获取。
status-port = 10080
# 必须配置。pd-server 的地址,填一个即可。
pd-addr = "172.16.31.4:2379"
# tidb-lightning 引用了 TiDB 库,并生成产生一些日志。
# 设置 TiDB 库的日志等级。
log-level = "error"
[post-restore]
# 配置是否在导入完成后对每一个表执行 `ADMIN CHECKSUM TABLE <table>` 操作来验证数据的完整性。
# 可选的配置项:
# - "required"(默认)。在导入完成后执行 CHECKSUM 检查,如果 CHECKSUM 检查失败,则会报错退出。
# - "optional"。在导入完成后执行 CHECKSUM 检查,如果报错,会输出一条 WARN 日志并忽略错误。
# - "off"。导入结束后不执行 CHECKSUM 检查。
# 默认值为 "required"。从 v4.0.8 开始,checksum 的默认值由此前的 "true" 改为 "required"。
#
# 注意:
# 1. Checksum 对比失败通常表示导入异常(数据丢失或数据不一致),因此建议总是开启 Checksum。
# 2. 考虑到与旧版本的兼容性,依然可以在本配置项设置 `true` 和 `false` 两个布尔值,其效果与 `required` 和 `off` 相同。
checksum = "required"
# 配置是否在 CHECKSUM 结束后对所有表逐个执行 `ANALYZE TABLE <table>` 操作。
# 此配置的可选配置项与 `checksum` 相同,但默认值为 "optional"。
analyze = "optional"
2.创建库与表
drop database emp;
create database emp;
use emp;
create table xxxxxxxxxxxx
3.启用tidb lightning
跑
#!/bin/bash
nohup tidb-lightning-config tidb-lightning.toml > nohup.out &
4.检查日志
查看nohup日志与tidb-lightning.log
过滤:
断点续传
配置文件里加入
[checkpoint]
# 启用断点续传。
# 导入时,TiDB Lightning 会记录当前进度。
# 若 TiDB Lightning 或其他组件异常退出,在重启时可以避免重复再导入已完成的数据。
enable = true
# 存储断点的方式
# - file:存放在本地文件系统(要求 v2.1.1 或以上)
# - mysql:存放在兼容 MySQL 的数据库服务器
driver = "file"
# 存储断点的架构名称(数据库名称)
# 仅在 driver = "mysql" 时生效
# schema = "tidb_lightning_checkpoint"
# 断点的存放位置
#
# 若 driver = "file",此参数为断点信息存放的文件路径。
# 如果不设置该参数则默认为 `/tmp/CHECKPOINT_SCHEMA.pb`
#
# 若 driver = "mysql",此参数为数据库连接参数 (DSN),格式为“用户:密码@tcp(地址:端口)/”。
# 默认会重用 [tidb] 设置目标数据库来存储断点。
# 为避免加重目标集群的压力,建议另外使用一个兼容 MySQL 的数据库服务器。
# dsn = "/tmp/tidb_lightning_checkpoint.pb"
# 导入成功后是否保留断点。默认为删除。
# 保留断点可用于调试,但有可能泄漏数据源的元数据。
# keep-after-success = false
断点续传的控制
服务器宕机之类的,可以通过断点续传继续,但是如果数据因不可恢复的错误报错,重启时不会使用断点,会直接报错离开。使用tidb-lightning-ctl工具表示已经修复好了。
Schema/table区分大小写
目标库移除该表
tidb-lightning-ctl --checkpoint-error-destroy='`schema`.`table`'
移除全部表
tidb-lightning-ctl --checkpoint-error-destroy=all
忽略该表报错(慎用)
tidb-lightning-ctl --checkpoint-error-ignore='`schema`.`table`'
忽略全部报错(慎用)
tidb-lightning-ctl --checkpoint-error-ignore=all
该表断点清理掉,从头开始
tidb-lightning-ctl --checkpoint-remove='`schema`.`table`'
所有表断点清理掉,从头开始
tidb-lightning-ctl --checkpoint-remove=all