В дополнение к статье «Обзор инструментов автоматизации», я хотел бы рассказать о приложении «Перезаливатор», которое позволило нам значительно облегчить процесс «перезаливки» баз, вплоть до самостоятельной «перезаливки» информационных баз консультантами 1С.
0. Видеоинструкция
О причинах и контексте создания данного приложения, вы можете узнать из приведенного ниже 20-ти минутного видео. В нем также подробно разбирается процесс установки, настройки и эксплуатации Перезаливатора.
1. Описание
Под словом «перезалить» понимается процедура восстановления одной базы данных (база назначения) из резервных копий другой базы данных (база источник). Например, если необходимо загрузить данные из базы продуктива в тестовую или разработочную.
Перезаливатор позволяет максимально автоматизировать процесс «перезаливки» баз данных 1С:Предприятия.
Реализован на OneScript (http://oscript.io). Для работы необходим OneScript версии 1.0.20 или выше.
Код открыт, страница проекта на GitHub: https://github.com/Tavalik/Perezalivator
Имеется GUI-интерфейс для выбора базы-приемника и базы-назначения, а также окно с выводом результата.
2. Установка
- Установить OneScript (подробно про установку и настройку можно узнать, например, здесь).
- Скачать файл «Distr\Perezalivator-<версия>.ospx» (ссылка)
- Запустить установку с помощью пакетного менеджера opm
opm install -f <Путь к файлу Perezalivator-<версия>.ospx>
Можно также воспользоваться командным файлом «install.bat» из директории «Distr»
Зависит от:
- Библиотеки json: https://github.com/oscript-library/json
- Библиотеки gui: https://github.com/oscript-library/oscript-simple-gui
- Библиотеки TMSSQL: https://github.com/Tavalik/TMSSQL (отдельная статья)
- Библиотеки TRun1C: https://github.com/Tavalik/TRun1C
- Библиотеки TMail: https://github.com/Tavalik/TMail
- Библиотеки TLog: https://github.com/Tavalik/TLog
(все зависимые библиотеки устанавливаются автоматически при условии использования пакетного менеджера opm)
3. Работа с приложением
Запуск приложения осуществляется запуском файла Perezalivator_Run.bat. При первом запуске в текущем каталоге будет создан пустой файл настроек Perezalivator_Params.json.
Необходимо заполнить все параметры, описав возможные базы-источники, базы-назначения и параметры для отправки электронных писем.
Проверить корректность введенных настроек можно запустив файл Perezalivator_Run_Test.bat. Перезаливатор будет запущен в режиме тестирования настроек.
Пример корректного файла настроек »
{ "Источники": [ { "Имя": "Бухгалтерия (рабочая)", "АдресСервераSQL": "localhost", "ИмяПользователяSQL": "User_1C", "ПарольПользователяSQL": "Pass123_SQL", "ИмяБазыДанныхSQL": "Acc_Work" }, { "Имя": "ЗУП (рабочая)", "АдресСервераSQL": "localhost", "ИмяПользователяSQL": "User_1C", "ПарольПользователяSQL": "Pass123_SQL", "ИмяБазыДанныхSQL": "HRM_Work" } ], "Приемники": [ { "Имя": "Общая тестовая №1", "ПутьКПлатформе1С": "C:\\Program Files (x86)\\1cv8\\8.3.10.2580\\bin\\1cv8.exe", "ТипБазы": "S", "ВерсияCOMConnector": "83", "ИмяБазы": "Test1", "АдресКластера": "localhost", "ПортКластера": "2541", "ПортАгента": "2540", "ИмяПользователя": "Admin_1C", "ПарольПользователя": "Pass123_1C", "АдресХранилища": "", "ИмяПользователяХранилища": "", "ПарольПользователяХранилища": "", "АдресСервераSQL": "localhost", "ИмяПользователяSQL": "User_1C", "ПарольПользователяSQL": "Pass123_SQL", "ИмяБазыДанныхSQL": "Test1" }, { "Имя": "Общая тестовая №2", "ПутьКПлатформе1С": "C:\\Program Files (x86)\\1cv8\\8.3.10.2580\\bin\\1cv8.exe", "ТипБазы": "S", "ВерсияCOMConnector": "83", "ИмяБазы": "Test2", "АдресКластера": "localhost", "ПортКластера": "2541", "ПортАгента": "2540", "ИмяПользователя": "Admin_1C", "ПарольПользователя": "Pass123_1C", "АдресХранилища": "", "ИмяПользователяХранилища": "", "ПарольПользователяХранилища": "", "АдресСервераSQL": "localhost", "ИмяПользователяSQL": "User_1C", "ПарольПользователяSQL": "Pass123_SQL", "ИмяБазыДанныхSQL": "Test2" }, { "Имя": "ЗУП - Тестовая №1", "ПутьКПлатформе1С": "C:\\Program Files (x86)\\1cv8\\8.3.10.2580\\bin\\1cv8.exe", "ТипБазы": "S", "ВерсияCOMConnector": "83", "ИмяБазы": "HRM_Test1", "АдресКластера": "localhost", "ПортКластера": "2541", "ПортАгента": "2540", "ИмяПользователя": "Admin_1C", "ПарольПользователя": "Pass123_1C", "АдресХранилища": "C:\\1C_BASE\\repository\\HRM_Dev", "ИмяПользователяХранилища": "test1", "ПарольПользователяХранилища": "Pass123_Repo", "АдресСервераSQL": "localhost", "ИмяПользователяSQL": "User_1C", "ПарольПользователяSQL": "Pass123_SQL", "ИмяБазыДанныхSQL": "HRM_Test1" }, { "Имя": "ЗУП - Разработочная №1", "ПутьКПлатформе1С": "C:\\Program Files (x86)\\1cv8\\8.3.10.2580\\bin\\1cv8.exe", "ТипБазы": "S", "ВерсияCOMConnector": "83", "ИмяБазы": "HRM_Dev1", "АдресКластера": "localhost", "ПортКластера": "2541", "ПортАгента": "2540", "ИмяПользователя": "Admin_1C", "ПарольПользователя": "Pass123_1C", "АдресХранилища": "C:\\1C_BASE\\repository\\HRM_Dev", "ИмяПользователяХранилища": "dev1", "ПарольПользователяХранилища": "Pass123_Repo", "АдресСервераSQL": "localhost", "ИмяПользователяSQL": "User_1C", "ПарольПользователяSQL": "Pass123_SQL", "ИмяБазыДанныхSQL": "HRM_Dev1" }, { "Имя": "ЗУП - Разработочная №2", "ПутьКПлатформе1С": "C:\\Program Files (x86)\\1cv8\\8.3.10.2580\\bin\\1cv8.exe", "ТипБазы": "S", "ВерсияCOMConnector": "83", "ИмяБазы": "HRM_Dev2", "АдресКластера": "localhost", "ПортКластера": "2541", "ПортАгента": "2540", "ИмяПользователя": "Admin_1C", "ПарольПользователя": "Pass123_1C", "АдресХранилища": "C:\\1C_BASE\\repository\\HRM_Dev", "ИмяПользователяХранилища": "dev2", "ПарольПользователяХранилища": "Pass123_Repo", "АдресСервераSQL": "localhost", "ИмяПользователяSQL": "User_1C", "ПарольПользователяSQL": "Pass123_SQL", "ИмяБазыДанныхSQL": "HRM_Dev2" } ], "ЭлектроннаяПочта": { "НастройкиSMTP": { "АдресSMTP": "smtp.ya.ru", "ПортSMTP": 465, "ПользовательSMTP": "postname_from@yandex.ru", "ПарольSMTP": "Pass123_Mail", "ИспользоватьSSL": true }, "ПолучателиСообщений": { "АдресЭлектроннойПочтыПолучателя": "postname_to1@yandex.ru;postname_to2@yandex.ru;" } } }
При следующем запуске файла Perezalivator_Run.bat откроется окно, в котором необходимо выбрать базу-источник
и базу-назначения.
Если необходимо, можно указать дату, на которую необходимо получить данные (всегда используется конец дня).
После указания всех исходных параметров, перезаливатор начнет работу по следующему алгоритму:
- Установка блокировки регламентных заданий и начала сеансов в базе-приемнике
- Завершение активных сеансов (спустя несколько минут) в базе-приемнике
- Расчет последовательности файлов резервных копий для базы-источника для восстановления на указанную дату
- Восстановление базы-приемника по найденной последовательности файлов
- Перевод базы-приемника в простую модель восстановления
- Сжатие файлов журнала транзакций базы-приемника
- Отключение базы-приемника от хранилища
- Подключение базы-приемника к хранилищу
- Обновление конфигурации базы данных базы-приемника
- Снятие блокировки начала сеансов базы-приемника
- Уведомление о результате по электронной почте
Если в базе-приемнике присутствуют активные соединения, будет показана таблица со всеми соединениями, а также будет предоставлена возможность завершить все активные сеансы.
Отработав, Перезаливатор выдаст соответствующее сообщение (или сообщение об ошибке), а также отправит сообщение о результате работы на электронную почту.
4. Заключение
Работаем с Перезаливатором уже больше года. Тот функционал, который был нам необходим, мы реализовали. Если будет интерес сообщества, возможно и дальнейшее развитие программы.
Кстати, есть еще как минимум 2 подобных проекта:
Спасибо за внимание.
Инструмент полезный. Спасибо!
Исправьте, пожалуйста, ссылки в заключении. Сейчас они ведут на страницу редиректа инфостарта.
Большое спасибо. Исправил.