Форум A4on.TV и ПО "Атирра"
Программный продукт "Атирра" => Дополнения => Тема начата: Шумко Дмитрий от Декабря 11, 2009, 16:07:47
-
Утилита создания резервной копии базы данных FIREBIRD
возможен запуск из планировщика заданий
http://www.atirra.com/files/BACKUP.exe
-
Для резервного копирования я использую на мой взгляд очень удобную безплатную программу Cobian Backup 9 (http://www.cobiansoft.com/cobianbackup.htm)
-
Спасибо patibus мне она больше понравилась :)
-
Планировщик задач для Firebird/Interbase (http://www.xstarter.com/rus/firebird-interbase-job-scheduler.html)
Программа позволяет:
- Выполнять задачи по расписанию и событиям
- Каждая задача может состоять из произвольного количества действий
- В действиях можно выполнять SQL скрипты, делать backup/restore базы данных
- Производить операции обслуживания базы данных (Validate,Sweep и т.д.)
- Запускать задачи при получении сигналов из базы данных по команде POST_EVENT.
- Отправлять оповещения о выполненных работах
- Создавать резервные копии
- Синхронизировать каталоги
- И многое-многое другое
http://www.xstarter.com/rus/firebird-interbase-job-scheduler.html
-
Приведу свой пример бэкапа для linux сервера,
#!/bin/bash
### path to bases ########
db_dir=/opt/firebird/base
### path to gbak ########
fb_dir=/opt/firebird/bin
### path to log ##########
log=/var/log/fb_backup.log
### firebird init script #
fb_init=/etc/init.d/xinetd
### access ###############
user=SYSDBA
pass=masterkey
##########################
b_date=`date +%F`
b_time=`date +%H-%M-%S`
case "$2" in
backup)
$fb_init stop
sleep 3
echo "********************************************************************** *****************" >> $log
echo "$b_time $b_date Run $1 database backup and clean" >> $log
$fb_dir/gbak -g -B -USER $user -PAS $pass $db_dir/$1.fdb $db_dir/$1.fbk &>> $log
if [ $? -eq 0 ]
then
$fb_dir/gbak -REP -USER $user -PAS $pass $db_dir/$1.fbk $db_dir/$1.fdb &>> $log
chown firebird.firebird $db_dir/$1.fdb &>> $log
$fb_init start
tar cvjf $db_dir/$1-$b_date-$b_time.tar.bz2 -C $db_dir/ $1.fbk &>> $log
rm -f $db_dir/$1.fbk
fi
echo "$b_time $b_date The End" >> $log
exit 0
;;
*)
echo "Usage: basename backup" >&2
exit 13
;;
Скрипт запускается так:
fb_backup название_базы backup
Firebird во время бэкапа останавливаю - чтоб не сработали локи, помимо бекапа сразу делается чистка от мусора и восстановление базы. Выполняется раз в сутки ночью. Все базы прописаны через алиасы
Пример запуска для крона:
### backup databases #######################################################
00 3 * * * root /opt/admin/fb_backup base1 backup
00 3 * * * root /opt/admin/fb_backup base2 backup
-
Спасибо, возьмем на заметку. Вот мой вариант. Я делаю без остановки сервера. Правда и без чистки.
#!/bin/sh
# Скрипт для ежечасного резервного копирования БД Firebird.
# В результате работы получаем полные сжатые копии БД
# с автоматической недельной ротацией (24*7).
ARCHIV=tv4 # имя архива
DB=localhost:TV # полный путь и имя файла базы данных
# или адрес_сервера:алиас
BACKUPDIR=/home/archiv/firebird # где храним резервные копии
DOW=`date +%u` # День недели (1..7), 1 обозначает понедельник
HOUR=`date +%H` # Час (00..23)
gbak -b -se localhost:service_mgr $DB $BACKUPDIR/$ARCHIV-$DOW-$HOUR.fbk -user SYSDBA -pass masterkey
exit 0
-
Извините. Разжуйте пожалуйста для "особо одаренных" как пользоваться программой backup. Она резервирует разово или постоянно? Куда резервирует? Как восстанавливать базу если что? Можно ли базу тупо скопировать ручками (какой файл?), а при переустановке системы подсунуть эти файлы?
-
Резервное копирование и восстановление из копии является одним из
самых важных процессов в администрировании базы данных FireBird.
Резервное копирование - один из самых надежных способов сохранить и
предохранить свои данные от потери или порчи. Процесс резервного
копирования также делается в профилактических целях, для увеличения
производительности базы данных - это достигается за счет того, что в
момент копирования происходит считывание последних версий всех
записей, старые же версии в копию никогда не попадают. Здесь важно
заметить, что недостаточно одного лишь резеврного копирования, нужно
иногда проверять восстанавливаемость базы данных из резеверной копии,
потому что бывают случаи, что база данных работает в режиме 24*7, то
есть 24 часа в сутки и 7 дней в неделю, backup базы данных может
происходит нормально, но в силу определенных причин база данных не
восстанавливается, последствия могут быть плачевными для всех данных.
Причины могут следующими: в базе данных есть ограничения, такие как
NOT NULL поля, внешние ключи, уникальность, а существующие данные в
базе данных этим ограничениям не соответствуют по каким-либо причинам.
Такие данные могут мирно существовать до тех пор, пока они не будут
задействованы в операциях редактирования или удаления. В процессе
восстановления <<прощупываются>> все данные - в первую очередь
создаются ограничения и затем заливаются данные, в этот момент и
происходит ошибка. Для профилактики следует восстанавливать базу
данных в тестовую, и лишь при успешном завершении процесса
восстановления, делать Restore в текущую базу. В случае возникновения
ситуации с поврежденным файлом backup'а следует найти в базе данных
несоответствия и исправить их.
Утилита gbak с соответствующими ключами позволяет совершать
резервирование и восстановление базы данных, синтаксис выполнения
операций следующий:
Резервирование
gbak [-B] [ключи] файл_базы_данных файл_резервной_копии
Значение ключей:
-g не собирать мусор во время резервного копирования;
-l игнорировать лимбо-транзакции;
-m резервирование только метаданных;
-user имя пользователя;
-password пароль пользователя;
-v показать протоколирование во время выполнения процесса;
-z показать версию gbak.
Пример:
gbak -b -user SYSDBA -password masterkey C:workwork.gdb C:workwork.gbk
Восстановление
gbak [-R/-С] [ключи] файл_базы_данных файл_резервной_копии
Ключи:
-R восстановление базы данных в уже существующий файл;
-С восстановление базы данных в новый файл, если файл уже существует,
то процесс будет прерван с ошибкой;
-p размер страницы (1024,2048,4196 или 8192). По умолчанию 1024;
Пример:
gbak -R -user SYSDBA -password masterkey C:workwork.gbk C:workwork.gdb
Следует отметить один нюанс, если запустить утилиту gbak без ключа -B
или -R/-C, то будет начат процесс резервного копирования базы данных.
Подробное описание gbak Утилита GBAK Firebird (http://www.ibase.ru/devinfo/gbak.htm)
вот еще тема о создании резервных копий с помощью gbak Резервное копирование FireBird (http://forum.ru-board.com/topic.cgi?forum=8&topic=29612&start=0)
Извините. Разжуйте пожалуйста для "особо одаренных" как пользоваться программой backup. Она резервирует разово или постоянно? Куда резервирует? Как восстанавливать базу если что? Можно ли базу тупо скопировать ручками (какой файл?), а при переустановке системы подсунуть эти файлы?
Возможно простое копирование файла базы данных, но для этого нужно чтоб никто не работал с ПО, что не всегда возможно, GBAK можно запускать в любой момент времени, на работу пользователей это не влияет.
-
Т.е. пока не наберёмся ума можно просто копировать файл ATIRRA_DB.FDB? Из программы надо выходить или достаточно в ней не работать в это время? И ещё. Объясните тайный смысл резервного копирования Файл/Администрирование/Обслуживание сервера. Там создается некий промежуточный файл, из которого потом восстанавливается база. В этом файле сохраняется больше данных или какие-то дополнительные данные по сравнению с тупым копированием файла базы "ручками"?
-
Можно и простое копирование файла, но необходимо всем выходить из ПО.
Недостаток в этом случае в том, что в базе данных остается "мусор" (старые версии данных).
А резервное копирование через промежуточный файл удаляет всю ненужную информацию,
переиздаются все индексы, проверяется целостность базы данных, что приводит к уменьшению БД
и к увеличению производительности системы в целом.
-
С резервным копированием из самой программы разобрались. Списибо. А вот с планировщиком заданий я не понял. Извините я не программист и в штате такового нет. Можно по буквам... Куда войти, что ввести.
На нашем примере: то, что может наверное понадобиться
1). Win XP SP3;
2). C:\Program Files\Firebird\Firebird_2_1;
3). D:\ATIRRA;
4). E:\Arhiv - допустим место для архивных баз;
Копировать бы желательно хотя бы 1 раз в неделю, но чтобы и предыдущая тоже сохранялась.
Если поможете будем очень признательны
-
В приложении файл. сохраните его в папку d:\ATIRRA\DB\
в файле настройки следующие
Firebird установлен в каталог C:\Program Files\Firebird\Firebird_2_1
ПО Атирра установлено в каталог D:\ATIRRA
Каталог с архивами E:\Arhiv
пароль SYSDBA masterkey
файл создает в каталоге архивов резервную копию с именем файла = имени дня недели
т.е. в архиве у вас будут сохранятся копии только за неделю
Для добавления файла в планировщик заданий зайдите
Панель управления - Назначенные задания - Добавить задание
и добавляете файл d:\ATIRRA\DB\backup.cmd
назначаете время его выполнения и забываете о резервном копировании
-
Большое спасибо. Обязательно попробую
-
Еще одна утилита создание резервной копии базы данных
https://sites.google.com/site/gbakscheduler/ (https://sites.google.com/site/gbakscheduler/)
создание резервных копий по расписанию
упаковка файла резервной копии
отправка файла на ftp
отправка лога ошибок на email
умеет работать и как сервис, и как приложение
-
Приветствую, Дмитрий! Предыдущий вариант отлично работает на 2 ПК, возможно попробую и этот вариант. Спасибо за помощь!
-
Автоматизация резервного копирования и восстановления БД Firebird http://auto-backup-firebird.blogspot.ru/
-
Спасибо за инфо.