Утилита reindexer_tool для управления БД Reindexer через командную строку

Консольная утилита reindexer_tool предназначена для управления сервером Reindexer и базами данных с помощью интерфейса командной строки. Утилита может работать как клиент для сервера Reindexer с доступом по сети, или самостоятельно непосредственно с локальным дисковым хранилищем без участия сервера.

Возможности reindexer_tool

Консольная утилита reindexer_tool позволяет:

  • Выполнять бэкапы базы данных. Результат можно вывести в командную строку (консоль) или сохранить в текстовый файл.
  • Делать запросы к базе данных. Можно выполнять запросы из командной строки или из файла. Результаты также можно выводить в командную строку или записывать в файл.
  • Изменять записи в базе данных.
  • Изменять связанные с базой данных метаданные.

Использование утилиты

Утилита может работать в интерактивном режиме или запускаться однократно для выполнения одной или нескольких команд с автоматическим завершением после этого. Обобщенный синтаксис команды для запуска reindexer_tool:

reindexer_tool [<db_name>] {<options>}

Здесь:

  • [<db_name>](обязательный) — имя базы данных, к которой нужен доступ;
  • {<options>} — набор опций.

В качестве [<db_name>] можно передавать:

  • Имя базы данных dbname. В этом случае происходит подключение к cproto://reindexer:reindexer@127.0.0.1:6534/dbname.
  • Имя источника данных — DSN (Data Source Name). Указывается как опция командной строки - d, --dsn и определяет особенности подключения к северу Reindexer или непосредственно к дисковому хранилищу. Возможные форматы:
    • builtin://<path> — для случая, когда Reindexer используется в режиме встроенного компонента (built-in, embedded). Здесь <path> — путь к дисковому хранилищу, доступ к нему со стороны reindexer_tool производится напрямую.
    • cproto://<username>:<password>@<host>:<port>/<db_name> — подключение к автономному (stand-alone) или работающему в режиме встроенного сервера (built-in server) Reindexer по сети с помощью RPC. Здесь:
      • <username> — имя пользователя;
      • <password> — пароль;
      • <host> — имя или адрес хоста, на котором развернут сервер;
      • <port> — порт, который прослушивается сервером в рамках взаимодействия с клиентами по RPC;
      • <db_name> — имя базы данных;

Опции командной строки для запуска утилиты reindexer_tool

Опция Значение Особенности
-f, --filename Путь к файлу, содержащему список команд для выполнения После выполнения команд из файла утилита завершает работу
-c, --command Одиночная команда для выполнения, которая использует внутренний DSL или представляет собой SQL-запрос После выполнения команды утилита завершает работу
-o, --output Путь к файлу для вывода результатов выполнения одиночной команды либо запроса, или списка команд (запросов) Значение по умолчанию stdout - используется стандартный вывод
--createdb Флаг, предписывающий создать базу данных с заданным именем После выполнения команды reindexer_tool запускается в интерактивном режиме и подключается к созданной базе данных
-l, --log Уровень логирования Задается в виде целого числа. Возможные значения:
1 - none
2 - warning
3 - error
4 - info
5 - trace
-C, --connections Количество одновременных соединений с базой данных
-r, --repair Флаг, который сообщает, что необходимо выполнить восстановление/исправление базы данных с нарушенной целостностью
-a, --appname Имя приложения-клиента, которое должно использоваться в составе данных о логине (при доступе с использованием аутентификации) со стороны reindexer_tool
-h, --help Флаг для вывода краткой справки о назначении аргументов командной строки После выполнения команды утилита завершает работу

Бэкап и восстановление базы данных

Создание дампа базы данных в виде файла:

reindexer_tool --dsn cproto://127.0.0.1:6534/mydb --command '\dump' --output mydb.rxdump

Восстановление базы данных из дампа:

reindexer_tool --dsn cproto://127.0.0.1:6534/mydb --filename mydb.rxdump

Использование reindexer_tool в интерактивном режиме

Для запуска reindexer_tool в интерактивном режиме используется shell-команда вида

reindexer_tool [<db_name>]

или

reindexer_tool [<db_name>] {<options>}

с опциями, для которых не предусмотрено завершение работы утилиты после выполнения команды.

При работе в интерактивном режиме reindexer_tool может выполнять SQL-запросы и команды, которые записываются с префиксом \.

Получение справки

Для получения справки по запросам и командам, поддерживаемым reindexer_tool в интерактивном режиме, выполните команду:

\help 

SQL-запросы

Указываются без префикса. В качестве команды для утилиты reindexer_tool может выступать SQL-запрос, который начинается с ключевых слов:

  • SELECT,
  • DELETE,
  • UPDATE,
  • EXPLAIN.

Добавление новой записи (документа) в неймспейс

Обобщенный синтаксис команды:

\upsert <namespace> <document>

Здесь:

  • <namespace> — имя неймспейса;
  • <document> — содержимое новой записи (документа).

Пример использования команды:

\upsert books {"id":5,"name":"NewBook"}

Удаление записи (документа) из неймспейса

Обобщенный синтаксис команды:

\delete <namespace> <document>

Здесь:

  • <namespace> — имя неймспейса;
  • <document> — содержимое записи (документа).

Пример использования команды:

\delete books {"id":5}

Создание бэкапа базы данных в виде дампа в текстовом формате

Обобщенный синтаксис команды:

\dump [namespace1 [namespace2]...]

Здесь <namespace_*> — имена неймспейсов, данные которых нужно включить в дамп. Эти параметры необязательны. Если их не указывать и выполнить команду \dump, произойдет бэкап базы данных, к которой подключен reindexer_tool, целиком.

Команды для управления неймспейсами

Создание нового неймспейса

Обобщенный синтаксис команды:

\namespaces add <namespace> <definition>

Здесь:

  • <namespace> — имя нового неймспейса;
  • <definition> — определение нового неймспейса.
Вывод списка доступных неймспейсов в текущей базе данных

Синтаксис команды:

\namespaces list
Удаление неймспейса из базы данных

Обобщенный синтаксис команды:

\namespaces drop <namespace>

Здесь <namespace> — имя удаляемого неймспейса.

Команды для управления базами данных

Вывод списка доступных баз данных

Синтаксис команды:

\databases list
Переключение между базами данных

Обобщенный синтаксис команды:

\databases use <dbmame>

Здесь <dbmame> - имя базы данных, на которую нужно переключиться.

Команды для управления метаданными

Добавление новой порции метаданных

Обобщенный синтаксис команды:

\meta put <namespace> <key> <value>

Здесь:

  • <namespace> — имя неймспейса;
  • <key> — ключ добавляемой порции метаданных;
  • <value> — содержимое метаданных.
Вывод всех метаданных, которые относятся к неймспейсу

Обобщенный синтаксис команды:

\meta list <namespace>

Здесь <namespace> — имя неймспейса.

Задание выходного формата данных

Обобщенный синтаксис команды:

\set output <format>

Здесь <format> — выходной формат. Возможные значения:

  • json — неформатированный JSON;
  • pretty — JSON с разбиением на строки и форматированием;
  • table — табличное представление (со строками и столбцами).

Запуск простого теста производительности

Обобщенный синтаксис команды:

\bench [<time>]

Здесь [<time>] — необязательный параметр, устанавливающий длительность выполнения теста в секундах. Значение по умолчанию — 5 секунд.

Завершение работы утилиты reindexer_tool

Синтаксис команды:

\quit