Druid元数据从Derby导出到CSV
使用Druid比较老的版本,有的时候使用的元数据管理库是使用的Derby数据库,但是后面的迁移或者升级,都需要把元数据导出来,但是较老的版本的Druid不支持导出,本文档就把导出这里问题操作了一次,记录了一下。
这里的示例,我是运行了一个Druid0.12.0版本的Druid快速启动的方式运行了一段时间,有一些数据,这里我就是模拟真实环境吧,把我当前环境的数据迁移出来
我的单机的Druid安装,可以参考Druid0.12.0版本单机最简安装
当前的数据量是(停止了数据摄取任务,等待数据已经落库的真实数据)
准备一个新版本的Druid安装包
下载Druid 0.17.0的版本
[root@itdeer ~]# mkdir -p /opt/install
[root@itdeer ~]# cd /opt/install
[root@itdeer install]# wget https://archive.apache.org/dist/druid/0.17.0/apache-druid-0.17.0-bin.tar.gz
解压
[root@itdeer install]# tar -zxf apache-druid-0.17.0-bin.tar.gz
[root@itdeer install]# cd apache-druid-0.17.0
[root@itdeer apache-druid-0.17.0]# mv lib lib2
把lib2这里目录下载下来放到老的版本的Druid的目录下(这里测试的版本是0.12.0版本)
[root@itdeer druid-0.12.0]# ll
total 44
drwxr-xr-x 2 root root 187 Jun 12 11:38 bin
drwxr-xr-x 4 root root 38 Jun 12 11:38 conf
drwxr-xr-x 4 root root 38 Jun 12 11:38 conf-quickstart
drwxr-xr-x 19 root root 4096 Jun 12 11:38 extensions
drwxr-xr-x 3 root root 27 Jun 12 11:38 hadoop-dependencies
drwxr-xr-x 2 root root 8192 Jun 12 11:38 lib
drwxr-xr-x 2 root root 8192 Jun 12 16:50 lib2
-rw-r--r-- 1 501 games 11358 Sep 9 2016 LICENSE
drwxr-xr-x 2 root root 6 Jun 12 11:41 log
-rw-r--r-- 1 501 games 3454 Mar 8 2018 NOTICE
drwxr-xr-x 3 root root 171 Jun 12 11:41 quickstart
drwxr-xr-x 4 root root 30 Jun 12 11:41 var
停止服务,保证数据不会在有进出
[1] 有Kafka的indexer的摄取任务的,先停止supervisor的任务,等task自然的停止。
[2] 停止除coordinator之外的所有的服务,(可以先停止所有的服务,然后在启动coordinator服务,因为coordinator停止Derby也是停止的,启动coordinator时注意Zookeeper也要运行的)
准备导出元数据
[1] 准备目录
mkdir /opt/csv
[2] 执行命令
cd $DRUID_HOME/ #进入Druid0.12.0的安装目录下
执行命令
java -classpath "lib2/*" -Dlog4j.configurationFile=conf-quickstart/druid/_common/log4j2.xml -Ddruid.extensions.directory="extensions" -Ddruid.extensions.loadList=[] org.apache.druid.cli.Main tools export-metadata --connectURI "jdbc:derby://localhost:1527/var/druid/metadata.db;create=true;" -o /opt/csv
conf-quickstart/druid/_common/log4j2.xml # 是我当前Druid运行的模式,就是我运行的是quickstart单机版本的Druid,若是运行cluster则指定 conf/druid/_common/log4j2.xml 即可
jdbc:derby://localhost:1527/var/druid/metadata.db;create=true; # conf-quickstart/druid/_common/common.runtime.properties 配置文件的属性
-o /opt/csv # 指定的输出文件目录
[3] 查看元数据文件
[root@itdeer druid-0.12.0]# ll /opt/csv/
total 116
-rw-r--r-- 1 root root 0 Jun 12 16:57 druid_config.csv
-rw-r--r-- 1 root root 0 Jun 12 16:57 druid_config_raw.csv
-rw-r--r-- 1 root root 172 Jun 12 16:57 druid_dataSource.csv
-rw-r--r-- 1 root root 246 Jun 12 16:57 druid_dataSource_raw.csv
-rw-r--r-- 1 root root 142 Jun 12 16:57 druid_rules.csv
-rw-r--r-- 1 root root 203 Jun 12 16:57 druid_rules_raw.csv
-rw-r--r-- 1 root root 32773 Jun 12 16:57 druid_segments.csv
-rw-r--r-- 1 root root 54426 Jun 12 16:57 druid_segments_raw.csv
-rw-r--r-- 1 root root 1654 Jun 12 16:57 druid_supervisors.csv
-rw-r--r-- 1 root root 2878 Jun 12 16:57 druid_supervisors_raw.csv
OK 现在已经把Derby存储的元数据导出来了。其他的版本应该也是可以的,应该适用于所有的版本,这里只是导出Derby的数据。