Биллинговая система Nodeny

Главная категория => Общий раздел => Тема начата: Александр (AleksHr) от 10 Декабря 2010, 09:25:43



Название: Не бекапятся базы даных
Отправлено: Александр (AleksHr) от 10 Декабря 2010, 09:25:43
Возникла странная проблема, которую не могу никак розрулить (не знаю в чем дело).

Есть скрипт бекапа для базы данных нодени, я его немного переделал:
Код:
#!/bin/sh
passwd_root_mysql='ххххххххх'
mysql_cmd='/usr/local/bin/mysql'
mysqldump_cmd='/usr/local/bin/mysqldump'

fl=`date "+%d-%m-%Y"`
cd /var/backups/DB
echo show tables | ${mysql_cmd} -u root --password=${passwd_root_mysql} bill | \
  grep -v '^[stuvxyz]2' | grep -v 'traf_info' | grep -v '^Tables' | \
  xargs ${mysqldump_cmd} -R -Q --add-locks -u root --password=${passwd_root_mysql} \
  --default-character-set=cp1251 bill $1 > bill_${fl}.sql
tar -c -z -f bill_${fl}.tar.gz bill_${fl}.sql
rm -f bill_${fl}.sql
chmod 444 bill_${fl}.tar.gz

echo show tables | mysql -u root --password=${passwd_root_mysql} userside | \
  grep -v '^[stuvxyz]2' | grep -v '^Tables' | \
  xargs mysqldump -Q --add-locks -u root --password=${passwd_root_mysql} \
  --default-character-set=cp1251 userside $1 > userside_${fl}.sql
tar -c -z -f userside_${fl}.tar.gz userside_${fl}.sql
rm -f userside_${fl}.sql
chmod 444 userside_${fl}.tar.gz

find . -name \*.tar.gz -mtime +92 -delete

Если запускать руками - все бекапится супер, появляется два архивных файлика с нужной инфой и т.д. - проверил.
НО! Если задание автоматически запускается из /etc/periodic/daily - то создается только один файлик (база билинга), а другая база просто 300 байтовый архив, в котором лежыт пустой sql файл.

Права на файл нормальные, владелец тоже. Почему при запуске руками база бекапится, а в автоматическом режыме нет?
Пробывал даже два разных файла создать в /etc/periodic/daily - один для одной базы, другой для другой - та же самая фигня, в ручном режыме срабатывает, в автоматическом нет.

Просто реально даже не знаю в чем может быть дело, гугль молчит, может кто нить стыкался?


Название: Re: Не бекапятся базы даных
Отправлено: stix от 10 Декабря 2010, 09:36:48
посмотри в /var/log/crond.log
что тебе крон пишет

я бэкаплю одной строчкой )
Код:
/usr/bin/mysqldump bill -u юзербд -pпарольбд | gzip -c > /root/backup/nodeny/`date "+%Y-%m-%d"`-db.gz


Название: Re: Не бекапятся базы даных
Отправлено: Александр (AleksHr) от 10 Декабря 2010, 11:58:53
stimels, у меня БД 35 гб с детализацией за 3 месяца последних, твой подход ппц будет =), смысл детализацию бекапить?)

crond.log такого у меня там нет, как включить детальную запись событий крона?

в /var/log/cron только записть в 3:05 об запуске задач daily и все.

P.S. Скрипт отрабатывает, потому что создается файл архивный, а в нем sql но пустой. Не пойму почему вручную запускаю скрипт - все бекапится, автоматом ну ни в какую. Хотя бы мысли...


Название: Re: Не бекапятся базы даных
Отправлено: 0xbad0c0d3 от 10 Декабря 2010, 12:03:31
Попробуй сделать вывод консоли в файл.
Код:
backupdb.sh &>/kuda/hochesh/lol.log


Название: Re: Не бекапятся базы даных
Отправлено: stix от 10 Декабря 2010, 12:09:09
где-то с правами кривость
проверь права на создания файла и права в директории


