Автоматизуємо бекап бази 1C 7.7 SQL 2005



Розповім як я реалізував щоденний бекап бази 1C 7.7 SQL 2005, так само у мене робиться бекап файлів 1С. З 1C я почав працювати зовсім недавно, не буду в цій статті розповідати яке УГ цей ваш 1С, мені не доводилося вибирати. Після успішного підняття сервера SQL 2005 і встановлення 1С, все працювало як треба, але провідний програміст мало не щодня нагадував про необхідність постійного створення резервних копій. Страшно уявити що було б, якщо б не було бекапів.Але мене всякого роду біди обходять стороною, бэкапами я ще жодного разу не скористався, думаю і не доведеться ними користуватися. І так почнемо, завдання: "Кожен день зберігати базу даних 1С і файли з папки самої програми (конфігурація, папки користувачів, друковані форми і т. д. і т. п.)".

Для початку покажу як я все це робив вручну.

Ручний бекап бази 1C 7.7 SQL 2005

Для вивантаження файлу бази даних, я підключаюся RDP до свого сервера, відкриваю Microsoft SQL Server Management Studio, вводжу дані для підключення до сервера, тисну "Connect"бэкап базы 1с 7.7 1Відкриваю гілку "Databases" правою кнопкою по своїй базі - "Tasks" - "Backup"бэкап базы 1с 7.7 2У вікні вам потрібно вказати шлях куди зберегти бекап і тип бекапабэкап базы 1с 7.7 3У вкладці "Optionsвстановіть галочку "Verify backup when finished"бэкап базы 1с 7.7 4Ось і все, тиснемо "ОК" і чекаємо поки з'явитися повідомлення про успішне завершення бекапабэкап базы 1с 7.7 5Далі я переходжу в папку з даними 1С і повністю її архивируюбэкап базы 1с 7.7 6Після чого, архів і базу даних я переношу на інший сервер, де зберігаю 30 останніх копій (можна звичайно і менше зберігати, але розмір файлового сервера дозволяє).

Все б добре, але дану процедуру потрібно робити кожен день. Витрачатися на все про все близько 5-7 хвилин часу, начебто і не багато, але буває забуваю, а буває і зовсім не зроблю за якийсь день (занадто зайнятий поточними завданнями). Коротше все це справа потрібно терміново автоматизувати.

Автоматизуємо бекап бази 1C 7.7 SQL 2005

Як то я починав гуглитьна тему автоматизації резервних копій бази даних 1С, але нічого толком не знайшов, а буквально на днях знову задався цим питанням, і зібрав по крупицях ось такий варіант.

  • Написати скрипт автоматичного збереження бази даних у вказане місце
  • Додати скрипт в шедулер (планувальник завдань), налаштувати час і дні запуску
  • Перевірити як всі відпрацювало
  • Для написання скрипта відкриваємо блокнот і вносимо туди наступну інформацію


    set DIR_BACKUP=D:\backup\Backup_Analit_Ъte%\ set DIR_ARCHIVE=\\srv-fs\backup\Backup_Analit_Ъte%\ set DIR_FILES=D:\shares\KrjymSQL-TEST\ set NAME_PC=srv-sql md %DIR_BACKUP% md %DIR_ARCHIVE% osql-S %NAME_PC% -E-Q "BACKUP DATABASE krjymtest TO DISK = '%DIR_BACKUP%\krjymtest.bak' with init" "c:\Program Files\7-zip\7z.exe" a %DIR_BACKUP%\DB_krjymtest_Ъte%.zip %DIR_BACKUP%\krjymtest.bak "c:\Program Files\7-zip\7z.exe" a %DIR_BACKUP%\FILES_krjymtest_Ъte%.zip %DIR_FILES%\* copy %DIR_BACKUP%\DB_krjymtest_Ъte%.zip %DIR_ARCHIVE%\ copy %DIR_BACKUP%\FILES_krjymtest_Ъte%.zip %DIR_ARCHIVE%\

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    set DIR_BACKUP=D:\backup\Backup_Analit_Ъte%\
    set DIR_ARCHIVE=\\srv-fs\backup\Backup_Analit_Ъte%\
    set DIR_FILES=D:\shares\KrjymSQL-TEST\
    set NAME_PC=srv-sql
    md %DIR_BACKUP%
    md %DIR_ARCHIVE%
    osql-S %NAME_PC% -E-Q "BACKUP DATABASE krjymtest TO DISK = '%DIR_BACKUP%\krjymtest.bak' with init"
    "c:\Program Files\7-zip\7z.exe" a %DIR_BACKUP%\DB_krjymtest_Ъte%.zip %DIR_BACKUP%\krjymtest.bak
    "c:\Program Files\7-zip\7z.exe" a %DIR_BACKUP%\FILES_krjymtest_Ъte%.zip %DIR_FILES%\*
    copy %DIR_BACKUP%\DB_krjymtest_Ъte%.zip %DIR_ARCHIVE%\
    copy %DIR_BACKUP%\FILES_krjymtest_Ъte%.zip %DIR_ARCHIVE%\

    Тепер докладніше:

    • set DIR_BACKUP - оголошення змінної містить шлях до локальної папки куди будуть зберігатися бекапи
    • set DIR_ARCHIVE - оголошення змінної містить шлях до мережної папки, де будуть зберігатися бекапи
    • set DIR_FILES - оголошення змінної містить шлях до папки з файлами програми
    • set NAME_PC - оголошення змінної містить ім'я сервера
    • md %DIR_BACKUP% - створюємо папку на сервері, куди збережемо базу даних
    • md %DIR_ARCHIVE% - створимо папку на мережевому ресурсі, де будуть зберігатися всі архіви
    • "BACKUP DATABASE krjymtest TO DISK = '%DIR_BACKUP%\krjymtest.bak' with init" - процедура виконання бекапу бази даних з ім'ям "krjymtest" в папку на сервері і перейменування цього бекапу в krjymtest.bak
    • "c:\Program Files\7-zip\7z.exe" a - архівування бази даних і папки з файлами
    • copy %DIR_BACKUP% - копіювання створених архівів на мережний ресурс

    Ось в принципі і все! Зберігаємо файл під ім'ям, наприклад, Backup-1C.bat

    Тепер потрібно запустити планувальник завдань на сервері, і додати в нього завдання на запуск бекапа. Як це зробити дивись нижче в скріншотах


    бэкап базы 1с 7.7 7бекап бази 1с 7.7 7
    бэкап базы 1с 7.7 8бекап бази 1с 7.7 8
    бэкап базы 1с 7.7 9бекап бази 1с 7.7 9
    бэкап базы 1с 7.7 10бекап бази 1с 7.7 10
    бэкап базы 1с 7.7 11бекап бази 1с 7.7 11
    бэкап базы 1с 7.7 12бекап бази 1с 7.7 12
    бэкап базы 1с 7.7 13бекап бази 1с 7.7 13


    Варто пам'ятати! Важливо не тільки вчасно робити бекапи бази даних і файлів програми, але і періодично перевіряти ці бекапи на працездатність. Я планую перевіряти їх раз на тиждень.