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 ответ

Я также сталкиваюсь с той же проблемой / ситуацией много лет назад. Обратитесь сюда. Вот несколько вещей, которые необходимо принять к сведению:-

  1. Обязательно использовать абсолютный путь для дампа MySQL.
  2. Попробуйте использовать --opt (опция по умолчанию для дампа MySQL). Можно сослаться на http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
  3. Для варианта, если использовать краткую форму, не нужно иметь (-). например: --p. Используйте (-) при использовании полной формы. Например:- пароль. Поэтому используйте "-p" вместо "--p" (также применяется для других).
  4. попробуйте 'shell_exec' или 'system', если дамп MySQL не работает на 'exec'.
  5. постарайтесь избежать пробела между опцией и переменной. Например:-p $ dbpass

* Имейте также в виду, что с разрешения указывается, может ли системная команда выполняться из PHP или нет.

Другие вопросы по тегам