导出Cassandra数据指南

举报
GaussDB 数据库 发表于 2021/01/11 17:40:20 2021/01/11
【摘要】 1.  导出方案简介导出方案如下图所示,客户需要配置导出执行机,obsfs文件系统,下载cqlsh客户端;执行cqlsh导出命令将数据从GaussDB for Cassandra导出到执行机;执行机上的cqlsh会将数据写到挂载的obsfs文件系统中(如不挂载,则写入执行机本地盘),之后用户可从obsfs桶中消费数据。2.  导出详细步骤及配置配置导出执行机1.  )在弹性云服务器页面购买弹...


1.  导出方案简介

导出方案如下图所示,客户需要配置导出执行机obsfs文件系统下载cqlsh客户端;执行cqlsh导出命令将数据从GaussDB for Cassandra导出到执行机;执行机上的cqlsh会将数据写到挂载的obsfs文件系统中(如不挂载,则写入执行机本地盘),之后用户可从obsfs桶中消费数据。


443.png

2.  导出详细步骤及配置

  • 配置导出执行机

    1.  )在弹性云服务器页面购买弹性云服务器,根据对导出性能需求购买所需规格,建议至少32U64G。镜像无论选择私有镜像还是公共镜像,请保证操作系统是Centos或EulerOS

22.png

    2. )如果使用本地文件系统,则需要增加超高IO的数据盘盘,数据盘容量根据业务需要指定;

22.png

    3. )如果使用obsfs文件系统,则选择默认配置即可

333.png

    4. )网络配置中请保证执行机和导出实例的vpc,子网,安全组保持一致,弹性公网ip无要求

44.png

    5.  )创建完成后,根据https://support.huaweicloud.com/qs-nosql/nosql_02_0009.html中的下载链接获取cqlsh客户端,执行机上使用wget命令下载客户端;下载后解压并校验MD5值,并执行chmod +x cqlsh

555.png

  • 执行机挂载obsfs文件系统

    1.)根据链接https://support.huaweicloud.com/fstg-obs/obs_12_0004.html 中链接和配置获取obsfs工具,使用时务必从官网下载最新版本

    2.)  根据指南https://support.huaweicloud.com/fstg-obs/obs_12_0006.html 初始化obsfs

    3.)  在执行机上挂载并行文件系统,请参考https://support.huaweicloud.com/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之后版本

666.png

  • 配置导出任务

    1. ) 导出脚本参考

Pagesize默认值为1000,如果该表单行比较大,则建议调整该值,可提升导出速度;

例如当单行size超过1k时,设置为400,命令为pagesize=400

777.png

#!/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,参数上限视执行机负载和集群负载上限而定

image.png

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`



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。