TcaplusDB Client - dump命令

TcaplusDB Client的使用方法参见文档

1. 功能说明

原理:dump命令实际是通过全表扫描接口,将数据读取到本地,再按指定形式和格式输出。

dump命令默认从Slave进程遍历(可以通过指定 \M 参数从Master进程遍历),提供打印到控制台和输出到指定文件两种方式,PB表记录输出到文件时采用JSON格式。
注:从3.55.0版本开始dump命令支持where+任意字段过滤导出,但本质上还是走全表扫描。

请注意,保存结果的文件名不能以数字开头。

2. 性能说明

(1)dump命令会对表加读锁,如果从Master进程(指定 \M 参数)上遍历数据可能导致相同表的写请求处理时延增大,操作前请谨慎评估。

(2)导出耗时与记录条数以及每条记录的大小成负相关,数据量越大,导出耗时越久,建议只导出实际需要的字段。

(3)在国内IDC正式环境,对于1KB的记录,每秒可以导出约10万条,测试环境的导出性能会低于10万/秒。

3. 限制说明

(1)dump命令会分段返回Tcaplus服务端的实时数据,而不是某个时间点的快照数据,即执行dump命令期间,插入或删除的记录可能返回也可能不返回,更新的记录可能返回新值也可能返回旧值。

(2)如果Tcaplus存储进程正在对同一张表执行数据搬迁、数据整理或引擎文件备份操作,那么dump命令将返回失败。

(3)如果Tcaplus存储进程发生故障切换或主备切换,那么dump命令将返回失败。

4. 使用建议

(1)使用dump命令时,建议只导出实际需要的字段,以便减少需要处理的数据量,缩短执行耗时。

(2)尽量使用dump的默认行为,从Slave进程上导出记录,避免影响线上服务。

(3)如果要导出的数据量超过10GB或者记录数超过5000万,请联系DBA或TcaplusHelper共同评估是否可以通过分析型文本导出表数据缓写等方式实现。

5. 命令语法

dump * [into file_name] from table [where ...] limit 10 offset 100 shardid 10 [encode] [\M];

// PB表导出所有字段
dump * [into result.json] from table [where ...] limit 10;

// PB表导出部分字段
enable delta result;
dump key1, key2, value1, value2 [into result.json] from table [where ...] limit 10;
disable delta result;

// TDR表按xml格式导出所有字段
dump * [into result.xml] from table [where ...] limit 10 using tdr;

// TDR表按csv格式导出所有字段
dump * [into result.csv] from table [where ...] limit 10;

// TDR表按csv格式导出部分字段
dump key1, key2, key3, value1, value2 [into result.csv] from table [where ...] limit 10;

参数说明:

参数 版本说明 当源表为PB表时 当源表为TDR表时 必填项
table 表格的名字 表格的名字
where 3.55.0版本起支持 过滤条件 过滤条件
limit 本次导出的Key的个数
Generic表:一个Key对应一条数据
List表:一个Key对应一个列表,包含多条数据
本次导出的Key的个数
Generic表:一个Key对应一条数据
List表:一个Key对应一个列表,包含多条数据
using tdr 不支持 如果需要使用该参数,则在启动TcaplusDB Client时,就要通过启动参数指定与目标表对应的TDR文件
使用该参数时,如果导入的是XML格式的数据文件,则文件结构严格满足XML语法要求
注:使用了using tdr 参数不支持指定部分字段导出
encode 不支持(回车字符或不可见字符已预处理) 当导入CSV格式的数据文件时,才可以使用该参数
指定该参数后,导出命令会将string类型字段值进行BASE64编码后再输出,以便兼容字段值中含有引号、回车或不可见字符的情况
注:使用了encode参数导出数据文件,再导入时,需要指定decode参数
into 目标数据文件(3.55版本支持指定字段导出,需提前执行enable delta result设置,enable delta result 仅在单次运行tcaplus_client期间生效,通常不需要再disable) 目标数据文件
shardid 指定导出哪个数据分片(Shard)的数据,必须与offset参数一起使用 指定导出哪个数据分片(Shard)的数据,必须与offset参数一起使用
offset 指定导出数据的开始位置,必须与shardid参数一起使用 指定导出数据的开始位置,必须与shardid参数一起使用
\M 3.46.0版本起支持 从主副本遍历数据(用于对数据实时要求较高的场景,对其它数据读写会造成一定性能影响) 从主副本遍历数据(用于对数据实时要求较高的场景,对其它数据读写会造成一定性能影响
\T 不支持 输出数据以\t作为字段分隔符(3.46版本开始支持 ),仅在导出为csv格式时生效 否,默认以逗号为分隔符

6. 命令示例

表定义详见示例表定义

tcaplus> dump * from table_list limit 0 offset 100 shardid 10;
uin,name,key1,level,count,array_count,items,c_int8,c_uint8,c_int16,c_uint16,c_int32,c_uint32,c_int64,c_uint64,c_float,c_double,c_string,c_string_128K,c_string_256K,c_binary,binary,selector,single_struct,simple_struct,single_union_selector,single_union,array,c_union,union_array,c_struct,struct_array
99,"99",99,1,0,1,0x,-1,2,-3,4,-5,6,-7,0,1.234568,9.876543,"","123456789","123456789",0x,0,0,0x,0x,0,0x,0x,0x,0x,0x,0x
99,"99",99,1,0,1,0x,-1,2,-3,4,-5,6,-7,0,1.234568,9.876543,"","123456789","123456789",0x,0,0,0x,0x,0,0x,0x,0x,0x,0x,0x
99,"99",99,1,0,1,0x,-1,2,-3,4,-5,6,-7,0,1.234568,9.876543,"","123456789","123456789",0x,0,0,0x,0x,0,0x,0x,0x,0x,0x,0x
99,"99",99,1,0,1,0x,-1,2,-3,4,-5,6,-7,0,1.234568,9.876543,"","123456789","123456789",0x,0,0,0x,0x,0,0x,0x,0x,0x,0x,0x

dump 4 records successful

dump time: 121671 us

tcaplus> dump * into table_list.txt from table_list;

dumped 4 records successful

tcaplus> dump * into table_list.xml from table_list using tdr;

dumped 4 records successful

tcaplus> dump *  from table_list_bin encode;
uin,name,level,count,items,name_1,name_2,binary_count,binary,single_struct
1,"MQ==",1,0,0x,"Bw==","",5,0x03001234450000,0x030000000002000000033ff00a915379fa980400000006343334333200
1,"MQ==",1,0,0x,"Bw==","",5,0x03001234450000,0x030000000002000000033ff00a915379fa980400000006343334333200
1,"Mw==",1,0,0x,"","",5,0x1232123443,0x
1,"Mw==",1,0,0x,"","",5,0x1232123443,0x
1,"Mw==",1,0,0x,"","",5,0x1232123443,0x
1,"Mw==",1,0,0x,"","",5,0x1232123443,0x
1,"Ng==",1,0,0x,"Bw==","",5,0x03005645890000,0x030000000001000000013ff1c28f5c28f5c3010000000100
1,"Ng==",1,0,0x,"Bw==","",5,0x03005645890000,0x030000000001000000013ff1c28f5c28f5c3010000000100

7. 常见错误

参考常见错误文档。

results matching ""

    No results matching ""