GBase 8a删除加载日志loader_logs方法

GBase 8a通过LOAD方式加载时,如果有报错或者加载错误数据,会将加载日志和数据记录到连接节点的load_logs目录下。因为是用户数据,当前版本尚没有配置自动删除功能,而是建议用户在LOAD语句里将错误数据导出到用户自己指定的ftp/sftp目标服务器,自行管理。本文介绍在默认情况下,如何通过rsync命令快速清理这些日志。

环境

构造加载错误日志

弄了一个表结构和数据不一致的情况。

gbase> load data infile 'sftp://gbase:gbase1234@10.0.2.101/home/gbase/aggr_loc_peersigip_srvapp_hour_week_202211.csv' into table t1  fields terminated by '\t';
Query OK, 0 rows affected (Elapsed: 00:00:04.86)
Task 14 finished, Loaded 0 records, Skipped 276008 records

gbase> load data infile 'sftp://gbase:gbase1234@10.0.2.101/home/gbase/aggr_loc_peersigip_srvapp_hour_week_202210.csv' into table t1  fields terminated by '\t';
Query OK, 0 rows affected (Elapsed: 00:00:01.25)
Task 15 finished, Loaded 0 records, Skipped 559 records
gbase>

查看加载日志

加载日志(有错误数据时产生)默认放在加载连接节点的gcluster/log/gcluster/loader_logs下面。按照加载load的taskid号创建目录,内部是1个加载结果和有错误的各个分片的错误日志和对应错误数据。

[gbase@gbase_rh7_001 loader_logs]$ pwd
/opt/gbase/gcluster/log/gcluster/loader_logs
[gbase@gbase_rh7_001 loader_logs]$ ll
total 0
drwx------. 2 gbase gbase 140 Apr  1 10:30 14
drwx------. 2 gbase gbase 140 Apr  1 10:30 15
drwx------. 2 gbase gbase 140 Apr  1 10:30 16
drwx------. 2 gbase gbase 140 Apr  1 10:30 17
[gbase@gbase_rh7_001 loader_logs]$ ll 14
total 58988
-rw-------. 1 gbase gbase      272 Apr  1 10:30 14_loader_result.log
-rw-------. 1 gbase gbase 26264424 Apr  1 10:30 14_testdb_t1_n1_10.0.2.101_20220401103041.err
-rw-------. 1 gbase gbase 34128469 Apr  1 10:30 14_testdb_t1_n1_10.0.2.101_20220401103041.trc
[gbase@gbase_rh7_001 loader_logs]$ ll 15
total 124
-rw-------. 1 gbase gbase   264 Apr  1 10:30 15_loader_result.log
-rw-------. 1 gbase gbase 51650 Apr  1 10:30 15_testdb_t1_n1_10.0.2.101_20220401103051.err
-rw-------. 1 gbase gbase 67596 Apr  1 10:30 15_testdb_t1_n1_10.0.2.101_20220401103051.trc
[gbase@gbase_rh7_001 loader_logs]$

通过Rsync清理日志

一般如果文件不多,可以用

rm -fr *

来清理,如果再多,可以用

ls | xargs rm -fr

来清理,如果极多,或者如上的方法耗时很长,可以考虑用rsync的方法清理大量的目录和文件

语法

rsync --delete-before -d -a -H -v --progress --stats SOURCE  TARGET

其中有关参数

  • -delete-before 传输前进行删除操作,而不是传输中(–delete-during)
  • -d 不递归的传输目录
  • -a 归档,表示以递归方式传输文件
  • -H 保持硬链接的文件
  • -v 详细模式,输出些日志
  • –progress 同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、 同步的文件传输速度等
  • –stats 每个文件的传输状态
  • SOURCE 源文件
  • TARGET 目标文件

因为本文是介绍删除,那么源文件就是个空目录

创建空目录

如下在/tmp目录创建一个空目录,名字随意。

mkdir /tmp/BLANK

Rsync删除loader_log目录

因为是删除,所以不需要那些过程之类的参数,只使用–delete-before。同时是否递归目录,需要指定-d不递归,我们只有1级目录

注意,SOURCE使用的是/tmo/BLANK/ 代表是这个目录下的内容, 如果不带最后的/,会导致将BLANK目录同步到目标,而不是BLANK目录下的内容。

[gbase@gbase_rh7_001 gcluster]$ rsync --delete-before -d -v /tmp/BLANK/  /opt/gbase/gcluster/log/gcluster/loader_logs
building file list ... done
deleting 17/17_testdb_t1_n1_10.0.2.101_20220401103055.trc
deleting 17/17_testdb_t1_n1_10.0.2.101_20220401103055.err
deleting 17/17_loader_result.log
deleting 17/
deleting 16/16_testdb_t1_n1_10.0.2.101_20220401103053.trc
deleting 16/16_testdb_t1_n1_10.0.2.101_20220401103053.err
deleting 16/16_loader_result.log
deleting 16/
deleting 15/15_testdb_t1_n1_10.0.2.101_20220401103051.trc
deleting 15/15_testdb_t1_n1_10.0.2.101_20220401103051.err
deleting 15/15_loader_result.log
deleting 15/
deleting 14/14_testdb_t1_n1_10.0.2.101_20220401103041.trc
deleting 14/14_testdb_t1_n1_10.0.2.101_20220401103041.err
deleting 14/14_loader_result.log
deleting 14/

sent 22 bytes  received 12 bytes  68.00 bytes/sec
total size is 0  speedup is 0.00
[gbase@gbase_rh7_001 gcluster]$ ll loader_logs/
total 0
[gbase@gbase_rh7_001 gcluster]$

总结

实际测试,通过rsync删除目录的速度,远高于rm的方式。网上找到的资料,是rsync是多线程处理,而rm是单线程的。其中rm耗时40分钟的场景,用rsync只需要 18秒。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值