PHP使用mysqldump备份数据库
super
2021-06-05 17:25
3134
Windows:
1)找到mysql的安装位置
2)进入bin目录,找到mysqldump.exe
3)使用PHP exec命令导出数据库
如果exce函数被禁用,需要解禁此函数(php.ini 找到disabled_function 去掉exec,重启nginx)。
public function backup()
{
$cfg_dbname = 'my_db_name'; // 数据库名称
$time = time();
$filename = $cfg_dbname . "_" . date("Ymd", $time) . ".sql";
$savePath = 'c:/Users/super/Desktop/www/sw/public/backup/DB/'; // 文件保存位置
$wwwPath = '/backup/DB/';
if (!file_exists($savePath)) {
mkdir($savePath, 0777, true);
}
$tmpFile = $savePath . $filename;
fopen($tmpFile, "w");
chmod($tmpFile,0777);
// 用MySQLDump命令导出数据库
$dbhost = '127.0.0.1'; // 主机IP地址
$cfg_dbuser = 'root'; // 用户名
$cfg_dbpwd = 'root'; // 密码
$mysqldump_path = 'c:/Users/super/Desktop/phpstudy/Mysql/bin/mysqldump'; // mysqldump路径
$bool_dump = exec("$mysqldump_path -h$dbhost -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);
if(0 == $bool_dump){
// 查询文件是否存在
if (file_exists('.' . $wwwPath . $filename)) {
return ['code' => 200, 'msg' => '备份成功!'];
} else {
return ['code' => 500, 'msg' => '备份失败,请稍候重试!'];
}
} else {
return ['code' => 500, 'msg' => '备份失败,请稍候重试!'];
}
}
说明:
1)以上代码是在windows7虚拟机里面写的,因为只给了一个C盘,数据库和项目及运行环境都在C盘。
2)将以上代码的数据库各项信息换成你的。
3)暂时没有测试是否可以通过本地连接备份远程数据库
4)注意备份保存的地方有访问权限,例如我一开始想放到C盘下主目录,但是…
5)上图安装路径与代码中mysqldump的路径不一致,图是我写文章的时候在本机截取的,代码是在虚拟机上面复制出来的
0 条讨论