Милькин Владимир

182
Рейтинг

Владимир Милькин
alexey.karmanov



  •   Регистрация: 30.04.2013 (5 лет назад)

  •   Был(а) на сайте: сегодня в 19:10


Группы

Профессиональный разработчик

Партнер IS-WP

Рейтинг 182

Программа "Убийца нежелательных окон 1С" 8

v8 Россия Абонемент ($m)

Программа аккуратно решает проблему непреднамеренной блокировки файловой базы пользователем, при которой его нельзя выгнать стандартными средствами платформы.

1 стартмани

31.07.2018    1339    0    4    

Констартер: универсальный запуск базы 1С из проводника через контекстное меню (папки, dt, cf, zip, 7z) 23

Абонемент ($m)

Универсальный стартер любой базы 1С прямо из проводника! Поддерживает запуск из папок, zip и 7z архивов, dt-выгрузок и cf-файлов конфигураций. Не добавляет базу в список даже для 1С 7.7. Единое меню запуска для всех версий 1С. Интеллектуальное появление в контекстном меню. Интерфейс для нормального удаления и настройки пути к платформам.

1 стартмани

04.07.2013    17064    45    6    

Резервариус администратора: сделай копию и делай, что хочешь! 23

Абонемент ($m)

Необходимо менять базу [скрипты, файлы ... неважно] и хочется подстраховаться? Копия нужна прямо сейчас, чтобы не тряслись коленки потом и можно было сделать “rollback”? Резервариус: сделай копию и делай, что хочешь! Универсальная система хранения копий любых файлов и папок. Поможет там, где нет смысла применять полноценную систему контроля версий или систему резервного копирования.

1 стартмани

26.06.2013    35293    76    29    

Копиратор-1С: выгрузка и загрузка базы 1С (7.7 - 8.3) одной кнопкой! 46

Абонемент ($m)

Требуется сохранить базу 1С на флешку? Послать аудиторам на проверку или просто взять домой поработать? Копиратор-1С: универсальный помощник выгрузки и загрузки файловых баз 1С любых версий! Не требует установки и дополнительных программ. Представляет из себя один файл, включающий мощных архиватор 7-zip. Умеет подключать базу в список 1С при загрузке!

1 стартмани

17.06.2013    41434    230    49    

Бэкапер-1С: резервные копии бухгалтерии (1С 7.7 - 8.3) 82

v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Бэкапер-1С: версия 1.5.0. Появилась гибкая система удаления старых копий! А также: автоматический поиск баз, архивация документов, встроенный архиватор 7-Zip, целостность создаваемых копий, шифрование, отправка отчетов на почту и каталогизация. Ещё никогда резервное копирование не делалось так просто.

1 стартмани

16.05.2013    49043    625    181    

Комментарии

AdminРезервное копирование и восстановление баз 1С на postgresql#24 09.08.18 14:31
(23) спасибо, записал в список идей :)
AdminРезервное копирование и восстановление баз 1С на postgresql#22 09.08.18 13:13
А по поводу "восстановил не в ту базу". В моём инструменте администрирования при восстановлении из резервной копии (если этот процесс запущен руками) всегда предлагается в начале создать резервную копию текущей базы. Поэтому база до восстановления в любом случае останется.

Если же это происходит при автоматическом обновлении баз (или тестировании), то там тоже перед началом операции создаётся резервная копия базы. Поэтому тоже мы ничего не потеряем даже при самом плохом сценарии.
AdminРезервное копирование и восстановление баз 1С на postgresql#21 09.08.18 13:11
Я думаю, что вариант "не удаления старой базы после восстановления" будет опциональным. Это хорошая идея.
AdminРезервное копирование и восстановление баз 1С на postgresql#18 09.08.18 2:32
(16) Чего-то я не понял несколько... :)

Речь же о том, что мы добавляем эту возможность в универсальный инструмент, позволяющий делать архивные копии (пункт 1) и при необходимости восстанавливать их в базу (остальные пункты). Причём восстанавливать как в ручную, так и автоматически (например, при неудачном обновлении).

При этом в результате этих операций (бэкап и/или восстановление) в СУБД не должны появляться и оставаться новые базы, как и не должно меняться имя самой базы.
AdminРезервное копирование и восстановление баз 1С на postgresql#17 09.08.18 2:25
(15) "тогда в процессе при возникновении ошибки можно было аналогичным образом потерять данные"

