Биллинговая система Nodeny
21 Сентября 2024, 07:23:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Не бекапятся базы даных  (Прочитано 5927 раз)
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« : 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 - один для одной базы, другой для другой - та же самая фигня, в ручном режыме срабатывает, в автоматическом нет.

Просто реально даже не знаю в чем может быть дело, гугль молчит, может кто нить стыкался?
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #1 : 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
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #2 : 10 Декабря 2010, 11:58:53 »

stimels, у меня БД 35 гб с детализацией за 3 месяца последних, твой подход ппц будет =), смысл детализацию бекапить?)

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

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

P.S. Скрипт отрабатывает, потому что создается файл архивный, а в нем sql но пустой. Не пойму почему вручную запускаю скрипт - все бекапится, автоматом ну ни в какую. Хотя бы мысли...
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #3 : 10 Декабря 2010, 12:03:31 »

Попробуй сделать вывод консоли в файл.
Код:
backupdb.sh &>/kuda/hochesh/lol.log
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #4 : 10 Декабря 2010, 12:09:09 »

где-то с правами кривость
проверь права на создания файла и права в директории
Записан
Elisium
NoDeny
Старожил
*

Карма: 19
Offline Offline

Сообщений: 360


На форумах "спасибом" называется плюс к карме.


Просмотр профиля
« Ответ #5 : 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
« Последнее редактирование: 10 Декабря 2010, 12:11:49 от Elisium » Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #6 : 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 | \ ?
Мне кажется что нет...
« Последнее редактирование: 10 Декабря 2010, 12:25:34 от Александр (AleksHr) » Записан
Elisium
NoDeny
Старожил
*

Карма: 19
Offline Offline

Сообщений: 360


На форумах "спасибом" называется плюс к карме.


Просмотр профиля
« Ответ #7 : 10 Декабря 2010, 12:44:00 »

Не нужна.
Записан
gonhik
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #8 : 17 Августа 2011, 22:51:06 »

Здравствуете, после запуска данного скрипта видает ошибку (ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))  Непонимающий что делать ? 
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4787



Просмотр профиля
« Ответ #9 : 17 Августа 2011, 23:38:15 »

Здравствуете, после запуска данного скрипта видает ошибку (ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))  Непонимающий что делать ? 
подозреваю, что пароль на мускул у тебя не 'хххххххххххх'
Цитировать
passwd_root_mysql='хххххххххххх'
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!