Это старая версия документа.


Сохранение и восстановление информационных баз при обновлении клиентов

Аварийное восстановление и резервное копирование информационных баз 1С

Файловые базы

  1. Если есть доступ к конфигуратору:
    • тестирование и исправление
    • загрузка резервной копии конфигурации
  2. Если нет доступ к конфигуратору:
    • утилита chdbfl.exe
    • манипуляции с кешем для доступа в конфигуратор (с дальнейшем заливанием конфигурации)

1) тестирование и исправление:

  1. Зайти в конфигуратор, нажать в меню на «Администрирование»
  2. Выбрать пункт «Тестирование и исправление»
  3. В разделе «Проверки и режимы» отмечаем нужные пункты:
    • Реиндексация таблиц информационной базы - если установлен этот флаг, будет произведена реиндексация таблиц - полное перестроение индексов для заданных таблиц. Реиндексация существенно повышает производительность системы в целом.
    • Проверка логической целостности информационной базы - система умеет проверять логическую и структурную целостность базы данных, находить ошибки в организации данных (например, страниц в файле)
    • Проверка ссылочной целостности информационной базы — подпункт логической проверки, проверяет информацию в базе данных на наличие «битых» ссылок. «Битые» ссылки появляются в базе из-за некорректной обработки информации разработчиком, чаще всего при непосредственном удалении данных или неправильно настроенном обмене данных. При нахождении ошибок можно выбрать 3 варианта действий: Создавать объекты — система создает элементы-заглушки, которые можно потом заполнить необходимой информацией, Очищать ссылки — «битые» ссылки будут очищены, Не изменять — система только покажет Вам ошибки.
    • Пересчет итогов — в платформе 1С в регистрах накопления и регистрах бухгалтерии есть понятие итогов. Итоги — таблица подсчитанных результатов, данные из которой получить быстрее, чем анализировать весь регистр сведений. Как правило, пересчет итогов увеличивает производительность системы.
    • Сжатие таблиц информационной базы — если установлен этот флаг, база данных будет сжата и уменьшится в объеме. Связанно это с тем, что при удалении данных из базы данных, 1С не удаляет физически эти объекты, а лишь «помечает» их на удаление. Т.е. пользователь не видит их, а они есть :). Вот именно сжатие базы данных и удаляет такие записи окончательно. Также такого эффекта можно достичь выгрузкой и загрузкой файла базы данных (*.dt). При удалении объектом в учетной системе, они полностью не удаляются и увеличивается вес Базы, для этого и нужна эта операция.
    • Реструктуризация таблиц информационной базы — процесс, с помощью которого система осуществляет пересоздание таблиц баз данных, обычно эта процедура вызывается при внесения изменений в структуру метаданных конфигурации. Реструктуризация всей БД — процесс долгий, будьте внимательны. (Например 2 таблицы и данные из 1 порциями копируются во 2, при этом структура таблицы меняется, а данные остаются такие же
  4. Кликнуть по требуемому действию:
    • «Только тестирование» - если требуется узнать место ошибки в базе
    • «Тестирование и исправление» - если нужно сразу все исправить. Перед началом ОБЯЗАТЕЛЬНО сделать резервную копию, даже если база уже сломана
  5. Установить в столбцах требуемые параметры исправления:
    • Создавать объекты - 1С создаст объект заглушку, которая исправит ошибку. Вместо которой можно будет создать нужный объект.
    • Битые ссылки либо удаляются либо создаются ссылки заглушки, которая никуда не ведет.

2) Загрузка резервной копии конфигурации

  1. Зайти в конфигуратор, нажать в меню на «Конфигурация»
  2. Выбрать пункт «Загрузить конфигурацию из файла» (Предварительно сохранить конфигурацию в файл и перед началом ОБЯЗАТЕЛЬНО сделать резервную копию). Такая загрузка заменяет только скелет базы.

Информационная база 1С состоит из 2 частей из данных и скелета конфигурации

Загрузка базы из конфигуратора в полном объеме:

  1. Зайти в конфигуратор, нажать в меню на «Администрирование»
  2. Выбрать пункт «Загрузить информационную базу» (Перед началом ОБЯЗАТЕЛЬНО сделать резервную копию) При такой загрузки идет полная замена данных

3) Утилита chdbfl.exe

Утилита chdbfl.exe расположена по пути «C:\Program Files\1cv8\<номер_версии_1с\bin\chdbfl.exe» и предназначенна для теста файла формата 1cd на ошибки

  1. Перейти в папку нужной версии 1С
  2. Зайти в папку «bin»
  3. Найти утилиту chdbfl.exe и дважды кликнуть по ней.

  1. Указываем имя базы данных.
  2. Если нужно исправление ошибок, то установить галочку в соответствующем поле.
  3. Нажать кнопку «Выполнить» (конфигуратор должен быть закрыт).

4) Подмена кеша

Если в конфигуратор нет возможности попасть и появляется ошибка

  1. Необходима чистая конфигурация той же версии что и разрушенная база (создаются бекапы базы)
  2. Очистить кеш полностью
  3. Запустить чистую базу в режиме конфигуратора и открыть конфигурацию. При этом 1С создает ее кеш.
  4. Открыть битую базу режиме конфигуратора и посмотреть кеш. (две папки с кешем)
  5. Закрыть все и подменить кеш битой базы на кеш живой базы.
  6. Запустить битую базу в режиме конфигуратора.
  7. Взять резервную копию текущей версии конфигурации и сделать полную загрузку.
  8. Очистить кеш снова.

Для очистки кеша:

