2019-05-15 17:49:50 -04:00
|
|
|
---
|
2019-08-21 00:48:59 -04:00
|
|
|
id: insert-segment-to-db
|
|
|
|
title: "insert-segment-to-db tool"
|
2019-05-15 17:49:50 -04:00
|
|
|
---
|
|
|
|
|
|
|
|
<!--
|
|
|
|
~ Licensed to the Apache Software Foundation (ASF) under one
|
|
|
|
~ or more contributor license agreements. See the NOTICE file
|
|
|
|
~ distributed with this work for additional information
|
|
|
|
~ regarding copyright ownership. The ASF licenses this file
|
|
|
|
~ to you under the Apache License, Version 2.0 (the
|
|
|
|
~ "License"); you may not use this file except in compliance
|
|
|
|
~ with the License. You may obtain a copy of the License at
|
|
|
|
~
|
|
|
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
~
|
|
|
|
~ Unless required by applicable law or agreed to in writing,
|
|
|
|
~ software distributed under the License is distributed on an
|
|
|
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
|
~ KIND, either express or implied. See the License for the
|
|
|
|
~ specific language governing permissions and limitations
|
|
|
|
~ under the License.
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
2020-01-03 12:33:19 -05:00
|
|
|
In older versions of Apache Druid, `insert-segment-to-db` was a tool that could scan deep storage and
|
2019-05-15 17:49:50 -04:00
|
|
|
insert data from there into Druid metadata storage. It was intended to be used to update the segment table in the
|
|
|
|
metadata storage after manually migrating segments from one place to another, or even to recover lost metadata storage
|
|
|
|
by telling it where the segments are stored.
|
|
|
|
|
|
|
|
In Druid 0.14.x and earlier, Druid wrote segment metadata to two places: the metadata store's `druid_segments` table, and
|
|
|
|
`descriptor.json` files in deep storage. This practice was stopped in Druid 0.15.0 as part of
|
|
|
|
[consolidated metadata management](https://github.com/apache/druid/issues/6849), for the following reasons:
|
|
|
|
|
|
|
|
1. If any segments are manually dropped or re-enabled by cluster operators, this information is not reflected in
|
|
|
|
deep storage. Restoring metadata from deep storage would undo any such drops or re-enables.
|
|
|
|
2. Ingestion methods that allocate segments optimistically (such as native Kafka or Kinesis stream ingestion, or native
|
|
|
|
batch ingestion in 'append' mode) can write segments to deep storage that are not meant to actually be used by the
|
|
|
|
Druid cluster. There is no way, while purely looking at deep storage, to differentiate the segments that made it into
|
|
|
|
the metadata store originally (and therefore _should_ be used) from the segments that did not (and therefore
|
|
|
|
_should not_ be used).
|
|
|
|
3. Nothing in Druid other than the `insert-segment-to-db` tool read the `descriptor.json` files.
|
|
|
|
|
|
|
|
After this change, Druid stopped writing `descriptor.json` files to deep storage, and now only writes segment metadata
|
|
|
|
to the metadata store. This meant the `insert-segment-to-db` tool is no longer useful, so it was removed in Druid 0.15.0.
|
|
|
|
|
|
|
|
It is highly recommended that you take regular backups of your metadata store, since it is difficult to recover Druid
|
|
|
|
clusters properly without it.
|