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. 常见错误
参考常见错误文档。