====== Настройка бекапа ====== ===== создание локального бекапа ===== cd /var/ sudo mkdir backup Создаем скрипт для бекапа cd /db sudo nano autobackup #!/bin/bash PATH=/opt/firebird/bin:${PATH} bkpath=/var/backup export ISC_USER=SYSDBA export ISC_PASSWORD=sysdba #backup curdate=`date +%F` echo `date` start backuping data gbak -B -G -se service_mgr localhost:ac $bkpath/ac_$curdate.fbk echo `date +%X` backup successfully echo `date +%X` compressing gzip -f $bkpath/ac_$curdate.fbk echo `date +%X` compress ok #delete old file exclude *1 filecount=`ls -d1 $bkpath/ac_*.fbk.gz | grep -v 1.fbk | wc -l` if (( $filecount > 5 )) then let "deletecount=$filecount-5" echo remove old $deletecount files ls -d1 $bkpath/ac_*.fbk.gz | grep -v 1.fbk | head -$deletecount | xargs rm fi #delete old file more 20 filecount=`ls -d1 $bkpath/ac_*.fbk.gz | wc -l` if (( $filecount > 20 )) then let "deletecount=$filecount-20" echo remove old $deletecount files ls -d1 $bkpath/ac_*.fbk.gz | head -$deletecount | xargs rm fi #sweep echo `date +%X` start sweep gfix -sweep localhost:ac echo `date +%X` sweep ok #clear export ISC_USER= export ISC_PASSWORD= Права на запуск sudo chmod +x autobackup добавляем его в планировщик крон sudo crontab -e добавляем 00 02 * * * /db/autobackup >> /var/backup/autobackup.log ===== настройка удаленного бекапа ===== (делать после настройки локального бекапа) открываем доступ по веб к папке бекапа с определеного ИП sudo nano /etc/apache2/sites-enabled/w80 добавляем следущие строчки поменяв ИП на ИП машины где будет хранится удаленый бекап Alias /db/ "/opt/acbase/backup/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 192.168.0.102/255.255.255.255 перезапускаем апач sudo /etc/init.d/apache2 force-reload проверяем на удаленой машине wget http://192.168.0.100/db/ac_2007-05-06.fbk.gz на удаленой машине в папке /opt/acbackup создаем скрипт get_backup.sh sudo nano get_backup.sh #!/bin/bash bkpath=/backup curdate=`date +%F` echo `date` start get backup cd $bkpath wget http://192.168.0.100/db/ac_$curdate.fbk.gz #можно использовать scp #scp park@192.168.0.10:/opt/acbase/backup/ac_$curdate.fbk.gz $bkpath echo `date +%X` getting backup successfully #delete old file exclude *1 filecount=`ls -d1 $bkpath/ac_*.fbk.gz | grep -v 1.fbk | wc -l` if (( $filecount > 5 )) then let "deletecount=$filecount-5" echo remove old $deletecount files ls -d1 $bkpath/ac_*.fbk.gz | grep -v 1.fbk | head -$deletecount | xargs rm fi #delete old file more 20 filecount=`ls -d1 $bkpath/ac_*.fbk.gz | wc -l` if (( $filecount > 20 )) then let "deletecount=$filecount-20" echo remove old $deletecount files ls -d1 $bkpath/ac_*.fbk.gz | head -$deletecount | xargs rm fi делаем запускаемым sudo chmod +x get_backup.sh запускаем, проверяем что скачал ставим в расписание на ~ час позже sudo crontab -e 00 03 * * * /opt/acbackup/get_backup.sh >> /opt/acbackup/get_backup.log ===== создание теневой копии ===== ==== делаем зеркальную копию винта ==== лучше всего загрузится с CD и сделать от туда, но можно ручками сравниваем разделы смотрим первый диск sudo fdisk /dev/sda >p Диск /dev/sda: 160.0 ГБ, 160041885696 байт смотрим второй диск sudo fdisk /dev/sdb >p Диск /dev/sdb: 160.0 ГБ, 160041885696 байт разделы совпадают все хорошо копируем sudo dd if=/dev/sda of=/dev/sdb чтоб узнать прогресс в другом терминале ps ax | grep "dd if" смотрим полученный PID выполняем sudo kill -USR1 28210 в первом терминале получаем что-то вроде 7212265+0 записей считано 7212265+0 записей написано скопировано 3692679680 байт (3,7 GB), 218,853 секунд, 16,9 MB/s по окончанию в первом терминале будет что-то вроде 254151904+0 записей считано 254151904+0 записей написано скопировано 130125774848 байт (130 GB), 7754,6 секунд, 16,8 MB/s после этого потребуется перезагрузка для пересчитывания разделов sudo reboot ==== Монтируем зеркало ==== создаем папку sudo mkdir /media/zerkalo sudo mount /dev/sdb1 /media/zerkalo проверяем ls /media/zerkalo/opt/acbase/ должен показать те же файлики что и /opt/acbase/ отмонтируем sudo umount /media/zerkalo делаем автомонтирование sudo nano /etc/fstab добавляем # зеркало /dev/sdb1 /media/zerkalo ext3 defaults,errors=remount-ro 0 1 проверяем ls /media/zerkalo/opt/acbase/ должна быть ошибка потом sudo mount -a еще раз проверяем ls /media/zerkalo/opt/acbase/ удаляем все что там есть, чтоб не было проблем в случае случайной загрузки не с того винта sudo rm -Rf /media/zerkalo/opt/acbase/* ==== создание shadow copy ==== /opt/firebird/bin/isql SQL> connect localhost:ac user sysdba password sysdba; SQL> create shadow 1 '/media/zerkalo/opt/acbase/ac.sdb'; проверка SQL> SHOW DATABASE; Database: localhost:ac Owner: SYSDBA Shadow 1: "/media/zerkalo/opt/firebird/base/ac.sdb" auto PAGE_SIZE 4096 Number of DB pages allocated = 27793 Sweep interval = 20000 Forced Writes are ON Transaction - oldest = 410077 Transaction - oldest active = 410078 Transaction - oldest snapshot = 410078 Transaction - Next = 410088 ODS = 11.0 Default Character set: WIN1251 выходим SQL> exit; перезагружаемся проверяем все еще раз (ls and SHOW DATABASE) !!!!!!!!!!!!!!!!!!!!! ==== восстановление ==== убираем сгоревший винт, втыкиваем на его место зеркало, отключаемся от сети! включаем, возможно нужно будет переставить загрузчик после загрузки проверяем имя\ИП останавливаем птичку sudo /etc/init.d/firebird stop sudo /etc/init.d/firebird shutdown стартуем птичку или перегружаемся sudo /etc/init.d/firebird start оживляем зеркало ./gfix -a /opt/acbase/ac.sdb user sysdba password sysdba копируем на место рабочей sudo cp /opt/firebird/base/ac.sdb /opt/firebird/base/ac.fdb восстанавливаем права! chown fireberd:firebird ac.fdb молимся, может перегружаемся пробуем локально подключится (модулем управления) подключаем сеть, работаем, идем за пивом и новым винтом ==== перевостановление ==== скрипт бекап-ресторе, теоритически можно запускать без присмотра, но лучше приглядывать #!/bin/bash PATH=/opt/firebird/bin:${PATH} # оригинальная бд base_o=/db/ac.fdb # имя для сохранения БД base_b=/db/ac_b.fdb # сам бекап bk=/db/ac.fbk export ISC_USER=SYSDBA export ISC_PASSWORD=sysdba echo `date` rename gfix -shut -force 0 $base_o /bin/sleep 30 mv $base_o $base_b echo `date` start backuping data gbak -B -G -se service_mgr $base_b $bk echo `date +%X` backup successfully gbak -C -se service_mgr $bk 127.0.0.1:$base_o echo `date +%X` restore ok #gfix -online -user SYSDBA -password masterkey $base_o #clear export ISC_USER= export ISC_PASSWORD= ==== версия под докер с рестиком ==== https://wiki.infoparkpro.ru/doku.php?id=ac:restic