Дамп базы: что надо куда надо
??мелся сервер БД. Возникло 2 проблемы:
1. Нужно создавать дамп на другую машину, так как при падении есть шанс потерять и базу, и дамп.
2. Нужно дампить всё, кроме одной таблицы. В ней википедия, которая огромна и меняется нечасто, и легко восстанавливается при сбое.
1. Пишем скрипт
header('Content-type: application/x-tar');
header('Content-Disposition: attachment; filename="dump-'.date('Y-m-d-H-i-s').'.sql.bz2"');
passthru('mysqldump --user=dumper --password=dumperpassword --all-databases --ignore-table=wiki.wiki --single-transaction | bzip2 -czv -7');
2. Создаём пользователя dumper с привилегиями
SELECT, SHOW DATABASES, LOCK TABLES, SHOW VIEW
??з соображений безопасности не разрешаем ему ничего менять.
3. На другой машине в crontab добавляем удалённый вызов этого скрипта
7 7 * * * wget http://server/secret-script.php
4. Меняем для себя пароль для dumper и имя секретного скрипта. Пользуемся
admin
20/10/2012
#!/bin/sh
d=`date +%F-%H-%M-%S`
s=`mysql –user=dumper –password=dumperpassword –batch –skip-column-names -e «SHOW DATABASES;» | grep -v wiki3g | grep -v schema`
for i in $s; do
echo $i
mysqldump –user=dumper –password=dumperpassword $i | bzip2 -czv > $i.$d.sql.bz2
sleep 1
done
admin
20/10/2012
#!/bin/sh
for i in $1/*; do
tar -cvjf $i.`date +%F-%H-%M-%S`.tar.bz2 $i/
done