Резервное копирование DB через скрипт

Дмитрий Удимов
На сайте с 05.05.2010
Offline
274
548

Делаю резервное копирование БД через SSH последовательным выполнением команд. Захотелось это дело автоматизировать, составил вот такой скрипт copydb.sh:

pass='password'

user='user'
db='db1'
db1='db2'
host='localhost'
sqlfile=$db'_'`date +%Y_%m_%d`'.sql'
sqlfile1=$db1'_'`date +%Y_%m_%d`'.sql'
bdir='/var/www/fruit.fm/tmp'
tgzfile=$db'_'`date +%Y_%m_%d`'.sql.tar.gz'
tgzfile1=$db1'_'`date +%Y_%m_%d`'.sql.tar.gz'
mysqldump --host=$host --user=$user -p$pass --default-character-set=UTF8 $db > $sqlfile
mysqldump --host=$host --user=$user -p$pass --default-character-set=UTF8 $db1 > $sqlfile1
tar -czf $tgzfile $sqlfile
tar -czf $tgzfile1 $sqlfile1
rm $sqlfile
rm $sqlfile1
mv $tgzfile $bdir
mv $tgzfile1 $bdir

Если команды вводить последовательно через Putty, то все работает, но если сохранить это дело в файл copydb.sh и записать на сервер, то при запуске скрипта командой ./copydb.sh, получаю следующю. ошибку:

' (1) when trying to connectUnknown MySQL server host 'localhost

Что делаю не правильно?

Топвизор — аккредитованный регистратор доменов .ru и .рф (https://topvisor.com/ru/domain-registration/) — честная цена 299 руб. за регистрацию и продление.
V
На сайте с 03.12.2007
Offline
94
#1

Похоже ваш скрипт не может установить соединение с сервером. Я использую этот, для резервного копирования всех баз на сервере.

#!/bin/bash
databases=(`echo 'show databases;' | mysql -uuser -p123456 | grep -v ^Database$`)
for d in "${databases[@]}"; do
if [[ $d != 'tmp' && $d != 'test' ]]
then
echo ${d}
mysqldump -uuser -p123456 ${d} > /var/www/backup/mysql_day/${d}.sql
fi
done
tar czf /var/www/backup/mysqldump-`date +%d.%m.%y`.tgz /var/www/backup/mysql_day/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий