执行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');
答
它的工作原理去除的端口号
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,如果你想压缩备份文件,否则,它是没有必要的。
答
我会尝试显式指定文件名,而不是重定向输出。就像这样:
exec('C:\xampp\mysql\mysqldump --user=user --password=password --host=cannotTellyou.amazonaws.com:3306 projectdata -r backup.sql');
的-r
选项也应使用,因为:
直接输出到指定的文件。应该在MSDOS中使用此选项,因为它可以防止将新行'\ n'转换为'\ r \ n'(回车+换行)。
后,你可以能张贴您的[溶液作为答案】(http://*.com/help/self-answer),并把它标记为正确答案。 –
如果您在5555等非标准端口上运行MySQL,mysqldump可以将'--port = 5555'作为开关。如果你指定'--port = 3306',MySQL转储可能已经工作。不提供端口允许mysqldump承担3306默认端口。 – zedfoxus