Пока делать было нечего наброслал небольшой скрипт для резервного копирования баз данных из mysql. Прописываете свои настройки и вперед. Опробовано на Fedora. На FreeBSD, Debian и иже с ними будет работать с минимальными исправлениями.
backup.sh
#!/bin/bash
MYSQL_USER='root'
MYSQL_PASSWORD='ваш пароль для root в mysql'
MYSQL='/usr/bin/mysql'
MYSQLDUMP='/usr/bin/mysqldump'
DATE=`date +"%Y.%m.%d"`
PATH='.'
DATABASES=`$MYSQL --user=$MYSQL_USER --password=$MYSQL_PASSWORD -Bse 'show databases'`
/bin/mkdir $PATH/$DATE
/etc/init.d/httpd stop
for db in ${DATABASES[@]}
do
echo $db
$MYSQLDUMP --character-sets-dir=/usr/share/mysql/charsets --set-charset --default-character-set=utf8 --user=$MYSQL_USER --password=$MYSQL_PASSWORD $db --single-transaction -R | /usr/bin/bzip2 -c > $PATH/$DATE/$db.sql.bz2
done
/etc/init.d/httpd start

Вроде как если есть
Вроде как если есть "--single-transaction", то совсем необязательно стопать апач, т.к. в мане пишут вот что:
"It is useful only with transactional tables such as InnoDB, because then it dumps the consistent state of the database at the time when BEGIN was issued without blocking any applications."
Сам я раньше юзал часто MyISAM и по дефолту писал вот такой дампер:
mysqldump --quick --opt --quote-names --host=$dbhost --user=$dbuser --password=$dbpass $dbname | gzip -c > $fn
(дампит только одну БД)
Не все таблицы в innodb, про
Не все таблицы в innodb, про что как раз и написано в мане. Тем более если не стопать апач, то при нагруженном проекте, с кучей ежесекундных апдейтов, очень быстро кончится память (если у нас все идет напрямую в апач) и сервер залагает и подвиснет, или же будем получать 500 ошибку nginx, к чему российские вебмастера уже, видимо, привыкли :)
Отправить комментарий