使用dbgen造数据,lightning导入数据

复制代码
使用dbgen造数据,lightning导入数据
作者:周万春
微信:lovemysql3306


dbgen 项目地址
    https://github.com/kennytm/dbgen


-- 表结构模板
[root@db01 ~]# vim template.sql
CREATE TABLE app01.t1 (
    id bigint,
        /*{{ rownum }}*/
    name varchar(40),
        /*{{ rand.regex('[a-zA-Z ]{40}') }}*/
    PRIMARY KEY (id)
);


-- dbgen 命令部分参数作用:
    -i «PATH», --template «PATH»  模板文件的路径。有关详细信息,请参见模板参考。
    -o «DIR», --out-dir «DIR»  用于存储生成的文件的目录。如果该目录不存在,dbgen将尝试创建它。
    -k «N», --files-count «N»  要生成的数据文件数。
    -n «N», --inserts-count «N»  每个文件要生成的INSERT语句数。
    -r «N», --rows-count «N»  每个INSERT语句要生成的行数。
    生成的总行数为(文件数)×(插入数)×(行数)。


-- 开始造数据
[root@db01 ~]# /disk/dbgen -i template.sql -o /disk/out_data -k 3 -n 10 -r 2
Using seed: f98c9b735d524e3ecc909c136cf26434572b4d02f75d7f6b92d0ee2df981331e
Done!                                                                                                                            
Size     3.57 KB / 3.57 KB 🕒  7.13 KB/s


[root@db01 ~]# ls -l /disk/out_data/
total 16
-rw-rw-r-- 1 tidb tidb 1211 Dec 24 20:05 app01.t1.1.sql
-rw-rw-r-- 1 tidb tidb 1220 Dec 24 20:05 app01.t1.2.sql
-rw-rw-r-- 1 tidb tidb 1220 Dec 24 20:05 app01.t1.3.sql
-rw-rw-r-- 1 tidb tidb   64 Dec 24 20:05 app01.t1-schema.sql


[root@db01 ~]# vim tidb-lightning.toml
[root@db01 ~]# cat tidb-lightning.toml
[lightning]

# 转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。
# 混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。
# region-concurrency =

status-addr = ":8289"
server-mode = false
# 引擎文件的最大并行数。
# 每张表被切分成一个用于存储索引的“索引引擎”和若干存储行数据的“数据引擎”。
# 这两项设置控制两种引擎文件的最大并发数。
# 这两项设置的值会影响 tikv-importer 的内存和磁盘用量。
# 两项数值之和不能超过 tikv-importer 的 max-open-engines 的设定。
index-concurrency = 2
table-concurrency = 6


# 日志
level = "info"
file = "tidb-lightning.log"
max-size = 128 # MB
max-days = 28
max-backups = 14

[security]
# 指定集群中用于 TLS 连接的证书和密钥。
# CA 的公钥证书。如果留空,则禁用 TLS。
# ca-path = "/path/to/ca.pem"
# 此服务的公钥证书。
# cert-path = "/path/to/lightning.pem"
# 该服务的密钥。
# key-path = "/path/to/lightning.key"

[checkpoint]
# 是否启用断点续传。
# 导入数据时,TiDB Lightning 会记录当前表导入的进度。
# 所以即使 Lightning 或其他组件异常退出,在重启时也可以避免重复再导入已完成的数据。
enable = true
# 存储断点的数据库名称。
schema = "tidb_lightning_checkpoint"
# 存储断点的方式。
#  - file:存放在本地文件系统。
#  - mysql:存放在兼容 MySQL 的数据库服务器。
driver = "file"


[tikv-importer]
# backend 设置为 local 模式
backend = "local"
# 设置本地临时存储路径
sorted-kv-dir = "/tmp/out_data"


[mydumper]
# 设置文件读取的区块大小,确保该值比数据源的最长字符串长。
read-block-size = 65536 # Byte (默认为 64 KB)

# (源数据文件)单个导入区块大小的最小值。
# Lightning 根据该值将一张大表分割为多个数据引擎文件。
# batch-size = 107_374_182_400 # Byte (默认为 100 GB)

# 引擎文件需按顺序导入。由于并行处理,多个数据引擎几乎在同时被导入,
# 这样形成的处理队列会造成资源浪费。因此,为了合理分配资源,Lightning
# 稍微增大了前几个区块的大小。该参数也决定了比例系数,即在完全并发下
# “导入”和“写入”过程的持续时间比。这个值可以通过计算 1 GB 大小的
# 单张表的(导入时长/写入时长)得到。在日志文件中可以看到精确的时间。
# 如果“导入”更快,区块大小的差异就会更小;比值为 0 时则说明区块大小一致。
# 取值范围为(0 <= batch-import-ratio < 1)。
batch-import-ratio = 0.75

