tidb-逻辑备份(6)-lightning导入工具的部署、使用

一、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个数,不需配置

#混合部署的情况可配置为逻辑cpu75%大小

#region-concurrency =

# 启动之前检查集群是否满足最低需求。

check-requirements = true

[mydumper]

# 本地源数据目录或外部存储 URL

data-source-dir = "/data/my_database"

#默认规则会过滤mysqlsysINFORMATION_SCHEMAPERFORMANCE_SCHEMAMETRICS_SCHEMAINSPECTION_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 = trueCSV 所有列都不能解析为 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

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪灵骅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值