Mysql PHP резервное копирование базы данных с использованием mysqldump
Я пытаюсь создать резервную копию для моей базы данных. Моя база данных MySQL. Я использую PHP. Я использую задание cron для выполнения этого кода каждый час.
Это мой код:
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname='stock';
$backup_file = $dbname . date("Y-m-d-H-i-s") . '.sql';
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ". "stock | gzip > $backup_file";
system($command);
Проблема в том, что мой код дает мне пустой файл. Как мне получить всю базу данных?!
1 ответ
Я также сталкиваюсь с той же проблемой / ситуацией много лет назад. Обратитесь сюда. Вот несколько вещей, которые необходимо принять к сведению:-
- Обязательно использовать абсолютный путь для дампа MySQL.
- Попробуйте использовать --opt (опция по умолчанию для дампа MySQL). Можно сослаться на http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
- Для варианта, если использовать краткую форму, не нужно иметь (-). например: --p. Используйте (-) при использовании полной формы. Например:- пароль. Поэтому используйте "-p" вместо "--p" (также применяется для других).
- попробуйте 'shell_exec' или 'system', если дамп MySQL не работает на 'exec'.
- постарайтесь избежать пробела между опцией и переменной. Например:-p $ dbpass
* Имейте также в виду, что с разрешения указывается, может ли системная команда выполняться из PHP или нет.