早睡早起,方能养生
Sleep early rise early, way to keep healthy

PHP使用mysqldump备份数据库

super
2021-06-05 17:25
views 2568

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 条讨论
top