Бекап і відновлення бази Interbase / Firebird
Про те, що періодична процедура резервування і подальшого відновлення даних позитивно позначається на розмірі і продуктивності бази даних Interbase / Firebird написано в багатьох FAQ. Абсолютно з цим згоден. Спробую розповісти, як цей процес організований у мене.
В даний час я є адміністратором невеликої бази (приблизно 300Mb), яка досить активно використовується (приблизно 1 мільйон транзакцій в день). При цьому цикл backup / restore здійснюються щодня. Останні пару років серйозних збоїв і поломок бази не спостерігалося.
Для автоматичного резервування і відновлення написаний bat-файл. Використовується утиліта командного рядка gbak і пару програмок власної розробки.
Зазвичай при backup / restore бази необхідно зробити наведене нижче:- Відключити всіх користувачів від бази;
- Якщо все відключені запустити процедуру бекапа в файл BACKUP.GBK;
- Якщо бекап пройшов, то запустити процедуру відновлення BACKUP.GBK в новий файл бази NEW.GDB;
- Якщо відновлення успішно, перейменувати файл робочої бази WORK.GDB в OLD.GDB;
- Якщо перейменування успішно, то перейменувати новий файл NEW.GDB в WORK.GDB;
- Скопіювати BACKUP.GBK на інший диск, а краще на інший комп'ютер, додавши в ім'я файлу дату і час бекапа.
Тепер докладніше по кроках.
Крок 1. Вигнати користувачів з бази можна по хорошому, закривши всі програми працюють з базою. Щоб дізнатися чи є підключення користувачі і хто вони, я написав утиліту IbCheck.exe. Приклад виклику: IbCheck
if errorlevel 1 goto exit1
- WORK.GDB - повний шлях до робочої базі даних;
- USER_IB - ім'я користувача Interbase / Firebird, зазвичай це SYSDBA або творець бази;
- PASSWORD_IB - пароль користувача.
if errorlevel 1 goto exit1 ключі:
- -shut -force - форсований режим відключення;
- 10 - чекаємо 10 секунд відключення користувачів, потім відрубуємо.
if errorlevel 1 goto exit2 ключі:
- -b - робити бекап;
- -g - Чи не маєте наміру сміття, дуже корисний ключ може значно скоротити час бекапа;
- -v - виводити лог операцій, ну просто приємно коли написи біжать по екрану.
if errorlevel 1 goto exit3 ключі:
- -r - відновлюємо базу;
- -v - виводити лог операцій.
Крок 4. Перейменовуємо робочу WORK.GDB базу в OLD.GDB. Не забуваємо спочатку видалити OLD.GDB, цей файл залишився з минулого бекапа! del
ren
if errorlevel 1 goto exit4
Крок 5. Перейменовуємо тільки що відновлену базу NEW.GDB в WORK.GDB ren
if errorlevel 1 goto exit5
До речі, можна відразу стискати бекап файл якихось архиватором. Але це вже інша історія.
Як бачите все досить просто.
А на закінчення пропоную бажаючим bat-файл і утиліти з вихідними текстами: br.bat - bat-файл для автоматичного backup / restore. Всі назви баз, шляхи, паролі і т. Д. Налаштовуються. Скрипт потрібно запускати на тій же машині, де знаходиться база даних. Утиліти IbCheck і InsDatew краще покласти поруч з bat-файлом.
IbCheck - консольна утиліта перевірки підключених користувачів (163K; з вихідним кодом на Delphi).
InsDateW - консольна утиліта вставки дати і часу в змінні оточення (28.2K; з вихідним кодом на Delphi).
Будь ласка, оцініть статтю