# mydumper 本地源数据目录。
data-source-dir = "/disk/out_data"
# 如果 no-schema = true,那么 TiDB Lightning 假设目标 TiDB 集群上
# 已有表结构,并且不会执行 `CREATE TABLE` 语句。
no-schema = true
# 指定包含 `CREATE TABLE` 语句的表结构文件的字符集。只支持下列选项:
#  - utf8mb4:表结构文件必须使用 UTF-8 编码,否则 Lightning 会报错。
#  - gb18030:表结构文件必须使用 GB-18030 编码,否则 Lightning 会报错。
#  - auto:自动判断文件编码是 UTF-8 还是 GB-18030,两者皆非则会报错(默认)。
#  - binary:不尝试转换编码。
# 注意:**数据** 文件始终解析为 binary 文件。
character-set = "auto"

# “严格”格式的导入数据可加快处理速度。
# strict-format = true 要求:
# 在 CSV 文件的所有记录中,每条数据记录的值不可包含字符换行符(U+000A 和 U+000D,即 \r 和 \n)
# 甚至被引号包裹的字符换行符都不可包含,即换行符只可用来分隔行。
# 导入数据源为严格格式时,TiDB Lightning 会快速定位大文件的分割位置进行并行处理。
# 但是如果输入数据为非严格格式,可能会将一条完整的数据分割成两部分,导致结果出错。
# 为保证数据安全而非追求处理速度,默认值为 false。
strict-format = true

# 如果 strict-format = true,TiDB Lightning 会将 CSV 大文件分割为多个文件块进行并行处理。max-region-size 是分割后每个文件块的最大大小。
# max-region-size = 268_435_456 # Byte(默认是 256 MB)

# 只导入与该通配符规则相匹配的表。详情见相应章节。
filter = ['*.*']

[tidb]
# 目标集群的信息。tidb-server 的地址,填一个即可。
host = "192.168.10.11"
port = 4000
user = "root"
password = "123"
# 表结构信息从 TiDB 的“status-port”获取。
status-port = 10080
# pd-server 的地址,填一个即可。
pd-addr = "192.168.10.11:2379"
# tidb-lightning 引用了 TiDB 库,并生成产生一些日志。
# 设置 TiDB 库的日志等级。
log-level = "error"

# 设置 TiDB 会话变量,提升 Checksum 和 Analyze 的速度。
# 各参数定义可参阅”控制 Analyze 并发度“文档
build-stats-concurrency = 20
distsql-scan-concurrency = 100
index-serial-scan-concurrency = 20
checksum-table-concurrency = 16

# 解析和执行 SQL 语句的默认 SQL 模式。
sql-mode = "ONLY_FULL_GROUP_BY,NO_ENGINE_SUBSTITUTION"
# `max-allowed-packet` 设置数据库连接允许的最大数据包大小,
# 对应于系统参数中的 `max_allowed_packet`。 如果设置为 0,
# 会使用下游数据库 global 级别的 `max_allowed_packet`。
max-allowed-packet = 67_108_864

# SQL 连接是否使用 TLS。可选值为:
#  * ""            - 如果填充了 [tidb.security] 部分,则强制使用 TLS(与 "cluster" 情况相同),否则与 "false" 情况相同
#  * "false"       - 禁用 TLS
#  * "cluster"     - 强制使用 TLS 并使用 [tidb.security] 部分中指定的 CA 验证服务器的证书
#  * "skip-verify" - 强制使用 TLS,但不验证服务器的证书(不安全!)
#  * "preferred"   - 与 "skip-verify" 相同,但是如果服务器不支持 TLS,则会退回到未加密的连接
# tls = ""
# 指定证书和密钥用于 TLS 连接 MySQL。
# 默认为 [security] 部分的副本。
# [tidb.security]
# CA 的公钥证书。设置为空字符串可禁用 SQL 的 TLS。
# ca-path = "/path/to/ca.pem"
# 该服务的公钥证书。默认为 `security.cert-path` 的副本
# cert-path = "/path/to/lightning.pem"
# 此服务的私钥。默认为 `security.key-path` 的副本
# key-path = "/path/to/lightning.key"

# 数据导入完成后,tidb-lightning 可以自动执行 Checksum、Compact 和 Analyze 操作。
# 在生产环境中,建议这将些参数都设为 true。
# 执行的顺序为:Checksum -> Compact -> Analyze。
[post-restore]
# 如果设置为 true,会对所有表逐个执行 `ADMIN CHECKSUM TABLE <table>` 操作
# 来验证数据的完整性。
checksum = true
# 如果设置为 true,会在导入每张表后执行一次 level-1 Compact。
# 默认值为 false。
level-1-compact = false
# 如果设置为 true,会在导入过程结束时对整个 TiKV 集群执行一次 full Compact。
# 默认值为 false。
compact = false
# 如果设置为 true,会对所有表逐个执行 `ANALYZE TABLE <table>` 操作。
analyze = true

