本节介绍如何使用 Bulk Load 模式,将大量数据快速加载到数据库中。
一、前提条件
·已准备源数据文件,并存放至导入机。
·已创建目标数据库、表。
·导入机与 TDSQL Boundless 集群能够正常通信。
·已获取 TDSQL_Boundless_mydumper 工具。
二、操作步骤
1. 使用 root 用户登录导入机。
2. 进入 MyLoader 工具目录。
cd /data/tdsql3_run/6008/SQLEngine/bin/
3. 执行以下命令,使用 Bulk Load 模式导入数据。
./myloader -h 10.34.159.202 -P 17110 -u test -p test123 -t 20 -B sbtest -d /data/TDSQLV30/Module8-409/TDSQL3-TOOLS/bin/loader_file -r 8000 -q 100 –max-threads-per-table=20 –max-retry-statement-count=10 –max-retry-checkpoint-count=10 –not-create-database –insert-ignore=True –append-if-not-exist –enable-tdsql-bulk-load -v 3
| 参数 | 参数全称 | 说明 |
| –enable-tdsql-bulk-load | –enable-tdsql-bulk-load | 启用 Bulk Load 导入模式。 |
| –enable-tdsql-bulk-load-allow-unsorted | –enable-tdsql-bulk-load-allow-unsorted | 表示 Bulk Load 导入的主键数据支持乱序。当导入的数据文件中的记录并非按照主键顺序排好序时,需要增加 –enable-tdsql-bulk-load-allow-unsorted。 |
| -r | –rows | -r × -q 用于控制事务的大小。在 Bulk Load 模式下,一个事务的数据量建议为100MB~10GB。MyLoader 从数据文件(.sql)导入时,生成的事务不会跨数据文件,即尽管-r × -q 已经设置得很大,但是如果一个 .sql 文件中只有1000行记录,那么 MyLoader 产生的一个事务也就只有1000行,不会超过一个数据文件的大小。因此需要让数据文件本身不要过小。 |
| -q | –queries-per-transaction | |
| -h | –host | TDSQL Boundless 数据库连接 IP。 |
| -P | –port | TDSQL Boundless 数据库连接端口。 |
| -u | –user | TDSQL Boundless 数据库连接账号。 |
| -p | –password | |
| -B | –database | 目标数据库名称。 |
| -d | –directory | 指定要加载的数据文件目录。 |
| -t | –threads | 载入数据时使用的线程数,默认为4。 |
| –max-threads-per-table | –max-threads-per-table | 用于设置每个表使用的最大线程数,默认值为4。 |
| –max-retry-statement-count | –max-retry-statement-count | 用于设置在单个查询失败时重试语句的最大次数,默认值为0。 |
| –max-retry-checkpoint-count | –max-retry-checkpoint-count | 用于设置在检查点出现错误时重试的最大次数,默认值为0。 |
| –not-create-database | –not-create-database | MyLoader 将不会创建数据库,而是尝试将数据导入到指定的数据库中。如果指定的数据库不存在,MyLoader 将会报错并停止导入过程。 |
| –insert-ignore | –insert-ignore | 在插入重复的主键记录时启用 INSERT IGNORE 语句。 |
| –append-if-not-exist | –append-if-not-exist | 在创建表语句中添加 IF NOT EXISTS 子句。 |
| -v | –verbose | 设置日志输出的详细程度。0:静默模式,不输出任何信息。1:仅输出错误信息。2(默认值):输出警告信息和错误信息。3:输出信息、警告和错误信息。4:输出调试信息、信息、警告和错误信息。 |