近期,巨杉数据库正式推出了完整的SequoiaDB 工具包,作为辅助工具,更好地帮助大家使用和运维管理分布式数据库。为此,巨杉技术社区还将持续推出工具系列文章,帮助大家了解巨杉数据库丰富的工具矩阵。
本文作为系列第一篇,将分享巨杉数据库大数据存储工具 sdblobtool 的基本介绍和应用实践。

一、对象存储与自建存储对比
二、巨杉数据库大对象存储


安全性
支持全类型数据的覆盖
SequoiaDB 是⼀款以 JSON/BSON 数据类型作为底层存储格式的分布式关系型数据库,支持灵活的数据类型定义和存储,支持全类型数据的覆盖,可同时存储结构化、半结构化和非结构化数据,对大数据的存储与分析提供了了一个坚实、可靠、高效与灵活的底层平台。
更加灵活的一致性策略
目前,SequoiaDB 数据分区组的数据一致性是基于集合级别进行配置的。用户在使用SequoiaDB 的过程中,可以随时调整数据一致性的强度。在一个多副本的 SequoiaDB 集群中,集合默认的数据⼀致性行级别为“最终⼀致性”。
深度整合大数据体系组件
SequoiaDB 的企业版本不仅集成了 Hadoop 的 HDFS、MapReduce和Spark,还向客户提供完善的 SQL 解决方案和丰富的第三方插件,例如 ETL 工具 Kettle 的 SequoiaDB 插件,Spark SQL 的扩展包--支持 Spark SQL 自动同步操作 SequoiaDB 数据集等。
SequoiaDB 不仅通过了全球最大的 Hadoop 发行商 Cloudera 的官方认证(全球只有四家 NoSQL 数据库获得),还获得了了 DataBricks 的官方认证,同时,SequoiaDB 也是国内三家经过 DataBricks 授权,拥有发行 Spark 权利的厂商之⼀。
三、大对象存储工具 sdblobtool ⽤法
sdblobtool 是一款用于管理 SequoiaDB 集合中大对象的工具,具有大对象(lob)的导出、导⼊、迁移的功能。
1. 大对象的导出
导出功能是将集合中的⼤对象导出到本地⽂件。导出参数:

