Бэкап mysql с помощью php

goacher

Новичок
Бэкап mysql с помощью php

как сделать файл php, при запуске которого делался бэкап mysql в определенную папку на сервере?
Есть ли скрипт такой готовый?
 

goacher

Новичок
а как сделать вывод ошибок для этой команды, типа как для mysql echo mysql_error();

-~{}~ 27.11.09 17:26:

а то создается файл dump.sql, но пустой чего-то

-~{}~ 27.11.09 17:35:

<?php
system("mysqldump -h мой_хост_базы -u пользователь_базы -pпароль_базы имя_базы > dump.sql");
?>
вот и пустой файл.
 

Активист

Активист
Команда форума
goacher
а через ssh комманда выполняется? Есть готовые решения, можно поискать на phpclasses.org или sf.net, но вообще, дамп лучше делать через MySQL dump, ибо могут быть баги во всяких дамперах.
 

goacher

Новичок
ну как я понимаю если файл создается, значит команда выполняется.

а через ssh не пробол, не знаю как это сделать на хостинге godaddy.com
 

dimagolov

Новичок
а через ssh не пробол, не знаю как это сделать на хостинге godaddy.com
что ты не знаешь? как зайти под ssh или как запустить там команду? если первое, то так же как и всюду, вводишь в ssh клиент свой домен, потом имя-пароль для доступа к сайту (не аккаунту, они разные)
 

Активист

Активист
Команда форума
Попробуй так
PHP:
<?php
system('mysqldump -h host -u root -ppass db --verbose > /some/dir/dump.sql 2>/some/dir/log.txt');
?>
-~{}~ 29.11.09 21:43:

>Sypex Dumper - там по крону нельзя ((
wget или curl отменили?
 

goacher

Новичок
вот лог:
mysqldump: File '/usr/share/mysql/charsets/?.conf' not found (Errcode: 2)
mysqldump: Character set '#33' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index' file
mysqldump: Got error: 1251: Client does not support authentication protocol requested by server; consider upgrading MySQL client when trying to connect
 

Активист

Активист
Команда форума
Код:
mysqldump: File '/usr/share/mysql/charsets/?.conf' not found (Errcode: 2)
Character set '#33' is not a compiled
Здесь нужно добавить что-то вроде
--character-sets-dir=/usr/share/mysql/charsets/ --default-character-set=cp1251

Код:
Client does not support authentication protocol
А вот тут - проблема сервера, на лицо. Попробуй добавить пару параметров выше, может что и получится. Лог скинь сюда.

-~{}~ 30.11.09 00:26:

Да, если исправятся две ошибки - можешь убрать авторизацию (добишь - пароль) с учетки, тогда третья ошибка - исправится)) как временная затыка. Хотя, насколько я помню, нужно сделать один запрос к таблице mysql, у тебя рут доступ ?
 

goacher

Новичок
system("--character-sets-dir=/usr/share/mysql/charsets/ --default-character-set=cp1251");
system('mysqldump -h хост -u логин -pпароль база > dump.sql 2>log.txt');
вот после такого запроса, тоже самое:

mysqldump: File '/usr/share/mysql/charsets/?.conf' not found (Errcode: 2)
mysqldump: Character set '#33' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index' file
mysqldump: Got error: 1251: Client does not support authentication protocol requested by server; consider upgrading MySQL client when trying to connect
 

dimagolov

Новичок
goacher, "--character-sets-dir=/usr/share/mysql/charsets/ --default-character-set=cp1251" это были ключи, которые нужно было добавить в вызов mysqldump, естественно, что "после такого запроса, тоже самое".
кроме того, нужно убедиться, что /usr/share/mysql/charsets/ это нужная директория
 

Активист

Активист
Команда форума
goacher
system('mysqldump -h хост -u логин -pпароль база --verbose --character-sets-dir=/usr/share/mysql/charsets/ --default-character-set=cp1251 > dump.sql 2>log.txt');

dimagolov
Да путь та тот, чарсет не выставлен в конфигах :))) Походу доступа от его имени к /etc/my.cnf нету, вот и не цепляет mysqldump конфиг.
 

vovanium

Новичок
rotoZOOM
Нашел что юзать :)
О гениальности автора класса говорит уже то, что для каждой записи он заново генерит строку из названий полей (которая в принципе в дампе вообще не нужна)... Да и весь дамп запихивается в память, это ж для каких баз его использовать?

По поводу дампера, крон будет добавлен в ближайшей новой версии.
 

rotoZOOM

ACM maniac
vovanium Для тех задач, что были поставлены он подходит. Я и написал, что "очень простой" :) Аффтар не озвучил размер своей базы, так что ...
 
Сверху