В адресной строке пишем %appdata% и нажимаем кнопку «Еnter»

Возвращаемся на раздел выше, кликнув на «Appdata»

  1. Зайти в парку «Local»
  2. Перейти в папку «1С»
  3. Провалиться в папку «1Сv81»

Удалить все файлы с гуидами, кроме исключений указанных ниже. Аналогично удаляем файлы из папки «Roaming»

Когда осуществляется вход в конфигуратор, то автоматически формируется 2 одинаковых лога в папке Local и Roaming

Если есть кеш здоровой базы и кеш сломанной, то нужно скопировать наименование здоровой, удалить сам файл и переименовать кеш в сломанной в папках Local и Roaming

Резервное копирование файловых баз

  1. Копирование файлов баз данных
  2. Выгрузка информационной базы в файл
  3. Выгрузка конфигурации информационной базы в файл

1) Копирование файлов баз данных

При использовании файлового варианта 1С:Предприятия 8 можно организовать процесс создания резервной копии информационной базы путем простого копирования файла 1CV8.1CD в отдельный каталог или с использованием программного обеспечения для резервного копирования и восстановления данных. Следует учитывать, что для обеспечения целостности и согласованности данных во время создания резервной копии, работа пользователей с информационной базой должна быть запрещена,  однако время, необходимое на создание резервной копии существенно меньше, чем при использовании выгрузки информационной базы в файл.

Пример скрипта, который копирует файлы базы данных:

xcopy «D:\work\Send Base_work\repository» «D:\work\Send Base_work\backup\%date%» /f /s /i

2) Выгрузка информационной базы в файл

При этом происходит полная выгрузка базы данных – конфигурация и данные

3) Выгрузка конфигурации информационной базы в файл

Происходит выгрузка только конфигурации, без данных

4) Аварийное восстановление клиент-серверных баз

  1. Если есть возможность попасть в конфигуратор:
    • Тестирование и исправление
    • Загрузка резервной копии конфигурации
  2. Если нет возможности попасть в конфигуратор:
    • Восстановление средствами СУБД

Восстановление средствами СУБД

Одним из таких случаев, когда попасть в конфигуратор нельзя, является ошибка динамического обновления. Для восстановления базы нам понадобится:

  1. Резервная копия конфигурации информационной базы (cf)
  2. Доступ к серверу СУБД

Открываем pgAdmin (либо «Среда SQL Server Management Studio», если у вас MS SQL), заходим в нужную БД, далее схемы > public > таблицы, и ищем таблицу Configsave

Нажимаем на нее правой кнопкой и выбираем очистить. После этого пробуем зайти в конфигуратор. Здесь хранятся сохраненные, но не примененные параметры конфигурации.

  • Если это не помогло, производим следующие действия.
  • Нам понадобится рабочая база данных, со здоровой конфигурацией в клиент серверном формате. Чтобы ее получить, можно создать пустую БД и залить в нее резервную копию конфигурации, либо развернуть бекап пазы данных.
  • После того как рабочая база данных развернута, открываем pgAdmin, ищем таблицу Config, тыкаем правой кнопкой и выбираем «Резервная копия». И делаем резервную копию таблицы в файл backup.
  • Затем открываем сломанную базу, ищем ту же таблицу Config, и нажимаем «Очистить» а затем «Восстановить», и выбираем файл бекапа, в который мы сохранили копию таблицы.

Резервное копирование клиент-серверных баз

  • Резервное копирование сторонними программными средствами
  • Резервное копирование скриптами

Резервное копирование сторонними программными средствами

  • Существует условно бесплатная утилита PostgreSQL Backup Tool.
  • Позволяет настроить резервное копирование баз на FTP-сервер, в облако, на локальную или сетевую папку.
  • Существует ограничение бесплатной версии – резервное копирование можно настроить только на две базы.

Резервное копирование скриптами

Нам понадобится:

  1. Бесплатный SFTP клиент WinSCP для копирования на FTP сервер
  2. Командная строка.

Порядок действий:

  1. Скачать и установить WinSCP с официального сайта
  2. Создать папку для временного хранения SQL дампов
  3. Написать скрипты следующего содержания

Скрипт для выгрузки SQL дампов ИБ

  • cd /D C:\Program Files\PostgresPro 1C\9.6\bin
  • pg_dump -U postgres ZUP > D:\work\backups\%DATE%_ZUP.sql
  • pg_dump -U postgres UNF > D:\work\backups\%DATE%_UNF.sql
  • pg_dump -U postgres UT > D:\work\backups\%DATE%_UT.sql
  • pg_dump -U postgres bu-2 > D:\work\backups\%DATE%_bu-2.sql
  • pg_dump -U postgres bu-3 > D:\work\backups\%DATE%_bu-3.sql
  • pg_dump -U postgres bu-serv > D:\work\backups\%DATE%_bu-serv.sql
  • pg_dump -U postgres MWP > D:\work\backups\%DATE%_MWP.sql

Скрипт для выгрузки дампов на FTP сервер

Скрипт для очистки временной папки

  • cd /d D:\work\backups
  • del %DATE%_ZUP.sql
  • del %DATE%_UNF.sql
  • del %DATE%_UT.sql
  • del %DATE%_bu-2.sql
  • del %DATE%_bu-3.sql
  • del %DATE%_bu-serv.sql
  • del %DATE%_MWP.sql

Резервное копирование скриптами

Скрипты положить в папку для временного хранения SQL дампов (в данном примере это D:\work\backups\% Настроить планировщик задач на исполнение скриптов, например так: