Восстановить резервную копию базы данных mysql?
Я использую эту команду для резервного копирования базы данных MySql:
public function backup() {
$backup = $this->location.'/'.$this->database.'_backup_'.date('Y').'_'.date('m').'_'.date('d').'.sql';
$cmd = "c:/xampp/mysql/bin/mysqldump --opt -h localhost -u root $this->database > $backup";
try {
system($cmd);
$error = false;
$message['error'] = false;
$message['message'] = 'Backup successfuly complete';
return json_encode($message);
} catch(PDOException $e) {
$error = true;
$message['error'] = true;
$message['message'] = $e->getMessage();;
return json_encode($message);
}
}
Это выше работает отлично, резервное копирование базы данных без проблем. И это команда для восстановления резервной копии:
public function restore($backup) {
$cmd = "c:/xampp/mysql/bin/mysql -h localhost -u root $this->database > $backup";
try {
exec($cmd);
$error = false;
$message['error'] = false;
$message['message'] = 'Restore successfuly complete';
return json_encode($message);
} catch(PDOException $e) {
$error = true;
$message['error'] = true;
$message['message'] = $e->getMessage();;
return json_encode($message);
}
}
Проблема с вышеприведенной функцией заключается в том, что когда я ее выполняю, база данных не восстанавливается, вместо этого.sql-файл, в котором создаются резервные копии таблиц базы данных, очищается. Что происходит?
2 ответа
Решение
Переключите знак больше чем на меньше. Прямо сейчас в вашем задании восстановления вы снова записываете базу данных в файл; теперь, когда он очищен, он очищает файл.
mysql -h localhost -u root $this->database < $backup.sql
^
В общем-то, >
значит писать, <
значит читай.
Вы должны изменить командную строку восстановления, заменив >
с <
:
$cmd = "c:/xampp/mysql/bin/mysql -h localhost -u root $this->database < $backup";