Вед-дев, Сео, Манимейкинг

Бэкап баз данных сайтов bash

Второй скрипт для создания дампов БД. Очень похож на мой первый скрипт =)

#!/bin/bash

logs="$HOME/sitedb_backups/log"

mysql_user="user"
mysql_password="pass"

mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump

tbackups="$HOME/sitedb_backups/today"
ybackups="$HOME/sitedb_backups/yesterday"

echo "`date`" > $logs/backups.log

rm $ybackups/* >> $logs/backups.log
mv $tbackups/* $ybackups/ >> $logs/backups.log

databases=`$mysql --user=$mysql_user -p$mysql_password -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`

for db in $databases ; do
  $mysqldump --force --opt --user=$mysql_user -p$mysql_password $db | gzip > "$tbackups/$db.gz"
  echo -e "\r\nBackup of $db successfull" >> $logs/backups.log
done

mail -s "Your DB backups is ready!" yourmail@gmail.com <<< "Today: "`date`"
DB backups of every site is ready."


exit 0

Т.к. в этом файле будут содержаться важные данные, такие как пароль от пользователя mysql, то лучше создать отдельного юзера специально для бэкапов и дать ему следующие права:

  • SHOW DATABASES
  • SELECT
  • LOCK TABLES
  • RELOAD

Создать пользователя вы можете при помощи PhpMyadmin, войдя под юзером со всеми привелегиями.

Скрипт запускаем по крону. Если вы будете запускать скрипт через

bash script.sh

То по окончанию дампа вы увидите ошибки:

  • mysqldump: Got error: 1142
  • Warning: Skipping the data of table mysql.event.

В них нет ничего страшного. Если вы все же решитесь убрать их, то в гугле есть способы убрать эти сообщения.

Более подробно о командах mysqldump можете прочитать тут:

http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html



Комментарии (0)

Разделы

Подписаться

Подписка на RSS-лента последние записи из Блога

Комменты

  • mokej559 3 дня 19 часов назад
    Hello. And Bye. 
  • andryha v rot mne uho 2 месяца 1 неделя назад
    Ошибка в расположение трех последних ")", так должно быть: 
  • Olzhas 1 год 4 месяца назад
    Спасибо. С Новым Годом! 
  • Den 1 год 5 месяцев назад
    В первой функции, при создании переменной $li_previous нужно поменять '←' с NULL, в $li_next сделать тоже самое. 
  • Гость 1 год 5 месяцев назад
    Если все ровно так как было описано, то нет никаких сомнений что домен увел сам регистратор. Потому что вероятность того 
  • Валерий 1 год 6 месяцев назад
    да можно делать импорт-экспорт только лишь в оболочке на входя на mysql сервер 
  • admin 1 год 6 месяцев назад
    Валерий, а зачем вам именно так делать экспорт? Если я не ошибаюсь, то там нет какой-либо команды чтобы сделать экспорт 
  • Валерий 1 год 6 месяцев назад
    захожу на mysql через ssh по команде  
  • admin 1 год 6 месяцев назад
    Добрый вечер, какой у вас клиент? 
  • Валерий 1 год 6 месяцев назад
    Здравстуйте, есть команда чтобы сделать экспорт базы внутри mysql клиента?