Копії бази і відновлення
Копія, з якої ніхто не пробував відновитись, — це не копія, а надія. Як зробити, перевірити й повернути базу клубу.
Що всередині бази
Один файл club.db — це весь ваш клуб: чеки, зміни, гроші на рахунках гравців, абонементи,
тарифи, журнал дій. Втратити його — це не «перевстановити програму», це втратити рахунки
клієнтів і не мати чим довести, хто скільки вносив.
Копії робляться самі
Щоночі, о призначеній годині (типово 5:00 за часом клубу). Якщо ПК уночі був вимкнений — копія зробиться при першій нагоді, коли останній копії більше доби. Тобто клуб, який вимикає сервер на ніч, копії все одно має.
Зберігаються останні 14 копій, старші прибираються самі, щоб диск не заповнився.
Подивитись і зробити копію просто зараз — вкладка Власник, блок над журналом дій: там видно дату й розмір останньої копії, скільки їх усього, у якій вони теці, і є кнопка «зробити копію».
Кожна копія одразу перевіряється
Одразу після створення сервер відкриває копію і рахує в ній проводки. Якщо файл битий — ви дізнаєтесь про це в день створення, а не в день аварії. Запис іде в журнал дій як «Копія бази ПОШКОДЖЕНА».
Це не формальність. Найпоширеніший спосіб втратити клуб — мати теку з копіями, жодну з яких ніхто ніколи не відкривав.
Друга копія — поза диском сервера
Копія на тому ж диску не рятує від того, від чого рятують копії: смерті диска, шифрувальника, украденого системника.
У налаштуваннях є BackupOffsitePath — тека, куди лягає друга копія: мережева тека, флешка,
синхронізована хмарна тека. Там теж прибирається старе, щоб флешка мовчки не заповнилась.
Якщо тека недоступна (флешку витягли, мережа лягла) — це не мовчазний пропуск: у журналі зʼявиться «Копію НЕ винесено за межі сервера», і власник знає, що сьогодні другої копії немає.
Відновлення
Не імпровізація о третій ночі, а одна команда. На ПК сервера, від адміністратора:
powershell -ExecutionPolicy Bypass -File C:\CordArena\Club\restore-club.ps1
Без параметрів він просто покаже список копій — розмір і дату кожної. Потім:
powershell -ExecutionPolicy Bypass -File C:\CordArena\Club\restore-club.ps1 -Backup club-20260909-040000.db
Що робить скрипт по кроках:
- Перевіряє обрану копію — ще до того, як чіпати робочу базу.
- Зупиняє службу і чекає, поки файл бази справді звільниться (Windows звітує «служба зупинена» раніше, ніж процес віддає файл — на цьому падає ручне копіювання).
- Відкладає поточну базу вбік із міткою часу — нічого не видаляє. Раптом свіжіша ціліша.
- Кладе копію на місце і піднімає службу.
- Перевіряє, що сервер відповідає.
Якщо на будь-якому кроці щось піде не так — скрипт поверне все як було і скаже про це. Клуб не лишиться без бази через невдале відновлення.
Після відновлення перевірте три речі
- відкрийте дашборд і подивіться останні операції каси — вони мають виглядати знайомо;
- переконайтесь, що машини повернулись на звʼязок;
- не видаляйте відкладену стару базу (
club.db.before-restore-…) кілька днів.
Що ви втрачаєте при відновленні
Усе, що сталося після копії: чеки, сесії, поповнення того дня. Тому якщо аварія трапилась серед дня, перш ніж відновлюватись — спробуйте зберегти поточний файл бази: саме він, а не копія, містить сьогоднішній день.
Перевірте це заздалегідь
Раз на кілька місяців варто справді відновитись із копії — на запасному ПК, не на бойовому. П’ять хвилин у спокійний день коштують дешевше, ніж перша спроба в ніч аварії.