Резервные копии (MySQL)
 

Итак, краткий пример как самому можно быстро организовать бакап базы данных не сервере, ну и соответственно не зависить от хостера, бакапит он или нет.

Ниже приведен пример скрипта который и занимается этой черной работой. Сразу же предупреждаю, что скрипт бакапит только те базы, до которых он имеет права доступа, и если вы внесли "чужие" базы, то они не будут сохранены. 

/*   начало скрипта  sql-backup.sh  */
#!/bin/sh

FN=`/bin/date +%Y-%m-%d`
BK_DIR='/home/user_name/backup_dir/'
PARAM='--quote-names --add-drop-table -udb_login -pdb_pass'

cd ${BK_DIR}
/opt/mysql/bin/mysqldump ${PARAM} vadim_db1 > vadim_db1.sql
/opt/mysql/bin/mysqldump ${PARAM} vadim_db2 > vadim_db2.sql

tar -cvf ${BK_DIR}/sql-${FN}.tar *.sql
gzip ${BK_DIR}/sql-${FN}.tar
chmod 600 ${BK_DIR}sql-${FN}.tar.gz

rm *.sql
/*   конец скрипта */

Настройка скрипта делается очень просто:

BK_DIR='/home/user_name/backup_dir/' - тут вы должны указать, в какую директорию складывать бакап. Эта директория уже должна быть созданна.

PARAM='--quote-names --add-drop-table -udb_login -pdb_pass' - замените db_login и db_pass соответственно на ваши логин и пароль к базе данных (этот аккаунт должен иметь права select к тем базам, которые вы собираетесь бакапить.)

/opt/mysql/bin/mysqldump ${PARAM} vadim_db1 > vadim_db1.sql - где vadim_db1 это имя базы каторую бакапим.  Если у вас MySQL проинсталлирован не в /opt/mysql , то замените /opt/mysql/bin/mysqldump на ваш путь к mysqldump.

Сохраните файл и выставите на него chmod 700 , тем самым защитив его содержимое от посторонних глаз.

Все, работа сделана, теперь можно запускать ./sql-backup.sh
Если вы все настроили правильно, то в /home/user_name/backup_dir/ должен появится файл с содержимым ваших баз. Иначе смотрите конфигурацию скрипта заново.

 
Автор: Vadim Kravciuk
 
Оригинал статьи: http://woweb.ru/publ/41-1-0-264