Резервное копирование базы 1С: от файловой до серверной
Содержание
Самый надёжный бэкап файловой базы 1С — закрыть все сеансы и скопировать папку с файлом 1Cv8.1CD в другое место. Для серверной базы так нельзя: данные лежат в СУБД, и копию снимают средствами MS SQL или PostgreSQL. Третий способ, универсальный для обоих вариантов, — выгрузка информационной базы в файл .dt из конфигуратора.
Какой метод выбрать, зависит от того, где хранится база и насколько она большая. Ниже — все рабочие способы с точными путями, командами и порядком восстановления. Начну с главного: от того, файловая у вас база или серверная, зависит буквально всё остальное.
Где лежат данные и что именно копировать
У 1С 8.3 два варианта хранения, и бэкап у них разный.
Файловая база. Все данные — в одном файле 1Cv8.1CD внутри каталога базы. Рядом лежат служебные файлы кэша и журнал регистрации. Путь к каталогу виден в окне запуска 1С: выделите базу в списке и посмотрите строку внизу — там полный путь вроде C:\Bases\Buh.
Клиент-серверная база
. Конфигурация и данные хранятся в СУБД (MS SQL Server или PostgreSQL), а сервер 1С — это промежуточное звено. Файла 1Cv8.1CD здесь нет. Копировать «папку базы» бессмысленно: таблицы лежат внутри базы данных СУБД.
Как понять, какая у вас база: в окне запуска выделите базу и нажмите «Изменить». Если указан путь к каталогу — файловая. Если имя сервера 1С и имя базы в кластере — серверная.
Отсюда простое правило:
- файловая база — копируем файлы или выгружаем
.dt; - серверная база — бэкап средствами СУБД или выгружаем
.dt; .dtработает в обоих случаях, но подходит не для любого размера (об этом ниже).
1Cv8.1CD. Для архива и переноса — дополнительно выгрузка в .dt..dt из конфигуратора. Файл один, его удобно архивировать и переносить.BACKUP DATABASE. Файл .dt — только как разовый архив.pg_dump по расписанию. Для больших баз — pg_basebackup с архивом WAL.Выгрузка информационной базы в файл .dt
Это штатный способ платформы, работает и для файловой, и для серверной базы. На выходе — один файл .dt, внутри которого и конфигурация, и все данные.
Порядок:
- Запустите базу в режиме Конфигуратор (в окне запуска выберите базу, затем «Конфигуратор»).
- Меню
Администрирование → Выгрузить информационную базу. - Укажите имя и папку для файла, нажмите «Сохранить».
Восстановление из .dt — там же: Администрирование → Загрузить информационную базу, выбрать файл
.
Загрузка .dt полностью затирает текущую базу. Всё, что было в базе до загрузки, пропадёт. Перед загрузкой в рабочую базу сделайте копию того, что в ней сейчас.
Что важно знать про .dt:
- Для выгрузки и загрузки нужен монопольный доступ — все пользователи должны выйти. Если кто-то работает, конфигуратор выдаст список активных сеансов.
- Это «логическая» выгрузка: платформа читает данные объектами и пишет в файл. Для базы в несколько десятков гигабайт выгрузка идёт долго — часами, и может упасть по памяти.
- Поэтому
.dtхорош для файловых баз и небольших серверных, а также для переноса базы между компьютерами и между файловым и серверным вариантом.
Для крупной серверной базы .dt как основной бэкап не годится — там нужны средства СУБД.
Копирование файловой базы на уровне файлов
Самый быстрый способ для файловой базы — просто скопировать файлы, пока в базе никто не работает .
- Попросите всех выйти из базы (проверьте, что окон 1С не осталось).
- Откройте каталог базы — путь берётся из окна запуска.
- Скопируйте файл
1Cv8.1CDв другое место: на другой диск, в сетевую папку, в облако.
Достаточно одного файла 1Cv8.1CD — в нём и данные, и конфигурация. Служебные папки кэша (1Cv8FTxt, 1Cv8Log и подобные) копировать не нужно, журнал регистрации — по желанию.
Нельзя копировать 1Cv8.1CD, пока база открыта хотя бы в одном сеансе. Копия получится в несогласованном состоянии и при восстановлении может не открыться. Сначала закройте все сеансы, потом копируйте.
Восстановление простое: закрываете базу, кладёте сохранённый 1Cv8.1CD обратно в каталог вместо текущего (текущий сначала переименуйте, не удаляйте). Или добавляете каталог с копией как новую базу в список.
Плюс способа — скорость: копирование идёт на уровне диска, без разбора данных платформой. Минус — нужно гарантированно закрыть все сеансы, иначе копия будет битой.
Бэкап серверной базы средствами СУБД
Для клиент-серверного варианта копию снимают на уровне базы данных СУБД. Это основной и самый надёжный способ для крупных баз: он быстрый и не требует выгонять пользователей.
MS SQL Server. Копия делается командой BACKUP DATABASE или регламентным заданием (Maintenance Plan) в SQL Server Management Studio. Пример разовой копии:
BACKUP DATABASE [buh_base]
TO DISK = N'D:\SqlBackup\buh_base_full.bak'
WITH INIT, COMPRESSION;
Здесь buh_base — имя базы данных в SQL Server (не путь к базе 1С, а имя базы на сервере СУБД). Опция COMPRESSION сжимает файл копии, INIT перезаписывает прежний файл.
PostgreSQL. Для баз 1С чаще всего используют логическую выгрузку pg_dump:
pg_dump -U postgres -F c -f /var/backup/buh_base.dump buh_base
Флаг -F c создаёт сжатый формат, удобный для восстановления через pg_restore. Для очень больших баз вместо pg_dump применяют физический бэкап pg_basebackup с архивированием журналов WAL — это тема отдельной настройки на стороне PostgreSQL.
Бэкап средствами СУБД снимается без остановки сервера 1С — пользователи могут работать. В этом главное преимущество перед .dt и копированием файлов.
Восстановление — тоже средствами СУБД: RESTORE DATABASE в MS SQL, pg_restore в PostgreSQL. После восстановления базу данных подключают к кластеру 1С через консоль администрирования серверов.
Автоматизация регулярного бэкапа
Копия раз в неделю «когда вспомнил» — не стратегия. Бэкап должен делаться по расписанию сам.
Файловая база — пакетный режим конфигуратора. Платформа умеет выгружать .dt из командной строки, без открытия окон. Команда:
"C:\Program Files\1cv8\8.3.24.1234\bin\1cv8.exe" DESIGNER /F "C:\Bases\Buh" /N "Админ" /P "пароль" /DumpIB "D:\Backup\buh_%date%.dt"
Разберём параметры:
DESIGNER— запуск в режиме конфигуратора;/F— путь к каталогу файловой базы (для серверной используется/S сервер\база);/Nи/P— имя пользователя и пароль;/DumpIB— выгрузить базу в указанный файл.
Этот .bat ставят в «Планировщик заданий» Windows на ночь. Номер версии платформы в пути (8.3.24.1234) подставьте свой — он виден в окне «О программе».
Пакетная выгрузка .dt тоже требует монопольного доступа: на время работы все должны выйти из базы. Планируйте её на время, когда в базе никто не работает — например, ночью.
Серверная база — средства СУБД. Здесь расписание задаёт сама СУБД:
- MS SQL — регламентное задание (Maintenance Plan) или job в SQL Server Agent с нужным расписанием;
- PostgreSQL — запуск
pg_dumpчерез планировщик ОС (cronв Linux, «Планировщик заданий» в Windows).
Независимо от способа держитесь правила 3-2-1: три копии, на двух разных носителях, одна — вне офиса (сетевое хранилище или облако). Локальная копия на том же диске, где и база, не спасёт при отказе диска.
Сколько копий хранить и когда их делать
Одна копия — почти то же самое, что ни одной. Если бэкап делается поверх предыдущего, а база повредилась неделю назад и всё это время копировалась уже битой, восстанавливать будет нечего.
Поэтому хранят несколько поколений копий. Рабочая схема для небольшой фирмы:
- ежедневная копия — за последние 7 дней;
- еженедельная — за последний месяц (например, копия каждого воскресенья);
- ежемесячная — за последний год.
Старые копии при этом удаляются автоматически, чтобы не забить диск. В пакетном .bat для этого подставляют в имя файла дату (buh_%date%.dt) и отдельной командой чистят файлы старше N дней.
Два параметра, от которых пляшет вся схема:
- За какой период не жалко потерять данные. Если допустимо потерять день работы — бэкап раз в сутки. Если даже час простоя дорог — чаще, вплоть до копий в течение дня.
- Как быстро нужно восстановиться. От этого зависит, где держать копии: локальная копия разворачивается за минуты, выгрузка из облака — дольше.
Для серверной базы на MS SQL можно настроить полный бэкап раз в сутки плюс копии журнала транзакций в течение дня. Это позволяет восстановиться на момент почти перед сбоем, а не только на утреннюю копию. Настраивается на стороне SQL Server.
Отдельно держите копию перед каждым обновлением конфигурации и перед любым массовым изменением данных (групповая перепроводка, обработки, свёртка базы). Это не заменяет регламентный бэкап, а страхует конкретную рискованную операцию.
Восстановление из копии и проверка целостности
Бэкап, который ни разу не разворачивали, — это надежда, а не копия. Проверять восстановление нужно заранее, а не в день аварии.
Восстановление по типам копий:
| Что в копии | Как восстановить |
|---|---|
Файл 1Cv8.1CD | Положить обратно в каталог базы (текущий переименовать) |
Файл .dt | Конфигуратор → Администрирование → Загрузить информационную базу |
Копия MS SQL (.bak) | RESTORE DATABASE в SSMS, затем подключить к кластеру 1С |
| Дамп PostgreSQL | pg_restore, затем подключить к кластеру 1С |
Проверка целостности файловой базы. Если база повреждена или вы сомневаетесь в копии, проверьте её утилитой chdbfl.exe — она лежит в каталоге bin платформы. Утилита проверяет физическую целостность файла 1Cv8.1CD и может исправить часть ошибок (поставьте галку «Исправлять обнаруженные ошибки»). Перед проверкой с исправлением сделайте копию файла.
Логическая проверка. Для проверки структуры и логики данных есть штатный механизм: Конфигуратор → Администрирование → Тестирование и исправление. Он проверяет логическую целостность, ссылки, пересчитывает итоги. Запускают в монопольном режиме и обязательно на копии, а не на боевой базе первым заходом.
Хороший способ одновременно и проверить копию, и получить тренировку восстановления — раз в месяц разворачивать свежий .dt или .bak в отдельную тестовую базу и открывать её. Если база открылась и отчёты считаются — копия рабочая.
Частые вопросы
Можно ли копировать файл 1Cv8.1CD, пока в базе работают?
Чем .dt отличается от копии .bak на SQL?
.dt — выгрузка средствами платформы 1С, одинаковая для любой СУБД и для файловой базы. .bak — копия средствами MS SQL Server, снимается быстрее и без остановки работы, но только для серверной базы на этой СУБД.Почему выгрузка .dt большой базы идёт так долго?
Как часто делать бэкап?
Нужен ли монопольный доступ для бэкапа?
.dt и копирования файлов — да, база должна быть свободна. Бэкап серверной базы средствами СУБД снимается без остановки работы.