---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/reference/ydb-cli/export-import/tools-restore.md?version=v26.1
  - https://ydb.tech/docs/ru/reference/ydb-cli/export-import/tools-restore.md?version=v26.1
  - href: ru/reference/ydb-cli/export-import/tools-restore.md
    type: text/markdown
    title: Markdown version
  - href: ../../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/reference/ydb-cli/export-import/tools-restore.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

<!-- source: ru/reference/ydb-cli/export-import/_includes/tools-restore.md -->
# Загрузка из файловой системы

## Кластер {#cluster}

Команда `admin cluster restore` восстанавливает метаданные кластера из резервной копии в файловой системе, ранее выгруженной туда командой `admin cluster dump`, или подготовленной вручную в соответствии с правилами, описанными в статье [Файловая структура выгрузки](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/file-structure.md?version=v26.1):

```bash
ydb [connection options] admin cluster restore -i <PATH> [options]
```

<!-- source: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->
, где `[connection options]` — опции [соединения с БД](https://ydb.tech/docs/ru/reference/ydb-cli/connect.md?version=v26.1#command-line-pars)
<!-- endsource: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->

Перед восстановлением целевой кластер должен быть [запущен и проинициализирован](https://ydb.tech/docs/ru/devops/index.md?version=v26.1).

При восстановлении метаданных кластера создаются базы данных и их администраторы. Дальнейшее восстановление баз данных описано в разделе [База данных](#db).

<!-- source: ru/reference/ydb-cli/export-import/_includes/restore-database-nodes.md -->
Операция восстановления требует, чтобы для каждой восстанавливаемой базы данных были доступны ее узлы базы данных. Узлы базы данных можно запустить заранее или во время ожидания доступных узлов операцией восстановления. При проблемах с доступными узлами базы данных операцию восстановления можно запустить повторно.
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/restore-database-nodes.md -->

[Конфигурация кластера](https://ydb.tech/docs/ru/devops/configuration-management/configuration-v2/config-overview.md?version=v26.1) восстанавливается отдельно с помощью следующих действий:

1) Загрузить сохраненную конфигурацию с помощью команды `ydb admin cluster config replace`.
2) Перезапустить узлы кластера.

### Обязательные параметры {#mandatory}

`-i <PATH>` или `--input <PATH>`: Путь к директории в клиентской файловой системе, откуда будет выполняться загрузка.

### Необязательные параметры {#optional}

`[options]` – необязательные параметры команды:

`--wait-nodes-duration <DURATION>`: Продолжительность ожидания доступных узлов восстанавливаемых баз данных. Пример: `10s`, `5m`, `1h`, `1.5d`, `30`. Продолжительность может выражаться в неделях, днях, часах, минутах, секундах, микросекундах, наносекундах. Если не указать суффикс, то продолжительность является секундами. Продолжительность может быть дробной. Комбинированная продолжительность, как `1h30m`, не поддерживается. Если продолжительность `0`, то ожидание отсутствует.

## База данных {#db}

Команда `admin database restore` восстанавливает базу данных из резервной копии на файловой системы, ранее выгруженную туда командой `admin database dump`, или подготовленную вручную в соответствии с правилами, описанными в статье [Файловая структура выгрузки](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/file-structure.md?version=v26.1):

<!-- source: ru/reference/ydb-cli/export-import/_includes/limitation-restore-column-tables.md -->
{% note warning %}

На текущий момент данная команда не восстанавливает данные колоночных таблиц (эти данные не выгружаются в резервную копию). Для импорта данных из колоночных таблиц можно использовать [внешние источники данных](https://ydb.tech/docs/ru/concepts/datamodel/external_data_source.md?version=v26.1). Подробнее см. в статье [Импорт данных](https://ydb.tech/docs/ru/concepts/query_execution/federated_query/import_and_export.md?version=v26.1#import).

{% endnote %}
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/limitation-restore-column-tables.md -->

<!-- source: ru/reference/ydb-cli/export-import/_includes/limitation-restore-secrets.md -->
{% note warning %}

На текущий момент данная команда не восстанавливает [секреты](https://ydb.tech/docs/ru/concepts/datamodel/secrets.md?version=v26.1) (эти данные не выгружаются в резервную копию). Секреты необходимо [создавать](https://ydb.tech/docs/ru/yql/reference/syntax/create-secret.md?version=v26.1) при восстановлении вручную до того, как будут восстановлены использующие их объекты, такие как, например, [трансферы данных](https://ydb.tech/docs/ru/concepts/transfer.md?version=v26.1). 

{% endnote %}
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/limitation-restore-secrets.md -->

```bash
ydb [connection options] admin database restore -i <PATH> [options]
```

<!-- source: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->
, где `[connection options]` — опции [соединения с БД](https://ydb.tech/docs/ru/reference/ydb-cli/connect.md?version=v26.1#command-line-pars)
<!-- endsource: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->

<!-- source: ru/reference/ydb-cli/export-import/_includes/restore-database-nodes.md -->
Операция восстановления требует, чтобы для каждой восстанавливаемой базы данных были доступны ее узлы базы данных. Узлы базы данных можно запустить заранее или во время ожидания доступных узлов операцией восстановления. При проблемах с доступными узлами базы данных операцию восстановления можно запустить повторно.
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/restore-database-nodes.md -->

Восстановление схемных объектов базы данных происходит также, как и описано в разделе [Объекты схемы данных](#schema-objects).

[Конфигурация базы данных](https://ydb.tech/docs/ru/devops/configuration-management/configuration-v2/config-overview.md?version=v26.1) восстанавливается отдельно с помощью следующих действий:

1) Загрузить сохранненую конфигурацию с помощью команды `ydb admin database config replace`.
2) Перезапустить узлы базы данных.

### Обязательные параметры {#mandatory}

`-i <PATH>` или `--input <PATH>`: Путь к директории в клиентской файловой системе, откуда будет выполняться загрузка.

### Необязательные параметры {#optional}

`[options]` – необязательные параметры команды:

`--wait-nodes-duration <DURATION>`: Продолжительность ожидания доступных узлов восстанавливаемой базы данных. Пример: `10s`, `5m`, `1h`, `1.5d`, `30`. Продолжительность может выражаться в неделях, днях, часах, минутах, секундах, микросекундах, наносекундах. Если не указать суффикс, то продолжительность является секундами. Продолжительность может быть дробной. Комбинированная продолжительность, как `1h30m`, не поддерживается. Если продолжительность `0`, то ожидание отсутствует.

## Объекты схемы данных {#schema-objects}

Команда `tools restore` создает в базе данных объекты схемы данных и загружает в них данные из файловой системы, ранее выгруженные туда командой `tools dump`, или подготовленные вручную в соответствии с правилами, описанными в статье [Файловая структура](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/file-structure.md?version=v26.1):

<!-- source: ru/reference/ydb-cli/export-import/_includes/limitation-restore-column-tables.md -->
{% note warning %}

На текущий момент данная команда не восстанавливает данные колоночных таблиц (эти данные не выгружаются в резервную копию). Для импорта данных из колоночных таблиц можно использовать [внешние источники данных](https://ydb.tech/docs/ru/concepts/datamodel/external_data_source.md?version=v26.1). Подробнее см. в статье [Импорт данных](https://ydb.tech/docs/ru/concepts/query_execution/federated_query/import_and_export.md?version=v26.1#import).

{% endnote %}
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/limitation-restore-column-tables.md -->

<!-- source: ru/reference/ydb-cli/export-import/_includes/limitation-restore-secrets.md -->
{% note warning %}

На текущий момент данная команда не восстанавливает [секреты](https://ydb.tech/docs/ru/concepts/datamodel/secrets.md?version=v26.1) (эти данные не выгружаются в резервную копию). Секреты необходимо [создавать](https://ydb.tech/docs/ru/yql/reference/syntax/create-secret.md?version=v26.1) при восстановлении вручную до того, как будут восстановлены использующие их объекты, такие как, например, [трансферы данных](https://ydb.tech/docs/ru/concepts/transfer.md?version=v26.1). 

{% endnote %}
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/limitation-restore-secrets.md -->

```bash
ydb [connection options] tools restore -p <PATH> -i <PATH> [options]
```

<!-- source: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->
, где `[connection options]` — опции [соединения с БД](https://ydb.tech/docs/ru/reference/ydb-cli/connect.md?version=v26.1#command-line-pars)
<!-- endsource: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->

Если таблица или директория уже существует в базе данных, изменения в её схему или ACL внесены не будут. Это может привести к тому, что операция загрузки данных окажется невозможной, если не все колонки из загружаемых файлов присутствуют в таблице или если есть несоответствия по типам данных.

Для загрузки данных в таблицу применяется [команда YQL `REPLACE`](https://ydb.tech/docs/ru/yql/reference/syntax/replace_into.md?version=v26.1). Если до момента загрузки в таблице существовали записи, то те из них, ключи которых существуют в загружаемых файлах, будут заменены данными из файлов; записи с теми ключами, которых не существует в загружаемых файлах, останутся без изменений.

### Обязательные параметры {#mandatory}

- `-p <PATH>` или `--path <PATH>`: Путь к директории в базе данных, внутрь которой будет выполняться загрузка. Для загрузки в корневой каталог укажите `.`. Все отсутствующие директории на пути будут созданы.

- `-i <PATH>` или `--input <PATH>`: Путь к директории в клиентской файловой системе, откуда будет выполняться загрузка.

### Необязательные параметры {#optional}

`[options]` – необязательные параметры команды:

- `--restore-data <VAL>`: Флаг загрузки данных, 1 (да) или 0 (нет), по умолчанию 1. Если флаг установлен в 0, то при загрузке будут только созданы объекты в схеме, а данные в них загружены не будут. Если в файловой системе нет данных (выгружена только схема), то изменение флага не имеет значения.

- `--restore-indexes <VAL>`: Флаг загрузки индексов, 1 (да) или 0 (нет), по умолчанию 1. Если флаг установлен в 0, то при загрузке индексы не будут ни зарегистрированы в схеме данных, ни заполнены данными.

- `--restore-acl <VAL>`: Флаг загрузки ACL, 1 (да) или 0 (нет), по умолчанию 1. Если флаг установлен в 0, то при загрузке объекты будут созданы в схеме с пустым ACL, а их владельцем станет пользователь, запустивший загрузку.

- `--replace-sys-acl <VAL>`: Флаг замены ACL для системных объектов, 1 (да) или 0 (нет), по умолчанию 1.

- `--dry-run`: Режим проверки соответствия схемы данных в базе данных и файловой системе без внесения изменений в базу данных, 1 (да) или 0 (нет), по умолчанию 0. При включении данного режима проверяется, что:

    - Все таблицы в файловой системе присутствуют в базе данных
    - Схема данных объектов в файловой системе и базе данных одинаковая

- `--save-partial-result`: Сохранять результат неполной загрузки. Без включения данной опции ошибка в процессе выполнения загрузки приведет к восстановлению состояния базы данных на момент перед началом загрузки.

- `--import-data`: Использовать ImportData – более эффективный способ загрузки данных, чем применяется по умолчанию. Этот способ передает на сервер данные, нужным образом разделённые на партиции, и в более легковесном формате. Однако ImportData вернёт ошибку при попытке импорта таблицы, имеющей индексы или находящейся в процессе их построения, в существующую таблицу. Поэтому перед импортом таблицы с индексами необходимо убедиться в том, что они отсутствуют в схеме (например, используя команду [`ydb scheme ls`](https://ydb.tech/docs/ru/reference/ydb-cli/commands/scheme-ls.md?version=v26.1)). По умолчанию ImportData не используется.

- `--replace`: Удалить существующие объекты из базы данных, которые совпадают с объектами в резервной копии перед восстановлением. Объекты, присутствующие в резервной копии, но отсутствующие в базе данных, восстанавливаются как обычно; удаление пропускается. Если указаны одновременно `--replace` и `--verify-existence`, восстановление останавливается с ошибкой при обнаружении первого такого объекта.

- `--verify-existence`: Используется с опцией `--replace` для вывода ошибки, если объект из резервной копии отсутствует в базе данных, вместо того чтобы молча пропускать его удаление.

- `--retries`: Количество повторных попыток для каждого запроса загрузки данных. Значение по умолчанию: `10`.


### Параметры ограничения нагрузки {#limiters}

Приведенные ниже параметры позволяют ограничить нагрузку на базу данных, создаваемую в процессе загрузки данных.

{% note warning %}

Некоторые из перечисленных ниже параметров имеют действующие значения по умолчанию . Это значит, что если даже ни один из них не задан в команде вызова `tools restore`, нагрузка все равно будет ограничена.

{% endnote %}

- `--rps <VAL>`: Ограничение количества запросов на загрузку пакетов данных в базу данных в секунду, по умолчанию 30.
- `--bandwidth <VAL>`: Ограничение объема загрузки в секунду, по умолчанию  0 (не установлено). `<VAL>` определяет объем, задается в виде числа с приставкой, например 2MiB. Если определено значение `--bandwidth` ограничение на `--rps` (см. выше) не применяется.
- `--in-flight <VAL>`: Ограничения количество запросов, одновременно находящихся в состоянии исполнения, по умолчанию 10. Для достижения максимального параллелизма следует использовать значение, равное количеству ядер процессора, отведённых под операцию восстановления.
- `--upload-batch-rows <VAL>`: Ограничение количества записей в пакете загружаемых данных, по умолчанию 0 (не ограничено). `<VAL>` определяет количество записей, задается в виде числа с необязательной десятичной приставкой, например 1K.
- `--upload-batch-bytes <VAL>`: Ограничение объема пакета загружаемых данных, по умолчанию 512KB. `<VAL>` определяет объем, задается в виде числа с приставкой, например 1MiB. Максимальное значение — 16MiB.
- `--upload-batch-rus <VAL>`: Применимо только для Serverless баз данных, ограничивает потребление Request Units (RU) на загрузку одного пакета, по умолчанию 30 RU. Размер пакета подбирается под указанное значение. `<VAL>` определяет количество RU, задается в виде числа с необязательной десятичной приставкой, например 100 или 1K.

## Примеры {#examples}

<!-- source: ru/_includes/ydb-cli-profile.md -->
{% note info %}

В примерах используется профиль `quickstart`, подробнее смотрите в [Создание профиля для соединения с тестовой БД](https://ydb.tech/docs/ru/reference/ydb-cli/profile/create.md?version=v26.1#quickstart).

{% endnote %}
<!-- endsource: ru/_includes/ydb-cli-profile.md -->

### Загрузка кластера

Из текущей директории файловой системы:

```bash
ydb -e <endpoint> admin cluster restore -i .
```

Из заданной директории файловой системы:

```bash
ydb -e <endpoint> admin cluster restore -i ~/backup_cluster
```

### Загрузка базы данных

Из текущей директории файловой системы:

```bash
ydb -e <endpoint> -d <database> admin database restore -i .
```

Из заданной директории файловой системы:

```bash
ydb -e <endpoint> -d <database> admin database restore -i ~/backup_db
```

### Загрузка схемных объектов в корень базы данных

Из текущей директории файловой системы:

```bash
ydb -p quickstart tools restore -p . -i .
```

Из заданной директории файловой системы:

```bash
ydb -p quickstart tools restore -p . -i ~/backup_quickstart
```

### Загрузка схемных объектов в заданную директорию в базе данных

Из текущей директории файловой системы:

```bash
ydb -p quickstart tools restore -p dir1/dir2 -i .
```

Из заданной директории файловой системы:

```bash
ydb -p quickstart tools restore -p dir1/dir2 -i ~/backup_quickstart
```

Проверка соответствия схемы данных в базе данных и файловой системе:

```bash
ydb -p quickstart tools restore -p dir1/dir2 -i ~/backup_quickstart --dry-run
```

### Пример вызова команды для оптимизации скорости загрузки

```bash
ydb -p quickstart tools restore -p . -i . --import-data --bandwidth=10GiB --in-flight=16 --upload-batch-bytes=16MiB
```
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/tools-restore.md -->