Название: Re: Не бекапятся базы даных
Отправлено: Elisium от 10 Декабря 2010, 12:09:31
Никакой "странной" проблемы нет.
Руским по белому же написано:
Цитировать
echo show tables | ${mysql_cmd} -u root --password=${passwd_root_mysql} bill | \
Жирным выделено ВАЖНОЕ.

Если уж делаешь Стрл-С Стрл-В, то уже копируй целиком, без разных "поправок".
Во вторых, для базы Юзерсайда эта строчка совсем не нужна:
Цитировать
grep -v '^[stuvxyz]2' | grep -v '^Tables' | \

Вообщем, можно вторую часть было написать вот так:
Код:
fl=`date "+%d-%m-%Y_%H.%M"`

/usr/local/bin/mysqldump -Q --add-locks -u root --password=${passwd_mysql} \
  --default-character-set=cp1251 userside $1 > us_${fl}.sql
/usr/bin/tar -c -z -f us_${fl}.tar.gz us_${fl}.sql
rm -f us_${fl}.sql
chmod 440 us_${fl}.tar.gz
п.с. это кусок от моего скрипта.

п.п.с. Все дело в том, что системный крон НЕ ищет в папках юср локал .
Код:
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin


Название: Re: Не бекапятся базы даных
Отправлено: Александр (AleksHr) от 10 Декабря 2010, 12:15:59
Elisium большое спасибо, буду пробывать.

P.S. Делал ctrl+v и ctrl+c из старого скрипта бекапа (где учитывались все таблицы), так как сильно не розбираюся в данном коде и спросил здесь.
P.S.S. Уже понял свою ошыбку.

Просьба посмотреть правильно ли все:
Код:
#!/bin/sh
passwd_root_mysql='хххххххххххх'
mysql_cmd='/usr/local/bin/mysql'
mysqldump_cmd='/usr/local/bin/mysqldump'

fl=`date "+%d-%m-%Y"`
cd /var/backups/DB
echo show tables | ${mysql_cmd} -u root --password=${passwd_root_mysql} bill | \
  grep -v '^[stuvxyz]2' | grep -v 'traf_info' | grep -v '^Tables' | \
  xargs ${mysqldump_cmd} -R -Q --add-locks -u root --password=${passwd_root_mysql} \
  --default-character-set=cp1251 bill $1 > bill_${fl}.sql
/usr/bin/tar -c -z -f bill_${fl}.tar.gz bill_${fl}.sql
rm -f bill_${fl}.sql
chmod 444 bill_${fl}.tar.gz

echo show tables | ${mysql_cmd} -u root --password=${passwd_root_mysql} userside | \
  ${mysqldump_cmd} -Q --add-locks -u root --password=${passwd_root_mysql} \
  --default-character-set=cp1251 userside $1 > userside_${fl}.sql
/usr/bin/tar -c -z -f userside_${fl}.tar.gz userside_${fl}.sql
rm -f userside_${fl}.sql
chmod 444 userside_${fl}.tar.gz

find . -name \*.tar.gz -mtime +92 -delete

И нужна ли во втором случае строчка: echo show tables | ${mysql_cmd} -u root --password=${passwd_root_mysql} userside | \ ?
Мне кажется что нет...


Название: Re: Не бекапятся базы даных
Отправлено: Elisium от 10 Декабря 2010, 12:44:00
Не нужна.


Название: Re: Не бекапятся базы даных
Отправлено: gonhik от 17 Августа 2011, 22:51:06
Здравствуете, после запуска данного скрипта видает ошибку (ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))  ??? что делать ? 


Название: Re: Не бекапятся базы даных
Отправлено: Efendy от 17 Августа 2011, 23:38:15
Здравствуете, после запуска данного скрипта видает ошибку (ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))  ??? что делать ? 
подозреваю, что пароль на мускул у тебя не 'хххххххххххх'
Цитировать
passwd_root_mysql='хххххххххххх'