| --- |
| id: deep-storage-migration |
| title: "Deep storage migration" |
| --- |
| |
| <!-- |
| ~ 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. |
| --> |
| |
| |
| If you have been running an evaluation Druid cluster using local deep storage and wish to migrate to a |
| more production-capable deep storage system such as S3 or HDFS, this document describes the necessary steps. |
| |
| Migration of deep storage involves the following steps at a high level: |
| |
| - Copying segments from local deep storage to the new deep storage |
| - Exporting Druid's segments table from metadata |
| - Rewriting the load specs in the exported segment data to reflect the new deep storage location |
| - Reimporting the edited segments into metadata |
| |
| ## Shut down cluster services |
| |
| To ensure a clean migration, shut down the non-coordinator services to ensure that metadata state will not |
| change as you do the migration. |
| |
| When migrating from Derby, the coordinator processes will still need to be up initially, as they host the Derby database. |
| |
| ## Copy segments from old deep storage to new deep storage. |
| |
| Before migrating, you will need to copy your old segments to the new deep storage. |
| |
| For information on what path structure to use in the new deep storage, please see [deep storage migration options](../operations/export-metadata.md#deep-storage-migration). |
| |
| ## Export segments with rewritten load specs |
| |
| Druid provides an [Export Metadata Tool](../operations/export-metadata.md) for exporting metadata from Derby into CSV files |
| which can then be reimported. |
| |
| By setting [deep storage migration options](../operations/export-metadata.md#deep-storage-migration), the `export-metadata` tool will export CSV files where the segment load specs have been rewritten to load from your new deep storage location. |
| |
| Run the `export-metadata` tool on your existing cluster, using the migration options appropriate for your new deep storage location, and save the CSV files it generates. After a successful export, you can shut down the coordinator. |
| |
| ### Import metadata |
| |
| After generating the CSV exports with the modified segment data, you can reimport the contents of the Druid segments table from the generated CSVs. |
| |
| Please refer to [import commands](../operations/export-metadata.md#importing-metadata) for examples. Only the `druid_segments` table needs to be imported. |
| |
| ### Restart cluster |
| |
| After importing the segment table successfully, you can now restart your cluster. |