Нет, нельзя было бы. Ведь это делалось в рамках одной транзакции (ключик --single-transaction).
AdminРезервное копирование и восстановление баз 1С на postgresql#14 08.08.18 12:27
(13) ну как же...

Базу мы удалим, а затем выяснится что у нас или прав нет на создание новой базы или восстановить бэкап из-за ошибок в чистую базу не получилось... а базу мы уже благополучно удалили и оставили пользователя ни с чем.

Столько промежуточных шагов исключительно для надежности и отказоустойчивости операции в целом.
AdminРезервное копирование и восстановление баз 1С на postgresql#12 07.08.18 7:12
Так мне и не удалось научиться корректно очищать существующую базу для загрузки в неё архивной копии. Ничего не остаётся, кроме как загружать копию в новую базу.

Возможно это кому-то пригодится, получилось примерно так:

1. Делаем бэкап:
pg_dump.exe --quote-all-identifiers --format=plain --dbname=postgresql://"USER":"PASSWORD"@"HOST:PORT"/"BASE1C" --file="BACKUP.sql"

2. Создаём новую базу с временным именем (пусть сейчас это будет temp)
createdb.exe --encoding=utf8 --template=template1 --username="USER" --host="HOST" --port=PORT temp

3. Загружаем в temp наш архив:
psql.exe --single-transaction --echo-errors --quiet --set="ON_ERROR_STOP=on" --file="BACKUP.sql" --dbname=postgresql://"USER":"PASSWORD"@"HOST:PORT"/"temp"

4. Далее программно блокируем и выгоняем всех пользователей и фоновые. задания из базы через кластер 1с.

5. Далее программно через кластер очищаем свойство "база данных" у нашей базы. Это нужно, чтобы кластер отпустил базу в СУБД.

6. Далее переименовываем базу BASE1C в BASE1C_TEMP:

psql.exe --single-transaction --echo-errors --quiet --set="ON_ERROR_STOP=on" --dbname=postgresql://"USER":"PASSWORD"@"HOST:PORT"/"template1" --command="ALT ER DATABASE BASE1C RENAME TO BASE1C_TEMP;"

7. Далее переименовываем нашу temp в BASE1C:

psql.exe --single-transaction --echo-errors --quiet --set="ON_ERROR_STOP=on" --dbname=postgresql://"USER":"PASSWORD"@"HOST:PORT"/"template1" --command="ALT ER DATABASE temp RENAME TO BASE1C;"

8. Далее снова программно прописываем в свойства базы в кластере имя BASE1C

9. Наконец, удаляем базу BASE1C_TEMP:
dropdb.exe --username="USER" --host="HOST" --port=PORT BASE1C_TEMP

10. Пускаем всех обратно в базу.

Описанный алгоритм позволяет выполнить загрузку архивной копии в уже существующую базу максимально корректно и безопасно, насколько это возможно в условиях задачи.
AdminРезервное копирование и восстановление баз 1С на postgresql#11 07.08.18 1:52
(9) я пока надеюсь, что другой вариант всё же найдётся и вернусь к идее с удалением и повторным созданием базы уже в крайнем случае.

Дело в том, что вариант с очисткой и загрузкой можно делать в одной транзакции, в отличие от удаление и пересоздания базы.
AdminРезервное копирование и восстановление баз 1С на postgresql#10 07.08.18 1:50
(8)
Предварительная очистка базы поддерживается. Ключик --clean для pg_dump генерирует как раз этот код для очистки. Который затем выполняется через psql. Это если мы делаем дамп в plain формате. Как раз в этом коде очистки базы и возникает конфликт с mvarchar (сегодня буду разбираться подробнее).

Если же custom (тот же sql, но пожатый), то восстанавливать надо через pg_restore и там тоже есть ключик --clean. Но проблема та же. Так как pg_restore распаковывает custom в тот же самый plain sql и так же запускает его на выполнение (не знаю только сам или через psql).

Спасибо за помощь, по результатам (если таковые будут) обязательно здесь отпишусь.
AdminРезервное копирование и восстановление баз 1С на postgresql#5 06.08.18 17:11
(3) Всё видел, но проблема специфична именно для баз 1С. В статье также нет подходящего способа применительно к нашему случаю.