导出Cassandra数据指南

2022-05-11 00:00:00 执行 配置 建议 文件系统 导出

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.com/qs-nosql/nosql_02_0009.html中的下载链接获取cqlsh客户端,执行机上使用wget命令下载客户端;下载后解压并校验MD5值,并执行chmod +x cqlsh

执行机挂载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之后版本

 

配置导出任务

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.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

相关文章