简体   繁体   English

使用mysqldump的MySQL PHP备份数据库

[英]Mysql PHP backup database using mysqldump

I try to create a backup for my database. 我尝试为数据库创建备份。 My database is MySQL. 我的数据库是MySQL。 I am using PHP. 我正在使用PHP。 I use a cron job to execute this code every hour. 我使用cron作业每小时执行一次此代码。

This is my code: 这是我的代码:

$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);

The problem is that my code give me an empty file How can i have my all database ?! 问题是我的代码给了我一个空文件如何获取我的所有数据库?

I also encounter same problem/situation years back. 几年前,我也遇到相同的问题/情况。 Refer here . 请参考这里 Here are a few things that need to TAKE NOTE:- 以下是一些需要注意的事项:-

  1. Compulsory to use absolute path for MySQL dump. 强制对MySQL转储使用绝对路径。
  2. Try using --opt (default option for MySQL dump). 尝试使用--opt(MySQL转储的默认选项)。 Can refer http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html 可以参考http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
  3. For the option, if use short form, no need to have (--). 对于该选项,如果使用短格式,则不需要(-)。 eg: --p. 例如:--p。 Use (--) when using full form. 使用完整格式时请使用(-)。 eg: --password. 例如:--password。 So use '-p' instead of '--p' (applied for others option too). 因此,请使用“ -p”而不是“ --p”(也适用于其他选项)。
  4. try 'shell_exec' or 'system' if MySQL dump doesn't work on 'exec'. 如果MySQL转储在'exec'上不起作用,请尝试'shell_exec'或'system'。
  5. try to avoid have space between option and variable. 尽量避免在选项和变量之间留有空格。 Eg: -p$dbpass 例如:-p $ dbpass

*Also bear in mind, it involves with permission whether system command can be executed from PHP or not. *还请记住,是否可以从PHP执行系统命令是否涉及许可。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM