Page 2 of 3

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 12:40 pm
by admin
Конечно

$mysqldump_str = $settings['mysqldump_path'] . " параметры как обычно в строке > $file ";
exec($mysqldump_str, $output, $error);

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 12:42 pm
by magicum
эмм, я коряво выразился

я имел в виду, что-нибудь этакое:

php /path-to-smartcj/scj/admin/blabla-backup.php

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 12:45 pm
by admin
cd scj/bin
php cron.php create_backup=true

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 12:48 pm
by magicum
mysqldump: Got error: 2005: Unknown MySQL server host 'localhost:/path-to-socket/mysqld.sock' (0) when trying to connect

path-to-socket верный, естессно

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 12:52 pm
by admin
Я выше показал код как оно вызывает mysqldump
сокет нигда там не прописывается, вызывается бинарник просто с парметрыми базы
Думаю вам стоит спросить админа какой на самом деле верный.

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 1:22 pm
by magicum
нету у меня админа.

в общем, такая петрушка:

у вас смарт сует строку вида "localhost:/tmp/mysqld.sock" в параметр --host="", который работает для mysql, но не работает для mysqldump

то есть, насколько я могу судить, смарт пытается выполнить команду:

mysqldump --host="localhost:/tmp/mysqld.sock" -u <user> -p<password> <database> > file.sql
и она не осиливает параметр host

а вот так:

mysqldump --host="localhost" --socket="/tmp/mysqld.sock" -u <user> -p<password> <database> > file.sql
вполне осиливает

но, разумеется, поменять в смарте эти вещи я не могу

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 1:25 pm
by admin
Даю 100% гарантию что что --socket он в строку не добавляет
у него просто этих данных нет
он добавляет толкьо те данные которые есть в config.php

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 1:33 pm
by magicum
эх, опять вы не читаете :(

я и не говорю, что он --socket добавляет в строку

Вы, ребята, сэкономили на лишних строчках кода, и поставили "универсальную" штучку для всех, и кто по порту подключается, и кто по сокету.

ваш скрипт подставляет в параметр --host или -h значение из конфига, вот это значение:

$config["db_server"] = "host:port";

Лимон говорил, что если используем сокет, то пишем там:

$config["db_server"] = "localhost:/path-to-socket";

мол и так сойдет, mysql понимает, что если там путь к сокету, то будет коннектиться к нему.
mysqldump так тоже раньше умел, а теперь, видимо, не умеет

хотя даже для такой лохматой версии как 5.1, официальный мануал четко говорит, как надо коннектиться к сокету - http://dev.mysql.com/doc/refman/5.1/en/ ... ldump_host


вот я к чему веду

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 1:37 pm
by magicum
Полез экспериментировать. Нашел.

Надо просто сделать так:

$config["db_server"] = "localhost";

и прописать путь до сокета в my.cnf для всех мускульных товарищей: mysql, client, mysqld, mysqldump

и тогда вроде работает.

Re: Mysql пустой бекап

Posted: Fri Oct 03, 2014 1:37 pm
by admin
Да, сорри , теперь понял.

Ок, добавим фикс