Загрузка из файловой системы
Команда tools restore
создает в базе данных объекты схемы данных и загружает в них данные из файловой системы, ранее выгруженные туда командой tools dump
, или подготовленные вручную в соответствии с правилами, описанными в статье Файловая структура:
ydb [connection options] tools restore -p PATH -i PATH [options]
, где [connection options]
— опции соединения с БД
Если таблица или директория уже существует в базе данных, изменения в её схему или ACL внесены не будут. Это может привести к тому, что операция загрузки данных окажется невозможной, если не все колонки из загружаемых файлов присутствуют в таблице или если есть несоответствия по типам данных.
Для загрузки данных в таблицу применяется команда YQL REPLACE
. Если до момента загрузки в таблице существовали записи, то те из них, ключи которых существуют в загружаемых файлах, будут заменены данными из файлов; записи с теми ключами, которых не существует в загружаемых файлах, останутся без изменений.
Обязательные параметры
-p PATH
или --path PATH
: Путь к директории в базе данных, внутрь которой будет выполняться загрузка. Для загрузки в корневой каталог укажите .
. Все отсутствующие директории на пути будут созданы.
-i PATH
или --input PATH
: Путь к директории в клиентской файловой системе, откуда будет выполняться загрузка.
Необязательные параметры
[options]
- необязательные параметры команды:
--restore-data VAL
: Флаг загрузки данных, 1 (да) или 0 (нет), по умолчанию 1. Если флаг установлен в 0, то при загрузке будут только созданы объекты в схеме, а данные в них загружены не будут. Если в файловой системе нет данных (выгружена только схема), то изменение флага не имеет значения.
--restore-indexes VAL
: Флаг загрузки индексов, 1 (да) или 0 (нет), по умолчанию 1. Если флаг установлен в 0, то при загрузке вторичные индексы не будут ни зарегистрированы в схеме данных, ни заполнены данными.
--restore-acl VAL
: Флаг загрузки ACL, 1 (да) или 0 (нет), по умолчанию 1. Если флаг установлен в 0, то при загрузке объекты будут созданы в схеме с пустым ACL, а их владельцем станет пользователь, запустивший загрузку.
--dry-run
: Режим проверки соответствия схемы данных в базе данных и файловой системе без внесения изменений в базу данных, 1 (да) или 0 (нет), по умолчанию 0. При включении данного режима проверяется, что:
- Все таблицы в файловой системе присутствуют в базе данных
- Схема данных объектов в файловой системе и базе данных одинаковая
--save-partial-result
: Сохранять результат неполной загрузки. Без включения данной опции ошибка в процессе выполнения загрузки приведет к восстановлению состояния базы данных на момент перед началом загрузки.
--import-data
: Использовать ImportData – более эффективный способ загрузки данных, чем применяется по умолчанию. Этот способ передает на сервер данные, нужным образом разделённые на партиции, и в более легковесном формате. Однако ImportData вернёт ошибку при попытке импорта таблицы, имеющей вторичные индексы или находящейся в процессе их построения, в существующую таблицу. Поэтому перед импортом таблицы со вторичными индексами необходимо убедиться в том, что они отсутствуют в схеме (например, используя команду ydb scheme ls
). По умолчанию ImportData не используется.
Параметры ограничения нагрузки
Приведенные ниже параметры позволяют ограничить нагрузку на базу данных, создаваемую в процессе загрузки данных.
Важно
Некоторые из перечисленных ниже параметров имеют действующие значения по умолчанию . Это значит, что если даже ни один из них не задан в команде вызова tools restore
, нагрузка все равно будет ограничена.
--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.
Примеры
Примечание
В примерах используется профиль quickstart
, подробнее смотрите в Создание профиля для соединения с тестовой БД.
Загрузка в корень базы данных
Из текущей директории файловой системы:
ydb -p quickstart tools restore -p . -i .
Из заданной директории файловой системы:
ydb -p quickstart tools restore -p . -i ~/backup_quickstart
Загрузка в заданную директорию в базе данных
Из текущей директории файловой системы:
ydb -p quickstart tools restore -p dir1/dir2 -i .
Из заданной директории файловой системы:
ydb -p quickstart tools restore -p dir1/dir2 -i ~/backup_quickstart
Проверка соответствия схемы данных в базе данных и файловой системе:
ydb -p quickstart tools restore -p dir1/dir2 -i ~/backup_quickstart --dry-run
Пример вызова команды для оптимизации скорости загрузки
ydb -p quickstart tools restore -p . -i . --import-data --bandwidth=10GiB --in-flight=16 --upload-batch-bytes=16MiB