Druid数据迁移小计

Druid 官方网站上讲了相关的 Dump SegmentInsert Segment 相关的功能,但是经过测试这些功能都不好用,报 Guice 的依赖错误,懒得找具体原因了,换一种方式: 冷迁移

Druid 的数据存储

既然要冷迁移就需要了解一下 Druid 的存储相关的知识了。Druid 的数据存储主要是以 segment 为单位进行的,Druid 不仅要把 segment 保存到文件目录下,还需要在 metadata 里面把该 segment 相关的信息记录下来好进行管理。

# get druid deep storage directory
cat $DRUID_HOME/conf/druid/_common/common.runtime.properties | grep druid.storage
# ger druid metadata storage
cat $DRUID_HOME/conf/druid/_common/common.runtime.properties | grep metadata.storage

根据上面配置文件我们就可以分别拿到 segment 的路径和 metadata 中的 segment 配置。

Deep Storage

Druid 的 Deep Storage 目录组织得还是非常清晰的:{dataSourceName}/{timeRangeStart}_{timeRangeEnd}/{time} 所以我们的数据迁移可以只迁移指定时间范围内的。既然连目录都知道了,那就很简单了,把想要迁移的数据按目录复制出来就行了。

metadata

Druid 不管是用什么数据库做元数据存储表肯定都一样,记录 segment 位置的就是 druid_segments 表了。

字段 解释
dataSource 数据集名称
created_date 创建日期
start 开始日期
end 结束日期
payload 配置信息(此列为二进制存储,内容为一个 JSON需要进行转换后才能看到)

注意事项: payload 中的配置息写死了 segment 的位置,如果你迁移数据后不能在新服务器中的数据目录与原服务器一致则需要修改这个 payload 内容,下方代码即为数据转换代码可以把数据解析并修改后再通过下方在代码生成回 HEX String 并更新到数据库表中。

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex; import java.util.Scanner; /**
* @author sunzq
*/
public class HexConvert {
public static void main(String[] args) throws DecoderException {
Scanner scanner = new Scanner(System.in);
while (true) {
String s = scanner.nextLine();
if (s.equals("q")) {
return;
}
// maven dependency: commons-codec
if (s.startsWith("{")) {
System.out.println(Hex.encodeHexString(s.getBytes()));
} else {
System.out.println(new String(Hex.decodeHex(s)));
}
}
}
}

迁移到新服务器

拿到导出的 segment 文件放到新服务器的指定位置,再去数据库里面插入此 segment 对应的记录就完成了数据的迁移,还是很简单的。

验证

用浏览器访问 coornidator 节点的 API http://ip:port/druid/v2/datasources 看看 datasource 添加了没有,如果没有更新上可以试试重启 coordinator 节点和 historical 节点。

Druid数据迁移小计的更多相关文章

  1. SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计

    表结构: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, [Sex] [int] NOT NULL, ) NULL, ) NULL, , ) N ...

  2. PB gird类型数据窗口 设置分组、分组小计、合计

    今天遇到一个需求,gird表格数据如下:  部门  类型 数据   A  类型1  1  A  类型2  2  B  类型1  3  B  类型2  4   合计 10 实际需要显示的结果为:  部门 ...

  3. SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,总计(合计),小计

    版权声明:本文为博主原创文章,未经博主允许不得转载.本人观点或有不当之处,请在评论中及时指正,我会在第一时间内修改. https://blog.csdn.net/aiming66/article/de ...

  4. 实现对数据进行分组小计并计算合计的实例 asp.net

    可以通过数据绑定来实现  通过union all 来实现数据库 SELECT * FROM v3_pay_list2 where ( (ought_date >= '2012-12-06') a ...

  5. ef core数据迁移的一点小感悟

    ef core在针对mysql数据迁移的时候,有些时候没法迁移...有两种情况没法迁移,一种是因为efcore的bug问题导致没法迁移,这个在github上有个问题集,另外一种是对数据表进行较大幅度的 ...

  6. 数据迁移的应用场景与解决方案Hamal

    本文来自网易云社区 作者:马进 跑男热播,作为兄弟团忠实粉丝,笔者也是一到周五就如打鸡血乐不思蜀. 看着银幕中一众演员搞怪搞笑的浮夸演技,也时常感慨,这样一部看似简单真情流露的真人秀,必然饱含了许许多 ...

  7. 简单的angular购物车商品小计

    <!DOCTYPE html> <html lang="en" ng-app="shopApp"> <head> <m ...

  8. CodeFirst进行数据迁移之添加字段

    一.为模型更改设置 Code First 数据迁移 1.工具->库程序包管理器->程序包管理器控制台->输入"Enable-Migrations"  或者 Ena ...

  9. ASP.NET 5探险(1):Azure中配置连接字符串、独立项目执行EF7数据迁移

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:我开始把ASP.NET 5用于生产系统开发已经有1个多月了,也填了一些坑积累了一些经验,从今天开始会陆陆续 ...

随机推荐

  1. JavaScript设计模式学习之单例模式

    一.单例模式介绍                 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问, ...

  2. CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

    转载自:https://linux.cn/article-4314-1.html 编译自:http://xmodulo.com/install-lemp-stack-centos.html 作者: D ...

  3. Linux下find命令及其参数的使用

    find命令原理:从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件,并可以对其进行相关的操作. 格式:find [查找目录] [参数] [匹配模型] 多参数格式:find [查找目 ...

  4. 耐心排序Patience Sorting

    这个排序的关键在建桶和入桶规则上 建桶规则:如果没有桶,新建一个桶;如果不符合入桶规则那么新建一个桶 入桶规则:只要比桶里最上边的数字小即可入桶,如果有多个桶可入,那么按照从左到右的顺序入桶即可 举个 ...

  5. Redis 模糊匹配 SearchKeys

    语法:KEYS pattern说明:返回与指定模式相匹配的所用的keys.该命令所支持的匹配模式如下:(1)?:用于匹配单个字符.例如,h?llo可以匹配hello.hallo和hxllo等:(2)* ...

  6. bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍 ——中位数排序

    Description 经过多年的积蓄,农夫JOHN决定造一个新的牛舍.他知道所有N(2 <= N <= 10,000)头牛的吃草位置,所以他想把牛舍造在最方便的地方. 每一头牛吃草的位置 ...

  7. word-wrap word-break 区别

    word-wrap word-break 区别 word-break * word-break:break-all;//直接把单词截断 * word-break:break-word;//虽然单词截断 ...

  8. Webview 中FaultyInfo代码说明

    class FaultyInfoHandler(tornado.web.RequestHandler): def get(self): import xmlrpc.client s = xmlrpc. ...

  9. python中的Queue模块

    queue介绍 queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue.python3直接queue即可 在python中,多个线程之间的数据 ...

  10. frp 使用入门

    1.下载安装对应系统版本 https://github.com/fatedier/frp/releases/ 2.将下载的frp移动到系统软件目录 mv frp/ /usr/local 3.配置frp ...