"В этой статье познакомимся с консольной утилитой, поставляемой компанией 1С — ibcmd, - делится опытом мой коллега Валерий. — Она доступна как для Windows-версии, так и для Unix-подобных операционных систем. Утилита во многом похожа на rac, но работает автономно и имеет собственные режимы".
Валерий, разработчик 1С.
Вот возможные режимы работы с данной утилитой.
В данной статье мы рассмотрим два режима – server и infobase.
- Режим server – настройка автономного сервера.
Предназначен для создания файла конфигурации автономного сервера. - Режим infobase – управление информационными базами.
Предназначен для администрирования баз данных (создание, восстановление, выгрузка и репликация).
Содержание:
1. Настройка автономного сервера.
2. Режим управления информационной базой.
1. Настройка автономного сервера.
Для начала нужно понять, что такое автономный сервер и чем он может быть полезен.
Автономный сервер – это возможность использования 1С в связке клиент–сервер без лицензии на сервер 1С. По сути, это «мини-сервер» 1С и web-сервер в одной утилите. Он позволяет подключаться к любым поддерживаемым СУБД (MSSQL, PostgreSQL, Oracle, DB2 и файловые базы). Можно использовать в учебных целях, для тестирования, отладки, но полноценный сервер 1С он все же не заменит.
Подключение возможно через web-клиент. Поддерживается:
- отладка через HTTP,
- настройка SSL-подключения,
- мониторинг через HTTP-запросы.
Запуск автономного сервера выполняется командой:
./ibsrv
После команды указываются настройки подключения и запуска.
Можно использовать файл конфигурации автономного сервера. Для этого есть две команды:
./ibcmd server config init
./ibcmd server config import
- Первая команда — ручное перечисление всех настроек.
- Вторая — позволяет задать имя базы, путь к файлу настроек, IP-адрес и порт для подключения через web.
После этого запускаем сервер с указанием файла конфигурации:
./ibsrv --config=<наш созданный файл>
2. Режим управления информационной базой
Этот режим зачастую даже полезнее предыдущего. С его помощью можно выполнять действия с базами данных без установленной платформы 1С и без запущенного RAS-сервиса.
Общие параметры подключения
./ibcmd infobase --dbms=PostgreSQL --db-server="servsubd port=5433" \
--db-name=test --db-user=usersubd --db-pwd=passusersubd
Описание параметров:
- infobase – режим работы с базами данных.
- --dbms=PostgreSQL – тип СУБД (поддерживаются PostgreSQL, MSSQLServer, Oracle, DB2 и др.).
- --db-server="servsubd port=5433" – адрес сервера СУБД и порт.
- --db-name=test – имя базы данных на сервере СУБД (даже если она не зарегистрирована в кластере 1С).
- --db-user, --db-pwd – логин и пароль пользователя СУБД.
2.1 Создать информационную базу (create)
./ibcmd infobase create --dbms=PostgreSQL \
--db-server="servsubd port=5433" --db-name=testdb \
--db-user=usersubd --db-pwd=passusersubd \
--restore=/home/user/test.dt --apply --force
Дополнительные параметры:
- --restore=<file> – создать базу и загрузить данные из файла .dt.
- --load=<file> – создать базу и загрузить конфигурацию из файла .cf.
- --apply – применить обновления конфигурации после загрузки.
- --force – подтвердить выполнение даже при предупреждениях.
2.2 Выгрузить базу в файл .dt (dump)
./ibcmd infobase --dbms=PostgreSQL \
--db-server="servsubd port=5433" --db-name=testdb \
--db-user=usersubd --db-pwd=passusersubd \
dump --user=user --password=pass /home/user/testdb.dt
- Выгрузка может выполняться даже при активных пользователях.
- Важно помнить: данные в таком случае могут быть не полными, а производительность базы снизится.
2.3 Загрузка базы из файла .dt (restore)
./ibcmd infobase --dbms=PostgreSQL \
--db-server="servsubd port=5433" --db-name=testdb \
--db-user=usersubd --db-pwd=passusersubd \
restore --user=user --password=pass \
--create-database --force \
--session-terminate-message="Идет загрузка данных" \
/home/user/testdb.dt
Новые параметры:
- --create-database – создание базы на сервере СУБД, если её нет. Если база существует, то команда завершиться с ошибкой.
- --force – принудительное завершение активных сеансов.
- --session-terminate-message – сообщение для пользователей при завершении сеансов (работает только с --force).
2.4 Копирование / репликация базы между серверами СУБД (replicate)
./ibcmd infobase --dbms=PostgreSQL \
--db-server="servsubd port=5433" --db-name=testdb \
--db-user=usersubd --db-pwd=passusersubd \
replicate \
--target-dbms=PostgreSQL \
--target-database-server="servsubd port=5433" \
--target-database-name=test_copy \
--target-database-user=usersubd \
--target-database-password=passusersubd \
--target-create-database \
--jobs-count=4 --target-jobs-count=4
Параметры:
- --target-dbms – тип целевой СУБД.
- --target-database-server – сервер целевой СУБД.
- --target-database-name – имя целевой базы.
- --target-database-user, --target-database-password – учётные данные пользователя СУБД.
- --target-create-database – создать базу, если её нет.
- --jobs-count (-j) – число потоков выгрузки.
- --target-jobs-count (-J) – число потоков загрузки.
- Создание копии базы на том же сервере (указываем одинаковые параметры source и target).
- Копирование базы на другой сервер СУБД.
- Перенос базы между разными СУБД (например, из MSSQL в PostgreSQL) одной командой.
Параметры --jobs-count и --target-jobs-count позволяют существенно ускорить процесс репликации за счёт многопоточности.
Теперь, зная доступные параметры, можно использовать ibcmd не только для ручного администрирования, но и для автоматизации задач через скрипты (bash, PowerShell). Это особенно удобно для:
- создания резервных копий,
- миграции баз между серверами,
- массового обновления и обслуживания баз.
Утилита ibcmd — мощный инструмент, который может заменить ряд операций, выполняемых через сервер 1С или rac, и при этом работать даже на машинах без установленной платформы.
Вступайте в нашу телеграмм-группу Инфостарт