# 设置周期性后台操作。
# 支持的单位:h(时)、m(分)、s(秒)。
[cron]
# Lightning 自动刷新导入模式状态的持续时间,该值应小于 TiKV 对应的设定值。
switch-mode = "5m"
# 在日志中打印导入进度的持续时间。
log-progress = "5m"

[root@db01 ~]# cat /disk/out_data/app01.t1-schema.sql
CREATE TABLE t1 (id bigint,name varchar(40),PRIMARY KEY (id));

[root@db01 ~]# mysql -uroot -p -h192.168.10.11 -P4000 app01

[root@192.168.10.11:4000] [app01]> CREATE TABLE t1 (id bigint,name varchar(40),PRIMARY KEY (id));
Query OK, 0 rows affected (0.08 sec)


[root@db01 ~]# \rm -rf /tmp/tidb_lightning_checkpoint.pb

[root@db01 ~]# nohup /home/tidb/tidb-community-toolkit-v4.0.8-linux-amd64/bin/tidb-lightning -config ./tidb-lightning.toml > nohup.out &

[root@db01 ~]# tail -f tidb-lightning.log 
[2020/12/24 20:17:19.011 +08:00] [INFO] [restore.go:1635] ["analyze completed"] [table=`app01`.`t1`] [takeTime=218.885165ms] []
[2020/12/24 20:17:19.011 +08:00] [INFO] [restore.go:693] ["restore table completed"] [table=`app01`.`t1`] [takeTime=1.278971234s] []
[2020/12/24 20:17:19.011 +08:00] [INFO] [restore.go:810] ["restore all tables data completed"] [takeTime=1.31409098s] []
[2020/12/24 20:17:19.011 +08:00] [INFO] [restore.go:594] ["everything imported, stopping periodic actions"]
[2020/12/24 20:17:19.016 +08:00] [INFO] [restore.go:661] ["add back PD leader&region schedulers"]
[2020/12/24 20:17:19.016 +08:00] [INFO] [restore.go:1245] ["skip full compaction"]
[2020/12/24 20:17:19.027 +08:00] [INFO] [restore.go:1339] ["clean checkpoints start"] [keepAfterSuccess=false] [taskID=1608812237680507596]
[2020/12/24 20:17:19.027 +08:00] [INFO] [restore.go:1346] ["clean checkpoints completed"] [keepAfterSuccess=false] [taskID=1608812237680507596] [takeTime=61.431µs] []
[2020/12/24 20:17:19.027 +08:00] [INFO] [restore.go:313] ["the whole procedure completed"] [takeTime=1.338959344s] []
[2020/12/24 20:17:19.027 +08:00] [INFO] [main.go:87] ["tidb lightning exit"]