Note: --prefer 的取值包括 M 或 m 指master(主节点); S 或 s(从节点); A 或 a 表示anyone; 通过1~255指定instanceid(实例id)
[sdbadmin@sdb01]$ sdblobtool --operation export --hostname sdb --svcname 11810
--collection sample.employee --file /opt/file/lobfile
执行效果
[sdbadmin@sdb] sdblobtool --operation export --hostname sdb --svcname 11810 --collection sample.employee --file /home/sdbadmin/mylob
lob exporting has been done, total num:6
#查看当前目录下的日志文件
[sdbadmin@sdb] ls -lrt
总用量 104
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:24 myblog
-rw-r--r--1 sdbadmin sdbadmin_group 1497 10月 27 18:24 sdblobtool.log
导出日志
2019-10-27-18.24.33.252414 Level:EVENT
PID:23987 TID:23987
Function:main Line:323
Message:
Start sdblobtool [Ver:3.2, Re;ease: 42463, Build: 2019-07-27-20.55.27]...
2019-10-27-18.24.33.252848 Level:EVENT
PID:23987 TID:23987
Function:main Line:344
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
options:{省略}
2019-10-27-18.24.33.257633 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/mig/migLobTool.cpp
Message:
begin to export lob
2019-10-27-18.24.33.270184 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/mig/migLobTool.cpp
Message:
lob exporting has been done, total num:6
2019-10-27-18.24.33.270323 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/pmd/sdblobtool.cpp
Message:
sdblobtool quit. rc: 0, shell rc: 0.
[sdbadmin@sdb01]$ sdblobtool --operation export --hostname sdb01 --svcname
11810 --username sdbadmin --password sdbadmin --collection samole.employee --file
/opt/file/lobfile
[sdbadmin@sdb01]$ sdblobtool --operation export --hostname sdb01 --svcname
11810 --collection bizz.img --prefer M --file opt/file/lobfile
Note: 指定--ignorefe 时只需要添加 --ignorefe即可,不需要为其指定具体值。--file的本地⽂文件指使用 sdblobtool 导出⽣生成的文件。
[sdbadmin@sdb01]$ sdblobtool --operation import --hostname sdb --svcname 11810
--collection sample.employee2 --file /home/sdbadmin/mylob --ignorefe
执行效果
[sdbadmin@sdb] ls lrt
总用量 100
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:27 mylob
[sdbadmin@sdb]
[sdbadmin@sdb] sdblobtool --operation import --hostname sdb --svcname 11810 --collection sample.employee2 --file /home/sdbadmin/mylob --ignoref
File version: 1 TotalNum: 6 CreateTime: 2019-10-27-18.27.27.894000
lob importing has been done, total num: 0
[sdbadmin@sdb]
[sdbadmin@sdb] ls -lrt
总用量 104
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:27 mylob
-rw-r--r--1 sdbadmin sdbadmin_group 1492 10月 27 18:30 sdblobtool.log
导出日志
2019-10-27-18.30.08.474176 Level:EVENT
PID:8084 TID:8084
Function:main Line:323
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
Start sdblobtool [Ver: 3.2, Release: 42463, Build: 2019-07-27-20.55.27]...
2019-10-27-18.30.08.474534 Level:EVENT
PID:8084 TID:8084
Function:main Line:344
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
options:{ "hostname": "sdb", "svcname": "11810", "usrname": "", "passwd": "", "operation": "import", "collection": "foo.bar2", "file": "/home/sdbadmin/mylob", "ignorefe": true, "dsthost": "localhost", "dstservice": "11810", "dstusrname": "", "dstpasswd": "", "PreferedInstance": "M", "ssl": false }
2019-10-27-18.30.08.478471 Level:EVENT
PID:8084 TID:8084
Function:_importLob Line:628
File:SequoiaDB/engine/mig/migLobTool.cpp
Message:
begin to import lob
2019-10-27-18.30.08.484134 Level:EVENT
PID:8084 TID:8084
Function:_importLob Line:654
File:SequoiaDB/engine/mig/migLobTool.cpp
Message:
lob importing has been done, total num:0
2019-10-27-18.30.08.484228 Level:EVENT
PID:8084 TID:8084
Function:main Line:365
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
sdblobtool quit. rc: 0, shell rc: 0.
[sdbadmin@sdb01]$ sdblobtool --operation import --hostname sdb01 --username sdbadmin --passwd sdbadmin --svcname 11810 --collection sample.employee2 --file /home/sdbadmin/mylob --ignorefe
Note: 指定--ignorefe 时只需要添加 --ignorefe即可,不需要为其指定具体值。
[sdbadmin@sdb01]$ sdblobtool --operation migration --hostname sdb01 --svcname 11810 --collection sample.employee --dsthost sdb02 --dstservice 11810 --dstcollection sample.employee2 --ignorefe
指定大对象迁移命令后,控制台会在命令执行后给出本次命令执行结果:
大对象导出
lob exporting has been done, total num:6
大对象导入
File version: 1 TotalNum: 6 CreateTime: 2019-10-27-18.27.27.894000
lob importing has been done, total num: 0
用户通过控制台输出可以判断本次导入或者导出是否存在问题。然后再进入导入/导出生成的 sdblobtool.log 日志文件,检查日志文件中文件导出数量的统计,查看日志文件是否存在 ERROR 信息,判断本地操作是否存在错误。
5. 大对象工具日志

四、总结

巨杉Tech | 基于Kafka+Spark+SequoiaDB实时处理架构快速实战
巨杉Tech | SparkSQL+SequoiaDB 性能调优策略
巨杉Tech | 使用 etlAlchemy 工具迁移数据实战
巨杉Tech | SequoiaDB 巨杉数据库高可用容灾测试
巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器
巨杉学习笔记 | SequoiaDB MySQL导入导出工具使用实战
