Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Материал подаётся как универсальный подход.Честно говоря, я никак не пойму, что именно Вам не понравилось:
сократить время блокирования проекта для бакапа до нескольких секунд
Например, задача бакапа базы перехватывает первый этап, чтобы заблокировать MySQL на время архивации файлов в /var/lib/mysql/
где Вы контролируете все SQL-запросы, и можете их подобрать так, чтобы на них реплика не глючила)
Из log-bin ничего восстанавливать не надо. Такое ощущение, что вы все таки не до конца понимаете, как работает репликация.Я просто говорил о другой ситуации — когда MySQL сервер один, никаких slave-ов нет. И log-bin на этом сервере включается исключительно с целью бэкапить эти логи вместо самой базы — ведь во многих случаях они будут занимать меньше места, для их бэкапа не потребуется лочить MySQL, и их очень просто бэкапить инкрементально. А при необходимости восстановить базу из бэкапа — воспользоваться для этого этими логами. (Насколько я понимаю, в принципе можно даже отконвертировать log-bin в обычный .sql-файл.)
#!/bin/sh
# Описываем базовые директории
BACKUP="/srv/backup/"
TEMP="/srv/backup/temp" #Папка удаляется после выполнения скрипта !
PREFIX=`hostname -s`_`date +%d.%m.%y-%H:%M`
# Описываем папки backupов
# Файлы системы
ETC="$TEMP/etc/"
# Файлы сервера
WWW="$TEMP/www/"
VMAIL="$TEMP/vmail/"
MYSQL="$TEMP/mysql/"
# Создаем необходимые папки
mkdir $TEMP
#mkdir $ETC
mkdir $WWW
mkdir $VMAIL
mkdir $MYSQL
# Копируем файлы в созданые папки
#cp -r /etc/ $ETC
cp -r /srv/www/www.*.ru/ $WWW
cp -r /srv/www/mail.*.ru/ $WWW
cp -r /srv/www/workflow.*.ru/ $WWW
cp -r /srv/vmail/* $VMAIL
# Бэкапим mysql базы
mysqldump -ubackup -P3306 -hlocalhost -p[pass] mail > $MYSQL/mail.sql
mysqldump -ubackup -P3306 -hlocalhost -p[pass] webmail > $MYSQL/webmail.sql
# Переходим в каталог с копиями
cd $TEMP
# Создаем архив
tar -czvf /srv/backup/data/$PREFIX.tar.gz *
# Очищаем папку temp
rm -rf $TEMPcp -r писал cp -rp;mysqldump я бы еще натравил bzip2;tar вместо -z я бы писал -y (-j);tar напускал бы сразу на оригинал.2) лочим mysql, nginx и postfix останавливаемЭтот способ хорош если у Вас сервисы избыточные — т. е. после остановки nginx на первом сервере ваш сайт продолжит поддерживать в рабочем состоянии второй сервер. И наоборот при бэкапе второго сервера.
dar — продвинутая версия tar, делает инкрементальные бэкапы, причём первую копию можно удалить, оставив от неё только метаинформацию.tar это тоже умеет. Собственно, именно таким образом я его и использую.
good, reliable backups require forethought, effort and planningИ я о том же. Если бэкапить не особо вникая что и как — можно оказаться у разбитого (или, как минимум, серьёзно треснувшего) корыта после восстановления их таких бэкапов.
A backup is more than dataIMHO необходимость поддержки разнообразных расширенных атрибутов и дырявых (sparse) файлов зависит от конкретных условий. Например, я использую расширенные атрибуты только для пометки самих бэкапов неизменяемыми (immutable), ACL вообще нет, а дырявые файлы делают только p2p-качалки — в таких условиях поддержка этих метаданных не нужна.
I recommend you stay away from tar.Я думаю, с этой рекомендацией он погорячился. Фактически его претензии к tar сводятся к необходимости указывать параметр -p при восстановлении бэкапа. Совет использовать --numeric-owner на самом деле корректен только при условии восстановления бэкапа полной системы, а для восстановления отдельных частей (база MySQL, например) да ещё и на другой системе это абсолютно некорректно.
Backup — дело тонкое