Резервное копирование и восстановление базы 1С средствами PostgreSQL
База данных - Архивирование (backup)
В интернете куча статей, как установить PostgreSQL и залить в него базу из dt.
Но столкнулся с проблемой резервного копирования и восстановления базы средствами PostgreSQL.
т.е. при восстановлении базы сыпались ошибки, и восстановленная копия базы не работала.
Ошибочный алгоритм.
1. Делаем резервную копию скриптом или с помощью pgAdmin III --- получаем файлик bkp...
2. Создаем пустую базу средствами 1С сервера.
3. Восстанавливаем резервную копию скриптом или с помощью pgAdmin III в базу, созданную на шаге 2.
и болт : во время восстановления уже видны ошибки и восстановленая копия получается не рабочая (в конфигуратор пускает, но в предприятие уже не войти, "ошибка аутентификации пользователя" и т.п.)
Правильный алгоритм.
1. Делаем резервную копию скриптом или с помощью pgAdmin III --- получаем файлик bkp...
Пример командного файла :
"C:\Program Files\PostgreSQL\9.4.2-1.1C\bin\pg_dump.exe" --host localhost --port 5432 --username "postgres" --role "postgres" --no-password --format custom --blobs --section pre-data --section data --section post-data --encoding UTF8 --verbose --file "c:\1c_base.backup" "1c_base"
pause
где "1c_base" - имя базы
"c:\1c_base.backup" - имя файла резервной копии
2. Создаем пустую базу средствами Postgre - Я делал pgAdmin III -ом. (и пока не добавляем ее через "Администрирование сервера 1С" )
пустую базу можно создать командой CREATE DATABASE https://www.postgresql.org/docs/9.1/static/sql-createdatabase.html
3. Восстанавливаем резервную копию скриптом или с помощью pgAdmin III в базу созданную на шаге 2.
Пример командного файла :
"C:\Program Files\PostgreSQL\9.4.2-1.1C\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "1c_base_copy" --role "postgres" --no-password --section pre-data --section data --section post-data --verbose "C:\ 1c_base.backup"
pause
где "1c_base_copy" - имя пустой базы, созданой в шаге 2 средствами PostgreSQL
"c:\1c_base.backup" - имя файла резервной копии
4. Добавляем базу созданную на шаге 2 с восстановленной информацией в список баз на сервере 1С через остнастку "Администрирование сервера 1С".
Вот и все !!! Всем удачного дня !!!
Вступайте в нашу телеграмм-группу Инфостарт
Резервное копирование восстановление базы из архива PostgreSQL развернуть базу из архива PostgreSQL.
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Архивирование (backup) Инструменты администратора БД 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS! Версия 1.4 от 28.05.2026
7320 руб.
06.11.2012 80501 635 45
Информационная безопасность Архивирование (backup) Системный администратор Разработчик 1С 8.3 Бесплатно (free)
Утром базы не открылись: ночью хакеры зашифровали серверы, базы 1С, почту, кассы, мобильные приложения и бэкапы в сети. Критичные базы подняли из копий на отключённых дисках и потеряли около 10 часов данных. Рассказываю, как прошли первые сутки, что увидел только человек, что мы закрыли после атаки и какие двери в самой базе 1С программист может проверить у себя уже сегодня.
10.11.2026 15956 nedomolkov.ivan 67
Архивирование (backup) Обновление 1С Системный администратор Разработчик 1С 8.3 Бесплатно (free)
Платформа 8.3.17, MS SQL Server: обновление конфигурации падает через 15 секунд на этапе обновления предопределённых данных, и конфигуратор при каждом входе предлагает только повторить. Проверьте у себя, когда сделана последняя полная копия базы: у нас её не было почти месяц. Разбор по минутам: что не помогло (перезапуск агента сервера 1С, перезагрузка, пакетный /UpdateDBCfg, три совета со стороны) и почему. Как ibcmd достал .dt из базы, которая не открывается, и как новую базу подставили под старым именем в кластере 1С через rac, не трогая пользователей. Простой 57 минут, потерь данных нет. Отдельно ошибки ИИ-агента Claude, который работал на сервере, и порядок действий на случай, если это случилось у вас.
03.11.2026 705 nedomolkov.ivan 13
Архивирование (backup) Инструменты администратора БД Системный администратор Разработчик 1С 8.3 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Абонемент ($m)
Полностью автоматизированная внешняя обработка для администрирования 1С: блокировка/разблокировка ИБ, массовое завершение сеансов, резервное копирование и восстановление из .dt, выгрузка/загрузка конфигурации (.cf), пакетная работа с расширениями (.cfe) и дополнительными обработками – всё через удобную форму без ручных запусков конфигуратора и консоли кластера
1 стартмани
21.01.2026 6565 66 war41k 0
Архивирование (backup) Групповая разработка (Git, хранилище) Системный администратор Разработчик Бесплатно (free)
Как дать возможность каждому разработчику 1С вести разработку, тестирование и оптимизацию на собственной полноразмерной копии базы и при этом не тратить миллиарды рублей и тысячи часов на развертывание тестового окружения, а так же экономить дисковое пространство? Расскажем о том, как с помощью инструмента Database Lab получать полноразмерные копии базы 1C на СУБД PostgreSQL за считанные секунды (даже в случае использования многотерабайтных баз).
15.12.2025 14265 nasonkin 19
Архивирование (backup) Учет документов Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)
В текущих версиях 1С пока нет функции, позволяющей автоматически отмечать возврат оригиналов документов с помощью сканера штрих-кодов. Многие контрагенты часто сталкиваются с проблемой утери оригиналов УПД или их невозврата. В ответ на эти запросы было разработано расширение, которое упрощает контроль за возвратом оригиналов документов и помогает лучше организовать их хранение.
12200 руб.
19.02.2025 2965 3 0
Архивирование (backup) Системный администратор 1С 8.3 Бесплатно (free)
Предлагаю Вашему вниманию 3 скрипта на bash (sh) для архивирования (backup) типовых конфигураций на Linux средствами 1С и Postgres. Перед запуском корректно заполните раздел "Параметры" в соответствии с Вашими настройками.
20.01.2025 6008 Prelude 5
Архивирование (backup) 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)
Резервные копии базы 1С без завершения сеансов: .dt, файл базы, PostgreSQL, MS SQL, своя команда. Расписание, профили, ротация, ZIP, FTP, журнал и письмо об ошибке. Платформа 8.3+ (кроме 8.2), любая конфигурация с БСП. Подключение за 5 минут.
5000 руб.
27.08.2024 4171 1 6
psql имя_БД < файл_дампа
где файл_дампа — это файл, содержащий вывод команды pg_dump. База данных, заданная параметром имя_БД не будет создана данной командой, так что вы должны создать её сами из базы template0 перед запуском psql (например, с помощью команды createdb -T template0 имя_БД)
Поэтому, я восстанавливаю базу так:
dropdb имя_базы
createdb имя_базы
psql имя_базы < файл_дампа
Мой скрипт восстановления для Linux (работает под пользователем postgres):
#!/bin/bash
if [ -z "$1" ] ; then
echo "Скрипт восстановления базы 1С. Параметры: 1 имя директории бэкапа, 2 имя базы 1С" 1>&2
exit
fi
base_name="$2"
dir_name="$1"
archive_name=$dir_name/$base_name.sql.gz
dropdb $base_name
createdb $base_name
gunzip -c $archive_name | psql $base_name
Если у пользователя установлен пароль: SET PGPASSWORD=123
Готовый скрипт:
SET PGPASSWORD=123
"C:\Program Files\PostgreSQL\9.4.2-1.1C\bin\pg_dump.exe" --host localhost --port 5432 --username "postgres" --role "postgres" --no-password --format custom --blobs --section pre-data --section data --section post-data --encoding UTF8 --verbose --file "D:\1cBackupNew\ut11_backup_%date:~6,4%-%date:~3,2%-%date:~0,2%.backup" "ut11"
Нет, нельзя. Одна операция в 1с меняет данные во многих sql таблицах. Бэкап базы существеннен по времени и у вас нет гарантии, что данные за это время не изменятся. Вы сделаете несколько бэкапов и они будут рабочие, но однажды попадете на восстановление данных.
Не только можно, но и в большинстве случаев это единственный вариант. Например если база весит пару терабайт, работает 24/7/365 и каждый час простоя стоит N килобаксов.
А по поводу длительности операции - там снэпшот создается, так что итоговый бэкап получается вполне себе консистентным.
Не знаю как насчет терабайт, а вот с базой 300Гб (select pg_database_size('base');), которая используется 24/7/365, я сначала был такого же мнения как и вы. Бэкап делался минут 40, в течении которых пользователи плевались и матерились, т.к. предприятие тормозило еще как. Так вот в один прекрасный день, когда неудачно прошло обновление конфигурации и база отказалась запускаться, пришлось воспользоваться самым свежим бэкапом, сделанным таким путем, и каково же было мое недоумение, когда он загрузился без проблем, но при открытии в 1с счет фактур предприятие вылетало. Вы можете возразить, что мол кеши надо было чистить, но все это конечно было сделано. Сейчас система переделана. Два сервера: один мастер, другой слейв. Когда нужно сделать бэкап, слейв теряет соединение с мастером, к нему подключается сервер 1с предприятия и средствами 1с делают бэкап. После этого слейв подключается к мастеру и синхронизируется.
Снепшот может и создается (хотя не уверен, а проверять ваши слова лень), но это снепшот sql базы. А вот 1с в этот момент может что-то активно писать и поменять данные в 1 таблице sql, и тут произойдет снепшот sql, а еще в 10 таблицах не успеет поменять, хотя должна, чтобы поддерживать свою логику. Вы же знаете, что одно добавление в регистр записи, может запускать множество других регистраций и каждая из них будет запускаться как одна транзакция в sql. Поэтому данные в базе у вас обязательно испортятся. Возможно база у вас и загрузится и даже работать будет, но данные будут неполными и это аукнется позже.
Я говорил про сервера postgresql, а не 1с. Уверенности конечно нет, но т.к. бэкап делается средствами 1с, то 1с при обнаружении испорченных данных в документе его просто не выгрузит в бэкап. В результате структура базы будет цела, правда за минусом документа.
Ага, не понял вас сразу. То есть фактически плюсом этого решения является то, что боевая база не тормозит в момент бэкапа? Но вот в плане надёжности такого решения я испытываю сильные сомнения. В момент обрыва связи между серверами postgre вероятность потерять данные не меньше чем при снепшоте. То что потом бэкап делается средствами 1С не панацея. Сталкивался я со случаями, когда бэкап из dt не разворачивался из-за сбойных данных внутри.
Добрый день,
Выполнял выше указанные скрипты. Дамп отрабатывает без ошибок, но при попытки сделать восстановление в пустую созданную БД отрабатывает не корректно с ошибками, база не запускается.
Но есть один вопрос. Иногда требуется срочно восстановить какую нибудь копию базы за определенный день. с командной строки я ее восстанавливаю в новую базу созданную посредством psql, но в 1ске то она не появиться надо вручную ее создать или с помощью 1с или через консоль администрирования 1с. А как через командную строку создать базу в 1с?
Речь пойдет про Windows платформу, а именно server 2012.
Съезжая с хостинга клиент попросил отдать ему выгрузку базы 1С. В итоге со словами "Вот, могу отдать только SQL дамп. Но без СУБД вы все равно ничего не сможете сделать" - прилетает архив размером 700 мег формата bla_bla_bla_UT11.sql.gz
SQL дамп это прекрасно, подумал я, запуская SQL management studio...
Распаковав это хозяйство получил 1,5 гиг файл формата .sql
Попытки подпихнуть это в MS SQL успехом не увенчались.
Пришлось первый раз разбираться с postgre. Последняя на текущий момент версия была 10, но так как ей нужна была платформа не ниже 8.3.14 - была отправлена в корзину.
Поставил 9.6.7 с сайта 1С.
Ставится запуском postgresql-9.6.7-1.1C(x64).msi все параметры по умолчанию, предлагает указать некий пароль (даже не показывая к какому юзеру/уч.записи он относится), не менее 4х знаков, и после инсталляции запускает Stack Builder который предлагает поставить кучу какого-то не нужного барохла. Закрыл ничего не инсталлируя. pgAdmin 4 это адовая программа, которая открылась всего два раза. Сначала я создал там базу, выбрал в меню "восстановить из бекапа". Меня отправили прописывать какие то пути к скриптам. Что за (...) - тебе же указали пути при установке! Но нет, надо что-то там в настройках указать. кое как нашел настройки. Попутно хочется добавить, что через 5 минут вглядывания в интерфейс этого ... у меня стали болеть глаза. Я почувствовал себя пользователем Windows 3.11 , ни больше ни меньше. Заодно поменял языковую опцию на русский. Это, видимо, было ошибкой - после этого надо было рестартовать сервис, и больше pgAdmin-4 не запустился ни разу. Ну ничего, рядом в папке \bin валялась 3я версия этой чудесной программы. Она всё же согласилась работать, но архив мой открывать и грузить никак не хотела. Кнопка "Загрузить" так активной и не стала.
перерыл кучу всевозможной информации, нашел массу примеров скриптов, которые то запускают pg_restore то psql , причем принципиально понять почему одни используют одно, а другие другое - я никак не мог. Но у всех в примерах дампы были формата *.backup и с моим файлом это никак не хотело работать.
В итоге оказалось, что этот дамп - по сути текстовый набор sql инструкций, который создает таблички и постит туда данные. Некий набор запросов. Очень большой набор запросов.
В итоге строка запука восстановления стала выглядеть так:
C:\Program Files\PostgreSQL\9.6.7-1.1C\bin>psql pg_db_name < backup.sqlсистема спрашивает пароль, и что бы я ей не указывал - не пускает. Пароль при инсталляции, пароль от системной учетной записи админа, пустой пароль - всё равно валит ошибку
Что надо сделать чтобы это победить:
Надо найти файл pg_hba.conf в корневой директории установки ЭТОЙ СУБэДы, и найдя среди кучи закоментированного мусора, значимые - подправить пару строчек, указав в колонке METHOD вместо способа идентификации md5, просто trust
Снова запускаем команду... И опять ошибка
Оказывается он пытается от имени текущей учетной записи windows что то сделать, и наличие у вас хоть прав администратора всея вселенная - его ничуть не смущают, вы всё равно идете лесом.
В итоге команда принимает следующий вид:
C:\Program Files\PostgreSQL\9.6.7-1.1C\bin>psql -U postgres pg_db_name < backup.sqlИ по экрану радостно побежали заголовки sql запросов... Заняло это минут 30.
Далее прописываем базу в консоле администрирования 1С, пользователь БД - postgres , пароль как раз тот что был при инсталляции.
Добавляем базу в список баз 1С.
И вот, к концу написания данного опуса - у меня на руках уже родимый .dt с которым уже чувствуешь себя хорошо. Работоспособность проверена.
pg_restore: обрабатываются данные таблицы "public._usersworkhistory"
pg_restore: обрабатываются данные таблицы "public._yearoffset"
pg_restore: обрабатываются данные таблицы "public.config"
pg_restore: [внешний архиватор] не удалось прочитать входной файл: конец файла
При чём всегда после конфига и иногда рестор отрабатывает без ошибки на том же самом дампе
2. насколько разные сервера? Версии? ОС?
Я не говорил что ОС у меня Ubuntu.
Выполнял копирование командой: pg_dump -C -h ipОткуда -U пользовательОткуда имяБДоткуда | psql -h ipКуда -U пользовательКуда имяБДкуда.
По итогу система мне сказала что успешно выполнила все.
Затем попытался создать базу в консоли администирования 1С и получил ошибку:DATABASE не пригоден для использования.
В итоге получилась поломанная БД без таблиц.
Проделал все тоже самое через файл, проверил наличие таблиц. Все получилось.
У меня была тестовая БД, решил восстановить прямо в нее копию базы, все это возможно через ключ "-c"
-c
--clean
Удалить (DROP) объекты базы данных, прежде чем пересоздавать их. (Без дополнительного указания --if-exists при этом могут выдаваться безвредные сообщения об ошибках, если таких объектов не окажется в целевой базе данных.)
источник:
т.е. -с сначала удаляет данные БД, потом туда же их архива записывает, мой скрипт для бэкапа (.bat)
@echo off
set PGPASSWORD=ваш_пароль_от_СУБД
set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%
set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
"C:\Program Files\PostgreSQL\11.10-2.1C\bin\pg_dump.exe" -U postgres -F c -b unf_main > "E:\backup_base\day\%yyyy%.%mm%.%dd%_%h%.%m%.%s%_unf_main_.butts" Показать-b - имя вашей базы
Скрипт восстановления в уже готовую базу (тестовую или рабочую)
@echo off
"C:\Program Files\PostgreSQL\11.10-2.1C\bin\pg_restore.exe" -U postgres -d "unf_test" -c "E:\backup_base\day\2021.02.04_23.30.00_unf_main_.butts"
pause-d - имя вашей базы, куда нужно восстановить. При запуске скрипта - попросит пароль от БД.
Так же, не используя ключ -c - можно тоже восстановить базу, но тогда сначала нужно создать новую через pgadmin, далее туда восстановить базу, далее - создать базу через 1с Администрирование серверов.
Надеюсь кому-то помог :)
Рейтинг: 137
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 540298
Создание 01.08.16 15:33
Обновление 01.08.16 15:33
Просмотры 88754
Загрузки 0
Рейтинг
66
Комментарии 36
Код открыт Не указано
Рубрики Архивирование (backup)
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)