1. 导出方案简介
导出方案如下图所示,客户需要配置导出执行机,obsfs文件系统,下载cqlsh客户端;执行cqlsh导出命令将数据从GaussDB for Cassandra导出到执行机;执行机上的cqlsh会将数据写到挂载的obsfs文件系统中(如不挂载,则写入执行机本地盘),之后用户可从obsfs桶中消费数据。
执行机挂载obsfs文件系统
./obsfs obsfile-guangzhou /mountpoint -o url=obs.cn-south-1.myhuaweicloud.com -o
passwd_file=/etc/passwd-obsfs -o nonempty -o big_writes -o max_write=131072 -o
max_background=100 -o use_ino
其中桶名,目录,url请根据实际情况指定
4. ) 安装完成后请执行cat /etc/obsfsversion,确保版本为2020-10-15之后版本
#!/bin/bash
# the script use for expor cassnadra tables
# 2020/09/30
[ ${table} ] || exit 1
[ -d /data/export ] || exit 1
exportdir=/data/export/cassandra/${table}/`date -d "1 days ago" +%Y-%m-%d`
logdir=/data/logs/${table}/`date -d "1 days ago" +%Y-%m-%d`
rm -f $exportdir/*
[ -d ${exportdir} ] || mkdir -p ${exportdir}
[ -d ${logdir} ] || mkdir -p ${logdir}
cqlsh ${ip} -u ${user} 8635 -p "${password}" --request-timeout=3600 -e "COPY
${keyspace}.${table} to '${exportdir}' with NUMPROCESSES=${process} AND
RATEFILE='${logdir}/rate.txt' AND RESULTFILE='${logdir}/export_result' AND
dataformats='${format}' AND MAXOUTPUTSIZE=${MAXOUTPUTSIZE} AND
MAXATTEMPTS=3;" > ${logdir}/${table}.log 2>&1
result=`cat ${logdir}/export_result |grep Results |grep success`
[ "${result}" != "" ] || exit 1
touch ${exportdir}/_SUCCESS
#sed -n 1p ${logdir}/export_result|grep "success"
2. ) 导出参数设置
建议设置如下参数,process根据实际需求设置,增大会加快导出速率,减小会放缓导出速率,无特殊要求设置为16,参数上限视执行机负载和集群负载上限而定
3. 使用建议
1. ) 建议大表的导出分开在不同的执行机上
2. ) 当同一个执行机上的多个导出任务压力都比较大时,建议分时段进行导出
4. FAQ
1. 虚拟机cpu到60%以上之后挂载文件系统的进程就挂掉了,导致无法正常写数据
客户需要更换obsfs客户端版本,obsfs 10月之前的版本存在大压力写导致进程退出的问题,该问题已于10月份修复并更新客户端至官网,链接如下:https://support.huaweicloud.com/fstg-obs/obs_12_0004.html
2._SUCCESS时间的问题
文件生成之后才做下游任务,但发现文件生成之后导出任务并未结束;
如果要获取任务完成时间,请使用使用结果文件的mtime时间
3. 判断导出任务是否结束脚本使用错误,
判断导出结束的标准使用导出的结果文件:是否包含success
使用:result=`cat export_cycling_t1.result |grep Results |grep success`
原文链接:https://blog.csdn.net/weixin_42352981/article/details/114489468