[root@192.168.10.11:4000] [app01]> select * from t1;
+----+------------------------------------------+
| id | name                                     |
+----+------------------------------------------+
|  1 | qVECDFVrQaaCHMymgPYzmPwyuCoMTIiOXUsSacOA |
|  2 | lHhppmSCPFy QoEkunsggiQFowSDxJzSCIsDvGBn |
|  3 | SshpolzVPhjEmhYvKUPOqStacAeiSKzSZ zngrkN |
|  4 | uNPAWWcrKWAOXlEcBNnxmJLOWQMlmxCfurroTevw |
|  5 | WxjiELetEJsowrevNNMtLtqmHsG AKalIIPgSyBU |
|  6 | Z ATtyeOKMhFUnETeJrIGAUIEwIFZHTxPxjNAduj |
|  7 | IglhQDQsMRmKpRoknle DdQzilZZsltCqiEHBmRl |
|  8 | ZDgVguKOQWrcRIGBfewcgoWFskMPnNWWmSDSxFFc |
|  9 | NcRZgggAUnUAzwvtxUmhskFnGhluVPXMIZL ZtAu |
| 10 | BO LfNyLTKwMbjJnKYXLipHUiktTaHdGxnuSECKt |
| 11 | SseCjdDVmAhFIbSAhICwrtUJOeBqnwQZmpdIeVDY |
| 12 | WsuehNnQOkBbjncUYgFlEwFMnvLNjcDZkKyUnDOf |
| 13 | giprDhOIAIGhjljLHDaUAvrJBbVPrBoeFDsSQmYc |
| 14 | liYchZVrZTCMWPlwPZPcsMzupFeGlqymrdThDYaB |
| 15 | cxdbBf nkgLbWBGEPYECIzMeEqBcETPDsJXfcehi |
| 16 | rQUMHwrNpjedlxNogIiBFztXVihdBGzbxRRPNoeg |
| 17 | CujnEviZernAMSyxfAUaQDTkTtEvcWE BuXXOHpN |
| 18 | SJTVUXVjYuVwygfzjhCKdZSBViIJKXOahMsLQIPO |
| 19 | UMbqIqtFcfSKeHGJl mONylqFuEGOKgdqQBPsGlY |
| 20 | GGQKrjdXjRMupvCJcDLbdlIeXMjCkmgAfcpellFq |
| 21 | JTUoZnpZWpZSRNNpavCQDlAamRiMYdMggnVLIV Y |
| 22 | RMjQFtAblfHZCZuYPcRNRmEeXJBNvEraMWpZBnrr |
| 23 | UDFCzwRYaRUqTRVvlMWcLNCGKMBOIxAQO XFDiUb |
| 24 | maPXzQiWeShDImjbFSuwgmVDhfflJnxrJIVfOCXq |
| 25 | cRadyuvfSlgCBvXlWQxAjmsAThN GqXcNCKDJjNX |
| 26 | ivkIvkSlVXcHFvCrKEJDJdulyBUrjUWNwXPAtsDE |
| 27 | dmibCIayfeyMjxtDLgyrnTuOGiOMvgmDtlayJTDJ |
| 28 | EjmeRRgouetqGGbwcQsiCZjcCxncgtkfaMfHZOYg |
| 29 | ZcVLRrKncnIMtcUgJakubqpcZFgDVEGfSWYAJBrR |
| 30 | QYyurtNEHHhYbiBrfExfZWYe OjOixwDPcVylSPN |
| 31 | YzTacxukIIQLwOjwDilTwCOEEhswdtbxlVBsuCTO |
| 32 | OHFlohAsNHzavAEqlyUBsBalHSXlAnEYpPix Quq |
| 33 | KwrVGhJJoINxitgCxaqsSoMlHjTFLvrnUTiUgrII |
| 34 | ZhKfjD tvDKOdBtpCWYtNyBfFdpbzzfCMdOXTpzL |
| 35 | VDlWXYfPxfVOJggilmxusLhvGMUMOV xtnpmFgHB |
| 36 | BlyZlyU DjdSTjGQxGivrBSVYisTIediLhpRfIcg |
| 37 | PSLxblOgplmkZB JFSGvbCNVoXalnagqyokaGYBH |
| 38 | ifZxOYOvLnRezAMctfZdpLAVQrBfdgiEZFuZwfCd |
| 39 | acVHURvDwkGLbtqVyQkSPtAMvEUr tJagTpsSjFY |
| 40 | iqBKvhHnCUyrahZsafOBfDnLUWlsawMFPlWXRHEB |
| 41 | FimMaB RNeCCpdCPYP JiP eiDrjfmoBQGajFDwg |
| 42 | rFLbivfBk KlABpimiFYZAlGMYulNFcpQeHugHOf |
| 43 | foJjXTltUxqXhjxwZvDXCmCKzYcQSYZxhFxATKFY |
| 44 | iQoreDsjieGQTpQYBcBaNJkpqhxjUq ZDNUvxHku |
| 45 | iaCPtkGyIBuY zpICFblMDityzNRKMVxgGCqluTt |
| 46 | uTozBNOXIMrjqTPbYlbZPLWKdVfcsmpnzsViWCpn |
| 47 | tCBiPXJrCAJNjOMBRixnUeUyMImnVPwgwWslRsIm |
| 48 | htRGnaaCyYZXQayIXoMpFZcgPukVNNQsNFviQrJd |
| 49 | LNfWWV ULyqFKjZNtjOsxfPORkpYREXAhFRIBzxX |
| 50 | JrsRZxGcRRoeslgurtGIJiVHTATtjasGhdxpPjw  |
| 51 | rwBWWHlKoBukYOSAwaeVPAsbj rWkwtoUPbBoEyR |
| 52 | dBCMWZEjPaTpFcGGMDoLCoXoGocapYpFzogxHPKD |
| 53 | XzOrCJubvEIsXFRrWmrQJWbRfyUmLdJCeAXYMEiC |
| 54 | hnOwmoPBuTHXyzLXFdeWspNZTnrFJrymkofEggbC |
| 55 | PhvpCazQVDgkLzJMalaRYDEiKfMLYSaXpsLpAgIh |
| 56 | EDledpVklBEJVDqHutywBbLIrxzVvvKAfmRBjQEN |
| 57 | dfhvCtxYrpIzTnhHGjGlBGAahtVEDEnDkgmJyUrI |
| 58 | AWgHSnZPLWXMXdelrWdngWwXOtzRZWAmeziXUgni |
| 59 | zcnNPLUDOGywvS UmkSXQJurbrswumbdLNckMwDm |
| 60 | rsAgnrdrXmqrjfZOWWQxJDmnpFtRDXxVjcNDIaSz |
+----+------------------------------------------+
60 rows in set (0.01 sec)
复制代码

 

posted @   捧花大王  阅读(844)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示