Менеджмент СУБД через wmdb
wmdb — компонент Webim Server, предназначенный для менеджмента БД и схем (далее используется термин «БД», включая схемы при использовании PostgreSQL в качестве табличной СУБД).
wmdb позволяет выполнять операции с БД без запуска основного кода Webim Server. Это полезно для отдельных сценариев, например, для инициализации БД на hosted-размещениях.
wmdb предоставляет CLI-интерфейс для базовых операций с хранилищами Webim. Запуск выполняется из виртуального окружения. sudo не требуется.
wmdb используется для управления хранилищами Webim:
-
meta(реляционная СУБД) — системные данные и аккаунты. -
pro(реляционная СУБД) — данные конкретного аккаунта. -
stats(ClickHouse) — аналитические данные конкретного аккаунта.
Также wmdb содержит команды для обновления конфигурации тарифов в meta.
Установка и запуск
wmdb запускается без sudo.
Для работы команд должны быть доступны конфиги Webim Server (например, каталог /etc/webim), включая настройки подключений к СУБД.
Запуск команд
В зависимости от окружения используйте один из вариантов.
-
Если в окружении доступна консольная команда:
wmdb --help wmdb --version -
Если консольной команды нет, запускайте как Python-модуль:
python3 -m wmdb --help python3 -m wmdb --version
N.B.
Далее в статье команды показаны в виде wmdb .... Для запуска через модуль заменяйте wmdb на python3 -m wmdb.
Синтаксис
wmdb [object [ACCOUNT_NAME] command [args]] [--help]
wmdb --version
Объекты и флаги
В wmdb есть 4 объекта:
-
Схема
metaв реляционной СУБД —meta -
Схема
proв реляционной СУБД —pro -
Схема
statsв колоночной СУБД —stats -
Аккаунт Webim (записи в
meta+ схемаpro) —account
Специальные флаги:
-
--version— вывести версиюwmdb. -
--help— вывести подсказку по командам.
N.B.
Для выполнения команд в конфигурации СУБД Webim Server должны быть указаны учётные записи СУБД с привилегиями, достаточными для создания и изменения БД/схем и таблиц.
Команды CLI
wmdb meta
Команды для meta (имя схемы/БД определяется конфигом Webim Server).
Доступные команды:
-
wmdb meta create— создатьmetaи записать минимальные данные.До выполнения команды
metaсуществовать не должно. -
wmdb meta exists— проверить существованиеmeta.Коды возврата:
-
0—metaсуществует. -
1—metaне найдена.
-
-
wmdb meta upgrade— обновить схемуmetaдо актуальной версии (миграции).
Возможные ошибки:
Meta schema '...' already exists—metaуже существует.
wmdb pro
Команды для pro аккаунта ACCOUNT_NAME (имя схемы/БД определяется конфигом Webim Server).
Доступные команды:
-
wmdb pro ACCOUNT_NAME create— создатьproдля аккаунтаACCOUNT_NAME.Требования:
-
настройки соединения и конфигурация
proдолжны быть заданы вdb.json; -
до выполнения команды
proдля аккаунта существовать не должно.
-
-
wmdb pro ACCOUNT_NAME exists— проверить существованиеproдля аккаунта.Коды возврата:
-
0—proсуществует. -
1—proне найдена.
-
-
wmdb pro ACCOUNT_NAME current— показать текущую версию схемыpro. -
wmdb pro ACCOUNT_NAME tree— показать дерево ревизий схемыpro. -
wmdb pro ACCOUNT_NAME upgrade [REVISION]— обновить схемуproдо версииREVISION.Если
REVISIONне указана, используетсяhead.{ #pro-migrate-up }
-
wmdb pro ACCOUNT_NAME downgrade REVISION— даунгрейд схемыproдо версииREVISION. -
wmdb pro ACCOUNT_NAME drop --yes --yes --yes— удалитьproаккаунта.
Возможные ошибки:
Pro schema '...' already exists—proдля аккаунта уже существует.
N.B.
При даунгрейде pro рекомендуется сначала выполнить даунгрейд stats.
wmdb stats
Команды для stats аккаунта ACCOUNT_NAME (ClickHouse).
Доступные команды:
-
wmdb stats ACCOUNT_NAME create— создатьstatsдля аккаунтаACCOUNT_NAME. -
wmdb stats ACCOUNT_NAME drop --yes --yes --yes— удалитьstatsаккаунта. -
wmdb stats ACCOUNT_NAME current— показать текущую версиюstats. -
wmdb stats ACCOUNT_NAME tree— показать дерево ревизийstats. -
wmdb stats ACCOUNT_NAME upgrade [REVISION]— обновитьstatsдо версииREVISION.Если
REVISIONне указана, используетсяhead. -
wmdb stats ACCOUNT_NAME downgrade REVISION— даунгрейдstatsдо версииREVISION.
{ #stats-migrate-down }
Возможные ошибки:
stats ACCOUNT_NAME [upgrade | downgrade] REVISION: Failed to load categories— ошибка при загрузке категорий.
N.B.
При апгрейде stats рекомендуется сначала выполнить апгрейд pro.
wmdb account
Команды для аккаунтов Webim.
Аккаунт считается существующим, если в meta есть запись об аккаунте (таблица account_t).
Доступные команды:
-
wmdb account ACCOUNT_NAME create— создать новый аккаунтACCOUNT_NAMEи инициализировать его хранилища.Требования:
-
metaдолжна существовать; -
аккаунта
ACCOUNT_NAMEне должно быть вmeta; -
proдля аккаунтаACCOUNT_NAMEсуществовать не должна.
-
-
wmdb account ACCOUNT_NAME exists— проверить существование аккаунта.Коды возврата:
-
0— аккаунт существует. -
1— аккаунт не найден.
-
create — создание аккаунта
Синтаксис
wmdb account ACCOUNT_NAME create [ПАРАМЕТРЫ]
Аргументы
| Параметр | Пример | Описание | Обязательный параметр |
|---|---|---|---|
--agent-email |
somemail@mail.com |
Адрес электронной почты оператора. | Да |
--agent-name |
Agent |
Имя оператора. | Да |
--agent-password |
StrongPassword123 |
Пароль оператора. Если не указан и не указан --agent-password-hash, пароль будет запрошен интерактивно. |
Нет |
--agent-password-hash |
a6c79a27049109e472b246b5dfbe08aedff1e9e2259597e54032dbad4958d4ad |
Хэш пароля оператора. Альтернатива --agent-password. |
Нет |
--partner-name |
webim |
Имя партнёра. По умолчанию webim. |
Нет |
--phone |
79001234567 |
Номер телефона организации. | Да |
--site |
somesite.com |
Сайт организации. | Да |
--timezone |
Europe/Moscow |
Часовой пояс аккаунта. | Да |
--language |
ru |
Ключ языка аккаунта. | Да |
--trial-period-days |
7 |
Длительность демо-периода в днях. Значение не менее 1, по умолчанию 7. |
Нет |
Пример (пароль строкой):
wmdb account testcom create --agent-email=[somemail@mail.com](mailto:somemail@mail.com) --agent-name=Agent
--agent-password=StrongPassword123 --partner-name=webim --phone=79001234567
--site=somesite.com --timezone=Europe/Moscow --language=ru --trial-period-days=7
Пример (пароль хэшем):
wmdb account testcom create --agent-email=[somemail@mail.com](mailto:somemail@mail.com) --agent-name=Agent
--agent-password-hash=a6c79a27049109e472b246b5dfbe08aedff1e9e2259597e54032dbad4958d4ad
--partner-name=webim --phone=79001234567 --site=somesite.com --timezone=Europe/Moscow
--language=ru --trial-period-days=7
Возможные ошибки:
Account '...' already exists— аккаунт уже существует.
exists — проверка существования
Синтаксис
wmdb account ACCOUNT_NAME exists
Коды возврата
-
0— аккаунт с именемACCOUNT_NAMEсуществует. -
1— аккаунт не найден.
wmdb tariffs
Команды для конфигурации тарифов в meta.
Доступные команды:
-
wmdb tariffs diff— показать отличия конфигурации тарифов из конфигурационных файлов Webim Server от данных вmeta. -
wmdb tariffs update— обновить конфигурацию тарифов вmetaпо данным из конфигурационных файлов Webim Server.