Ситуация, когда в распоряжении администратора оказывается не полноценный дамп базы (файл .backup или .sql) и не выгрузка 1С (.dt), а просто набор файлов из каталога data сервера PostgreSQL, является критической. Однако, при соблюдении определенных технических условий, восстановить работоспособность базы 1С вполне реально. В этой статье мы подробно разберем, как «оживить» базу из файлового бэкапа СУБД.
Прежде чем приступать к активным действиям, проанализируем вводные данные. Файловый перенос базы данных (так называемый «холодный бэкап») накладывает жесткие ограничения на среду исполнения. Рассмотрим их подробнее:
Рассмотрим процесс восстановления на новом сервере. Первым делом нам необходимо установить «чистый» экземпляр PostgreSQL. Выполним установку СУБД, убедившись, что версия и параметры локали (кодировка UTF-8) совпадают с исходными. После установки проверим работоспособность службы, зайдя в pgAdmin или используя psql.
Теперь разберем, как правильно заменить данные. Выясним, где находится рабочий каталог data новой установки, и остановим службу PostgreSQL. Это обязательное условие: любые манипуляции с файлами при запущенном процессе приведут к повреждению структуры.
Удалим содержимое новой папки data и скопируем туда файлы из нашего бэкапа. Здесь нас подстерегает важный нюанс — права доступа. Проанализируем ситуацию для разных ОС:
postgres. Выполним команду:
chown -R postgres:postgres /var/lib/pgsql/data
chmod 700 /var/lib/pgsql/data
postgres или NETWORK SERVICE), есть полный доступ к подкаталогам.Если оригинальная база была скопирована в момент работы или после сбоя, внутри папки останется файл postmaster.pid. Проанализируем содержимое корня data: если этот файл присутствует, новая служба не запустится, считая, что экземпляр уже активен. Удалим postmaster.pid вручную.
Также обратим внимание на конфигурационные файлы postgresql.conf и pg_hba.conf, которые переехали вместе с базой. Выясним причину возможных конфликтов: если на новом сервере меньше оперативной памяти, параметры типа shared_buffers в старом конфиге могут помешать запуску. В таком случае рекомендуется временно использовать дефолтные конфиги от новой установки, предварительно прописав в pg_hba.conf правила авторизации для подключения 1С.
Попробуем запустить службу. Если база не поднимается, проверим наличие папки pg_wal (или pg_xlog в старых версиях). Эти журналы необходимы для консистентности данных. Если журналы утеряны, база может отказаться стартовать. В самом крайнем случае, когда данные нужно вытащить любой ценой, можно воспользоваться утилитой восстановления, но помните — это может привести к потере части транзакций:
sudo -u postgres pg_resetwal -f /var/lib/pgsql/data
После успешного старта PostgreSQL база еще не является базой 1С в полном смысле этого слова. Теперь нам нужно зарегистрировать её на сервере приложений 1С. Рассмотрим порядок действий:
postgres).Выясним, насколько успешно прошло восстановление. Зайдем в базу через Конфигуратор. На данном этапе база может иметь логические ошибки из-за «холодного» копирования. Разберем шаги по приведению её в порядок:
Первым делом выполним полную выгрузку в файл .dt. Это позволит пересобрать структуру данных заново. После этого создадим абсолютно чистую базу на SQL и загрузим в неё полученный .dt.
Обязательным финальным этапом является процедура Тестирование и исправление (ТиИ). Проанализируем состояние объектов, включив следующие опции:
После прохождения всех этапов мы получим полностью рабочую и живую базу 1С, готовую к эксплуатации.