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. php中相关函数

    1.php标准风格 <?php //这是标准风格 echo '推荐标准风格'; ?> 2.php中文乱码 .html:<meta http-equiv="Content-T ...

  2. vue-cli中引入jquery的方法

    vue-cli中引入jquery的方法 以前写vue项目都没有引入过jquery,今天群里面的一位小伙伴问了我这个问题,我就自己捣鼓了一下,方法如下: 我们先进入webpack.base.conf.j ...

  3. Android SearchView设置与用法的那点事儿

    // 设置该SearchView默认是否自动缩小为图标 mSearchView.setIconifiedByDefault(false); // 为该SearchView组件设置事件监听器 mSear ...

  4. Android数据过滤器:Filter

    类图: 通常可以将SearchView和ListView结合,实现数据的搜索和过滤. 1.监听SearchView,SearchView.setOnQueryTextListener(OnQueryT ...

  5. linux包安装,解压,压缩,包管理,环境变量

    linux 包安装,解压,压缩,包管理 centoscentos上有系统包管理器yum yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.r ...

  6. LightOJ 1151 - Snakes and Ladders 高斯消元+概率DP

    首先来个期望的论文,讲的非常好,里面也提到了使用线性方程组求解,尤其适用于有向图的期望问题. 算法合集之<浅析竞赛中一类数学期望问题的解决方法> http://www.lightoj.co ...

  7. struts2常用标签之数据标签

    数据标签1  property标签  property标签的主要属性:  value:用来获取值的OGNL表达式,如果value属性值没有指定,那么将会被设定为top,也就是返回位于值栈最顶端的对象. ...

  8. javascript「篱式」条件判断

    我们已经知道,null 没有任何的属性值,并且无法获取其实体(existence)值.所以 null.property 返回的是错误(error)而不是 undefined . 考虑下面的代码 if ...

  9. 边缘检测:Canny算子,Sobel算子,Laplace算子

    1.canny算子 Canny边缘检测算子是John F.Canny于 1986 年开发出来的一个多级边缘检测算法.更为重要的是 Canny 创立了边缘检测计算理论(Computational the ...

  10. beego 相关

    bee api bapi bee run -downdoc=true -docgen=true