MySQL to SequoiaDB数据迁移

随着互联网的飞速发展,互联网的业务量呈爆发性增长,对于的数据量也迅速激增。传统的单机数据库在存储空间及性能的瓶颈,导致其将无法支撑企业业务的高速发展。伴随着海量数据对系统性能,成本以及扩展性的新需求,分布式数据库系统应运而生。sequoiadb作为是一款优秀的分布式文档型数据库,其底层基于分布式,高可用,高性能与动态数据类型设计的,能够应对海量数据的存储,及提供高效检索。

传统数据库可以利用分布式数据库的优势来缓解其自身的瓶颈。比如,将历史数据迁移到sequoiadb,由sequoiadb提供存储及业务服务,以缓解传统数据库自身的压力。数据迁移分为全量迁移和增量迁移,本文主要对mysql到sequoiadb的增量数据迁移过程进行分析。

本文将通过一个小案例来分析数据从mysql数据库抽取,并经由spark对数据进行清洗转换,最后装载到sequoiadb的迁移过程。

源数据mysql中有两张待迁移的数据表分别为student表和grade表,我们需要对grade表进行增量迁移,每次只迁移更新的数据;此外,我们需要一张由student和grade整合的大表,方便提供查询服务。

具体方案为先通过select … into outfile …方式从mysql数据库中导出数据为csv格式文件,指定导出编码为gb18030(此处模拟银行数据编码),经由java将文件编码由gb18030转为utf8编码类型;然后,针对不同的数据,选择不同的导入的方式。对于增量的数据可以调用sdbimprt和sdbupsert工具结合的方式来导入到SDB集群中,对于需要额外加工处理的数据可以利用spark的RDD特性进行处理并加装到sequoiadb集群中。

mysql导出数据可以使用mysqldump工具,也可用select into outfile的方式,此处使用select into outfile方式进行数据抽取,执行以下语句即可实现带条件抽取指定数据到指定目录下。其中参数character 指定为gb18030 编码,fields 分隔符为",",lines 分隔符为’\n’。

select * from student where id < 51 into outfile '/data/hbh/student.csv' character set gb18030 fields terminated by ',' lines terminated by '\n';
select * from grade int
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值