导出Cassandra数据指南
1. 导出方案简介
导出方案如下图所示,客户需要配置导出执行机,obsfs文件系统,下载cqlsh客户端;执行cqlsh导出命令将数据从GaussDB for Cassandra导出到执行机;执行机上的cqlsh会将数据写到挂载的obsfs文件系统中(如不挂载,则写入执行机本地盘),之后用户可从obsfs桶中消费数据。
2. 导出详细步骤及配置
-
配置导出执行机
1. )在弹性云服务器页面购买弹性云服务器,根据对导出性能需求购买所需规格,建议至少32U64G。镜像无论选择私有镜像还是公共镜像,请保证操作系统是Centos或EulerOS
2. )如果使用本地文件系统,则需要增加超高IO的数据盘盘,数据盘容量根据业务需要指定;
3. )如果使用obsfs文件系统,则选择默认配置即可
4. )网络配置中请保证执行机和导出实例的vpc,子网,安全组保持一致,弹性公网ip无要求
5. )创建完成后,根据https://support.huaweicloud.cn/qs-nosql/nosql_02_0009.html中的下载链接获取cqlsh客户端,执行机上使用wget命令下载客户端;下载后解压并校验MD5值,并执行chmod +x cqlsh
-
执行机挂载obsfs文件系统
1.)根据链接https://support.huaweicloud.cn/fstg-obs/obs_12_0004.html 中链接和配置获取obsfs工具,使用时务必从官网下载最新版本
2.) 根据指南https://support.huaweicloud.cn/fstg-obs/obs_12_0006.html 初始化obsfs
3.) 在执行机上挂载并行文件系统,请参考https://support.huaweicloud.cn/fstg-obs/obs_12_0008.html ,挂载命令可参考:
./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之后版本
-
配置导出任务
1. ) 导出脚本参考
Pagesize默认值为1000,如果该表单行比较大,则建议调整该值,可提升导出速度;
例如当单行size超过1k时,设置为400,命令为pagesize=400
#!/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.cn/fstg-obs/obs_12_0004.html
2. _SUCCESS时间的问题
文件生成之后才做下游任务,但发现文件生成之后导出任务并未结束;
如果要获取任务完成时间,请使用使用结果文件的mtime时间
3. 判断导出任务是否结束脚本使用错误,
判断导出结束的标准使用导出的结果文件:是否包含success
使用:result=`cat export_cycling_t1.result |grep Results |grep success`
- 点赞
- 收藏
- 关注作者
评论(0)