作者:张鱼小丸子-PingCAP
原文来源: tidb.net/blog/f0a95b…
注意事项
在使用 tidb-lightning 前,需注意以下事项:
tidb-lightning 运行后,TiDB 集群将无法正常对外提供服务。 集群会变为“导入模式”,并产生大量未压缩的文件,继而消耗 CPU 并导致迟延 (stall)。 若 tidb-lightning 崩溃,集群仍会留在“导入模式” 。需要使用 tidb-lightning-ctl 手动将集群转回“普通模式”:
bin/tidb-lightning-ctl -switch-mode=normal
硬件需求
tidb-lightning 和 tikv-importer 这两个组件皆为资源密集程序,建议各自单独部署。 为了优化效能,建议硬件配置如下:
tidb-lightning 32+ 逻辑核 CPU 足够储存整个 SQL dump 数据源的 SSD 硬盘,读取速度越快越好 使用万兆网卡,带宽需 300 MB/s 以上 运行过程默认会打满 CPU,建议单独部署。条件不允许的情况下可以和其他组件 (比如 TiDB-server) 部署在同一台机器上,然后通过配置 region-concurrency 限制 tidb-lightning 的 CPU 使用。
tikv-importer 32+ 逻辑核 CPU 32 GB+ 内存 1 TB+ SSD 硬盘,IOPS 越高越好(要求 ≥8000) 使用万兆网卡,带宽需 300 MB/s 以上 运行过程中 CPU、I/O 和网络带宽都可能打满,建议单独部署。
CSV 文件命名
- CSV 文件的文件名必须类似于 db_name.table_name.csv
- 如果有切分成多个 CSV 文件的话,文件名必须类似于
- db_name.table_name.003.csv
表结构
- 在 TiDB 中预先 create database db_name
- 在 TiDB 中预先 create table table_name
登录中控机,准备 tidb-lightning 和 tikv-importer
下载 Lightning for CSV
wget https://download.pingcap.org/tidb-lightning-test-xx-latest-linux-amd64.tar.gz
解压
tar -zxvf tidb-lightning-test-xx-latest-linux-amd64.tar.gz
拷贝覆盖 ansible 中的 lightning 相关组件
cp -R .../tidb-lightning-test-xx-latest-linux-amd64/bin .../tidb-ansible/resources/
使用 ansible 部署 tidb-lightning
编辑 …/tidb-ansible/inventory.ini ,分别配置一个 IP 来部署 tidb-lightning 和 tikv-importer
...
[importer_server]
192.168.20.9
[lightning_server]
192.168.20.10
...
编辑 group_vars/lightning_server.yml ,配置 CSV 文件路径
---
dummy:
# 获取 mydumper SQL dump 的路径。
data_source_dir: "{{ deploy_dir }}/mydumper"
编辑 group_vars/importer_server.yml,配置 SST 文件路径
---
dummy:
# 储存引擎文件的路径。需存放在空间足够大的分区。
import_dir: "{{ deploy_dir }}/data.import"
优化系统配置
ansible-playbook bootstrap.yml -l lightning_server_ip,importer_server_ip --extra-vars "dev_mode=True"
开始部署
ansible-playbook deploy.yml -l lightning_server_ip,importer_server_ip
登录 tidb-lightning 服务器,调整配置文件
编辑 tidb-lightning 配置文件
vi {{ deploy_dir }}/conf/tidb-lightning.toml
修改 no-schema = true
[mydumper]
no-schema = true
在 tidb-lightning.toml 尾部增加代码块
[mydumper.csv] separator = ‘,’ delimiter = ‘"’ header = true not-null = false null = ‘N’ backslash-escape = true trim-last-separator = false
在 {{ deploy_dir }}/mydumper 下存放 Example CSV
ID,Region,Count 1,“East”,32 2,“South”,N 3,“West”,10 4,“North”,39
启动服务
登录 tikv-importer 的服务器,并执行以下命令来启动 Importer。
{{deploy_dir}}/scripts/start_importer.sh
同路径下的 stop_importer.sh 为停止脚本
登录 tidb-lightning 的服务器,并执行以下命令来启动 Lightning,开始导入过程。
{{deploy_dir}}scripts/start_lightning.sh
同路径下的 stop_lightning.sh 为停止脚本