使用.php文件生成 MySQL 转储

2022-08-30 06:59:52

以下是我掌握的信息:

我正在使用基于Linux的系统,使用MySQL和PHP5。我需要能够在.php文件中生成一个,然后将该转储存储在服务器上我指定位置的文件中。mysqldump

由于我是一个PHP新手,我希望有人给我一些帮助,指导或代码,这将完成我需要的事情。这必须从互联网远程运行。


答案 1

您可以使用 exec() 函数来执行外部命令。

注意:在 和 之间,我会选择第二个,它不会将输出返回到 PHP 脚本 - PHP 脚本不需要将整个 SQL 转储作为字符串获取:您只需要将其写入文件,这可以通过命令本身来完成。shell_exec()exec()


该外部命令将:

  • 是 调用 ,参数正确,mysqldump
  • 并将输出重定向到文件。

例如:

mysqldump --user=... --password=... --host=... DB_NAME > /path/to/output/file.sql


这意味着您的PHP代码将如下所示:

exec('mysqldump --user=... --password=... --host=... DB_NAME > /path/to/output/file.sql');


当然,由您决定使用正确的连接信息,用这些信息替换...


答案 2

如果要创建备份以通过浏览器下载它,也可以在不使用文件的情况下执行此操作。

php 函数 passthru() 会直接将 mysqldump 的输出重定向到浏览器。在此示例中,它也将被压缩。

优点:您不必处理临时文件。

缺点:在Windows上不起作用。对于庞大的数据集,可能会有限制。

<?php

$DBUSER="user";
$DBPASSWD="password";
$DATABASE="user_db";

$filename = "backup-" . date("d-m-Y") . ".sql.gz";
$mime = "application/x-gzip";

header( "Content-Type: " . $mime );
header( 'Content-Disposition: attachment; filename="' . $filename . '"' );

$cmd = "mysqldump -u $DBUSER --password=$DBPASSWD $DATABASE | gzip --best";   

passthru( $cmd );

exit(0);
?>

推荐