Перевел сайт с Винды на ФРИБСД
на винде имел привычку раз в неделю ночью делать резервную копию сайта
резервация делалась элементарно при помощи Планировщика задач и батника:
"Z:\Stop.exe
ping 127.0.0.1 -n 5
"C:\Program Files (x86)\winrar\rar.exe" a -m1 -rr "c:\зte%.rar" "C:\Topserver"
Z:\Run.exe
copy "c:\зte%.rar" D:\WEB_Rescue\
del c:\зte%.rar -p"стоплю апач и mysql
делаю задержку на закрытие задач
даю команду на архивирование веб сервера и базы данных (название архива соответствует дате)
копирую архив в специальную папку,
зачищаю временные файлы-----------------------------
как наварнякать что-нибуть подобное для Фри?
или может у Гуру есть лучшие методы резервирования, все таки ось не мастдай?
>[оверквотинг удален]
>делаю задержку на закрытие задач
>даю команду на архивирование веб сервера и базы данных (название архива соответствует
>дате)
>копирую архив в специальную папку,
>зачищаю временные файлы
>
>-----------------------------
>как наварнякать что-нибуть подобное для Фри?
>или может у Гуру есть лучшие методы резервирования, все таки ось не
>мастдай?1. crontab
2. mysqldump
>
>1. crontab
>2. mysqldump+ rsync, tar, gzip (bzip2)
А зачем сервисы останавливать?
Если не ошибаюсь, для freebsd есть снапшоты, поищи в хендбуке.
Ну а если традиционно, то вместо остановки мускула отдаем запрос flush tables with read lock, копируем при помощи rsync(если нужна всего одна копия) или tar(если нужны копии по датам) и отдаем запрос unlock tables. Если делается копия только сайта, а не БД, то никаких операций с мускулом не нужно, апач в любом случае останавливать не надо.
Импорт/экспорт данных из MySQLДля создания резервной копии базы MySQL и переноса её на другой сервер используется утилита mysqldump. Данная утилита позволяет получить SQL-скрипт (дамп базы), с помощью которого на другом сервере можно полностью восстановить базу данных (таблицы и данные в них).
Для того, чтобы создать дамп базы, можно использовать такую команду:
mysqldump -u<логин1> -p -h<хост1> -P<порт1> <база1> > database.sql
После выполнения этой команды в файле database.sql и будет дамп базы данных. Этот файл Вы можете копировать и переносить на другие серверы, где восстановить структуру и содержание базы.
Восстановить базу из дампа можно вот так:
mysql -u<логин2> -p -h<хост2> -P<порт2> <база2> < database.sql
© host.ru
Это лишь один из способов, причем самый медленный.
>[оверквотинг удален]
>После выполнения этой команды в файле database.sql и будет дамп базы данных.
>Этот файл Вы можете копировать и переносить на другие серверы, где
>восстановить структуру и содержание базы.
>
>Восстановить базу из дампа можно вот так:
>
>mysql -u<логин2> -p -h<хост2> -P<порт2> <база2> < database.sql
>
>
>© host.ruавтоматизировать этот процесс можно?
пароль к базе в строке же не задаеться, видать, система попросит его ввести вручную?
>автоматизировать этот процесс можно?
>пароль к базе в строке же не задаеться, видать, система попросит его
>ввести вручную?Нужно маны посмотреть. Наверняка можно с каким нибуть ключем и пароль вписать
или сохранить его в конфиге или авторизовывться через login:pass@host ...
Можно и в строке указать.
Вот только подумайте нужен ли вам именно sql дамп или все таки копия бинарных файлов. Последнее получается в разы быстрее, но если используется Innodb, то восстанавливать можно будет только целиком, а не по-таблично.
>Можно и в строке указать.
>Вот только подумайте нужен ли вам именно sql дамп или все таки
>копия бинарных файлов.из бинарных файлов можно както восстановить базу данных сайта ?
Естественно. Никакой особой магии в хранении данных в мускуле на MyISAM таблицах нет. Для каждой базы создается отдельный каталог, для каждой таблицы в этой базе три файла:
имя_таблицы.FRM - это описание структуры таблицы
имя_таблицы.MYD - это собственно данные
имя_таблицы.MYI - это индексы, потеря данного файла не так критична как двух других, так как индексы можно перестроить.
Соответственно если нужно восстановить какую либо таблицу просто перезаписываем соответствующие ей три файлы из бэкапа. Если базу целиком, то копируем всю папку. При желании можно вообще таблицу из одной базы перенести в другую простым копированием файлов.
Для InnoDB это однако не работает, там все данные из всех таблиц хранятся в одном файле(при желании его можно разбить на несколько, но сути это не меняет). Так что восстановление этого файла означает откат всех InnoDB таблиц во всех базах.Не забывайте что бинарные данные можно копировать только после FLUSH TABLES WITH READ LOCK ну или останова сервера, без этого высокий шанс получить некорректную копию. Также для ускорения копирования можно задуматься об использовании снапшотов LVM, в таком случае время простоя даже очень большой базы минимально.
Автоматизировать?...===================================================================
#!/bin/bash
#
DATE=`date +.%m.%d.%H`
BACKUP_DIR='/media/backup'
HOST=`hostname`
ADMIN="root"
PASWSWORD="my_password"
DATABASES="mysql nuke bb"
OPTION="--single-transaction --databases $DATABASES"
#OPTION="--all-databases"mkdir -p ${BACKUP_DIR}/mysql
mysqldump -R -q $OPTION -p$PASWSWORD > ${BACKUP_DIR}/mysql/$HOST$DATE.sql
rm ${BACKUP_DIR}mysql/$HOST$DATE.sql.gz > /dev/null 2>&1
gzip -9 ${BACKUP_DIR}/mysql/$HOST$DATE.sql > /dev/null 2>&1
exit 1
===================================================================