[数据库] 数据库备份的两种方法是什么

[复制链接]
查看1774 | 回复8 | 2020-11-3 00:09:10 | 显示全部楼层 |阅读模式

数据库备份的两种方法是:1、使用mysqldump结合exec函数进行数据库备份;2、使用【php+mysql+header】函数进行数据库备份。

数据库备份是必要的一般都是使用mysqldump进行备份,我这边写了两种备份方法可以参考一下。

第一种:使用mysqldump结合exec函数进行数据库备份操作。

代码如下:

/**
 * Subject: php-mysql 实现数据库备份.
 * User: luokakale
 * Date: 2018/11/9
 * Time: 13:31
 */

header('Content-Type:text/html;charset=utf8');
ini_set("max_execution_time", "0");//代码运行时间不限制  防止备份失败
ini_set('memory_limit', '128M');//设置内存 根据需求可以修改
date_default_timezone_set("PRC");
//创建需要保存sql文件的文件夹
$path = 'D:\SQL\databse_backup';
//定义数据库配置
$user = ''; //数据库账户
$pwd  = ''; //数据库密码
$dbname = ''; //数据库名称

//备份数据库命令地址文件
$sqladdress = 'D:\phpStudy\MySQL\bin\mysqldump.exe';

//备份指定地址
$time = time();
$path = 'D:\SQL\databse_backup'.'\\'.date("Ymd",$time);
if(!file_exists($path))
{
    mkdir($path,0777,true);
}

//备份的数据库文件名
$sqlFile = $dbname."_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%.sql";
//判断是否存在密码
$password = $pwd== ''?'':'  -p'.$pwd;
//拼接备份命令
$order =  $sqladdress.' --opt  -u'.$user.$password.' '.$dbname.' >'.$path.'\\'.$sqlFile;
//执行命令
exec($order);

我使用的是集成的phpstudy里面的mysql下面的mysqldump.exe来备份,备份的数据库名字写法是 数据库名字+年月日时. 上面代码中我对数据库密码进行了判断,我这边有些数据库是不需要密码的。最后使用exec执行命令。

第二种:使用php+mysql+header函数进行数据库备份和下载操作。

代码如下:

header('Content-Type:text/html;charset=utf8');
ini_set("max_execution_time", "0");//代码运行时间不限制  防止备份失败
ini_set('memory_limit', '1024M');//设置内存 根据需求可以修改
date_default_timezone_set("PRC");
header("Content-Type:text/html;charset=utf-8");
$host="";
$user="";//账户
$password="";//密码
$dbname="";//数据库名称
$con =  mysqli_connect("$host","$user","$password","$dbname");
mysqli_select_db($con,$dbname);
$mysql= "set charset utf8;\r\n";#for mysql>=5.0
mysqli_query($con,"SET NAMES 'UTF8'");
$q1=mysqli_query($con,"show tables");
while($t=mysqli_fetch_array($q1)){
    $table=$t[0];
    $q2=mysqli_query($con,"show create table `$table`");
    $sql=mysqli_fetch_array($q2);
    $mysql.=$sql['Create Table'].";\r\n\r\n";#DDL
    $q3=mysqli_query($con,"select * from `$table`");
    while($data=mysqli_fetch_assoc($q3))
    {
        $keys=array_keys($data);
        $keys=array_map('addslashes',$keys);
        $keys=join('`,`',$keys);
        $keys="`".$keys."`";
        $vals=array_values($data);
        $vals=array_map('addslashes',$vals);
        $vals=join("','",$vals);
        $vals="'".$vals."'";
        $mysql.="insert into `$table`($keys) values($vals);\r\n";
        unset($data);
    }
    $mysql.="\r\n";
    unset($t);
}
mysqli_close($con);
$filename=date('Ymj').".sql"; //文件名为当天的日期
$time = time();
$path = 'D:\SQL\databse_backup'.'\\'.date("Ymd",$time).'\\';
// 检查目录是否存在
if(!is_dir($path)){
    // 新建目录
    mkdir($path, 0777, true);
}
$file_name = $path.$filename;
$fp = fopen($file_name,'w');
fputs($fp,$mysql);
fclose($fp);
$fp=fopen($file_name,"r");
$file_size=filesize($file_name);
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: ".$file_size);
header("Content-Disposition: attachment; filename=".$filename);
//这里一定要使用echo 进行输出,否则下载的文家是空白的
echo fread($fp,$file_size);
fclose($fp);
exit;

个人建议用第一种,第二种太消耗内存了。

第一种可以做成定时备份,windows下可以用定时任务。

更多SQL的相关技术文章,请访问SQL教程栏目进行学习!

以上就是数据库备份的两种方法是什么的详细内容,更多请关注爱上源码网其它相关文章!

  • 微信
  • 分享
  • 相关标签:数据库 备份
  • 本文原创发布爱上源码网,转载请注明出处,感谢您的尊重!
    • 上一篇:数据库的事务隔离级别有哪些?
    • 下一篇:数据库存储过程详解

    相关文章

    相关视频

    • 数据库性能优化
    • 数据库种类
    • 数据库备份的两种方法是什么
    • 数据库操作简介
    本文有爱上源码下载完入驻作者发布,如果对您版权造成侵害,可以联系本站站长管理进行维权删除,本站收到维权24小时内进行处理,谢谢您关注23ym.cn! 本站分享大量程序员技术文章以及对编程开发的初级入门教程,包括图文讲解笔记和高清视频下载~
    回复

    使用道具 举报

    123457730 | 2021-9-27 11:32:34 | 显示全部楼层
    站长真良心,这么大的资源站都是免费下载
    回复

    使用道具 举报

    123457648 | 2022-5-23 20:22:02 | 显示全部楼层
    站长真良心,这么大的资源站都是免费下载
    回复

    使用道具 举报

    123457373 | 2022-12-21 13:22:18 | 显示全部楼层
    谢谢楼主分享的资源,爱了~~~
    回复

    使用道具 举报

    穿雨捶 | 2022-12-31 23:31:13 | 显示全部楼层
    这个下载站资源真齐全
    回复

    使用道具 举报

    蓝天天使2017 | 2023-1-28 00:38:31 | 显示全部楼层
    悟空源码太厉害,资源真多!
    回复

    使用道具 举报

    Aim_yuan | 2023-2-24 21:24:28 | 显示全部楼层
    厉害了,悟空源码资源多教程多!
    回复

    使用道具 举报

    小瑞熙 | 2023-5-29 22:11:06 | 显示全部楼层
    没积分哈,谁来帮帮我啊
    回复

    使用道具 举报

    痴痴情先生先s | 2023-7-12 14:55:07 | 显示全部楼层
    谢谢楼主发布的资源下载,帮助我不少
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则