Утилита 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( илиcprotos://reindexer:reindexer@127.0.0.1:6535/dbname, если необходимо подключиться по RPC с использованием протокола TLS). - Имя источника данных — DSN (Data Source Name). Указывается как опция командной строки
- d,--dsnи определяет особенности подключения к северу Reindexer или непосредственно к дисковому хранилищу. Возможные форматы:builtin://<path>— для случая, когда Reindexer используется в режиме встроенного компонента (built-in, embedded). Здесь<path>— путь к дисковому хранилищу, доступ к нему со стороны reindexer_tool производится напрямую.cproto(s)://<username>:<password>@<host>:<port>/<db_name>— подключение к автономному (stand-alone) или работающему в режиме встроенного сервера (built-in server) Reindexer по сети с помощью RPC/RPCs(RPC с поддержкой TLS). Здесь:<username>— имя пользователя;<password>— пароль;<host>— имя или адрес хоста, на котором развернут сервер;<port>— порт, который прослушивается сервером в рамках взаимодействия с клиентами по RPC;<db_name>— имя базы данных;
Опции командной строки для запуска утилиты reindexer_tool
| Опция | Значение | Особенности |
|---|---|---|
-d, --dsn |
DSN для подключения к базе данных |
Возможные варианты: cproto://<ip>:<port>/<dbname>, cprotos://<ip>:<port>/<dbname>, builtin://<path> или ucproto://<unix.socket.path>:/<dbname> |
-f, --filename |
Путь к файлу, содержащему список команд для выполнения | После выполнения команд из файла утилита завершает работу |
-c, --command |
Одиночная команда для выполнения, которая использует внутренний DSL или представляет собой SQL-запрос | После выполнения команды утилита завершает работу |
-o, --output |
Путь к файлу для вывода результатов выполнения одиночной команды либо запроса, или списка команд (запросов) | Значение по умолчанию stdout - используется стандартный вывод |
--createdb |
Флаг, предписывающий создать базу данных с заданным именем | После выполнения команды reindexer_tool запускается в интерактивном режиме и подключается к созданной базе данных |
--convfmt |
Формат, в который следует сконвертировать хранилище базы данных | Возможные варианты: leveldb и rocksdb |
--convbackup |
Путь к директории, в которую следует сохранить оригинальное хранилище базы данных в случае если выполняется его конвертация к другому типу. | Данный параметр является опциональным, его можно указывать только вместе с указанием --convfmt |
-l, --log |
Уровень логирования | Задается в виде целого числа. Возможные значения: 1 - none 2 - warning 3 - error 4 - info 5 - trace |
-C, --connections |
Количество одновременных соединений с базой данных | |
-r, --repair |
Флаг, который сообщает, что необходимо выполнить восстановление/исправление базы данных с нарушенной целостностью | |
-a, --appname |
Имя приложения-клиента, которое должно использоваться в составе данных о логине (при доступе с использованием аутентификации) со стороны reindexer_tool | |
-h, --help |
Флаг для вывода краткой справки о назначении аргументов командной строки | После выполнения команды утилита завершает работу |
-v, --version |
Флаг для вывода текущей версии reindexer_tool | После выполнения команды утилита завершает работу |
Бэкап и восстановление базы данных
Создание дампа базы данных в виде файла:
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 в процессе восстановления из дампа не будет создавать целевую БД, если она отсутствует. Если требуется автоматическое создание БД, то следует добавить опцию
--createdb.
Конвертация хранилища базы данных к другому типу
В момент конвертации БД не должна использовать другими процессами.
Пример конвертации хранилища в формат rocksdb:
reindexer_tool --dsn builtin:///tmp/rx/dbase_name --convfmt rocksdb --convbackup /tmp/rx_backup/dbase_name_leveldb
Здесь dsn задает путь к хранилищу базы данных, которое требуется скорректировать (при этом требуется использовать builtin://-вариант подключения), convfmt задает формат, в который нужно сконвертировать хранилище (rocksdb или leveldb). При этом новый тип должен отличаться от текущего, иначе выполнение команды будет завершено с ошибкой. Необязательный параметр convbackup позволяет указать директорию, в которую следует сохранить оригинальное хранилище в случае если это необходимо.
Для конвертации хранилища обратно в leveldb можно использовать предыдущую команду, заменив в ней значение convfmt:
reindexer_tool --dsn builtin:///tmp/rx/dbase_name --convfmt leveldb --convbackup /tmp/rx_backup/dbase_name_rocksdb
Использование 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