执行mysqldump以sql格式备份数据库

问题描述:

我试图使用PHP的exec()函数来运行mysqldump来从Amazon Web Service备份名为projectdata的数据库。但我只能创建一个空的SQL文件。执行mysqldump以sql格式备份数据库

我正在与XAMPP的PHP文件,在Windows 7下mysqldump的地方是在C:\ XAMPP的\ mysql的\ mysqldump的

exec('C:\xampp\mysql\bin\mysqldump --user=user --password=password --host=cannotTellyou.amazonaws.com:3306 projectdata > backup.sql'); 
+0

后,你可以能张贴您的[溶液作为答案】(http://*.com/help/self-answer),并把它标记为正确答案。 –

+0

如果您在5555等非标准端口上运行MySQL,mysqldump可以将'--port = 5555'作为开关。如果你指定'--port = 3306',MySQL转储可能已经工作。不提供端口允许mysqldump承担3306默认端口。 – zedfoxus

它的工作原理去除的端口号

C:\xampp\mysql\bin\mysqldump --user=user --password=password --host=cannotTellyou.amazonaws.com projectdata > backup.sql 

你应该做的是:做一个ssh登录到您的AWS机。在命令行中运行mysqldump并从那里开始调试。

ssh <your remote AWS using your private_key> 

然后运行

mysqldump -u <username> -p<password> yourDB | gzip > backupfilename.sql.tar.gz 

用gzip,如果你想压缩备份文件,否则,它是没有必要的。

然后参考这篇文章: how to mysqldump remote db from local machine

我会尝试显式指定文件名,而不是重定向输出。就像这样:

exec('C:\xampp\mysql\mysqldump --user=user --password=password --host=cannotTellyou.amazonaws.com:3306 projectdata -r backup.sql'); 

-r选项也应使用,因为:

直接输出到指定的文件。应该在MSDOS中使用此选项,因为它可以防止将新行'\ n'转换为'\ r \ n'(回车+换行)。