数据库备份是必要的一般都是使用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下可以用定时任务。

本文属原创内容,为了尊重他人劳动,转载请注明本文地址:

https://www.cnblogs.com/luokakale/p/9935772.html

转载于:https://www.cnblogs.com/yehuisir/p/11191449.html

数据库备份的两种方法相关推荐

  1. 服务器异地备份共享文件夹方法,mssql数据库异地备份的两种方法

    mssql数据库异地备份的两种方法 /*两种方法的前提:1.本地服务器的sqlserver agent服务保证处于启动状态 2.远程计算机(计算机管理里)建立一个普通权限用户,并为其加上密码(例如用户 ...

  2. oracle如何对数据库进行备份,对Oracle数据库进行备份的两种方法详解

    首页 > 演讲稿 > 自我介绍演讲稿 > 对Oracle数据库进行备份的两种方法详解 对Oracle数据库进行备份的两种方法详解 时间:2019-05-05   来源:自我介绍演讲稿 ...

  3. SQL SERVER 2000 数据库备份和SQL Server数据库备份有两种方式,

    SQL SERVER 2000 数据库备份与还原时间:2006-08-30 10:23:23  来源:CSDN  作者:佚名备份数据库,例如: BACKUP DATABASE Northwind    ...

  4. 数据库备份的四种方法 软件功能需求分析

    数据库备份的四种方法: l 全备份:创建备份完成时数据库内存在的数据的副本. l 差异备份:只记录自上次数据库备份后发生更改的数据.差异数据库备份比数据库备份小,而且备份速度快,因此可以更经常地备份, ...

  5. 浅谈MySQL数据库备份的几种方法

    mysql常见的备份方式有:mysqldump.mysqlhotcopy.BACKUP TABLE .SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据 ...

  6. 服务器里文件表格如何自动备份,Excel电子表格自动备份的两种方法

    对于数据量大.数据重要性高的EXCEL文件,如果出现任何意外导致数据遭受损坏,那么,将是一件严重的问题. 平时我们在操作EXCEL时,应该养成良好的习惯,即让EXCEL自动备份,以防不测. 以下是两种 ...

  7. 数据库备份的几种方法

    项目的开发过程中数据库的备份是非常重要的,因为数据库很容易被人不小心删除掉,会造成不可估计的损失,所以一定要进行数据库的备份. 方法一:自己手动备份(用命令行进行备份) 备份数据库命令: mysqld ...

  8. python将数据存入mysql数据库中_python3 两种方法将数据存入mysql数据库

    方法一:(数据量小的时候推荐使用这种) 第一步:pip install mysqlclient 这里我没有报错 也许你可能会报错Read timed out   此时不要慌,这是因为你的网络问题,你使 ...

  9. MongoDB备份的两种方法

    使用mongodb命令:mongodump 将数据文件导出到文件 使用文件系统快照,这需要开启日志功能,还需要系统支持块级设备备份:速度很快,但日志产生大

最新文章

  1. 管理者如何管理好有一个团队?
  2. IDA Pro 修改默认名称
  3. Eclipse-JAVA版本
  4. logback之使用demo
  5. qoq是什么意思的缩写_有意思,“TTFN”居然是“再见”的缩写词,具体是指什么呢?...
  6. 单片机C语言程序设计实训100例:基于AVR+proteus仿真pdf
  7. BitComet(比特彗星) BT磁力链下载推荐
  8. Android Studio的反编译工具使用。
  9. Scrum:官僚者们的游戏
  10. python井字棋_python之井字棋游戏
  11. 【2G模组Air202开发】使用LuatTools下载Luat底层Lod及编写第一个程序:流水灯
  12. BZOJ 3162 独钓寒江雪
  13. Android 打开应用商店评分
  14. C++Primer 第10章lambda表达式
  15. PDF格式分析(六十六) Text 文字——简单字体
  16. 未来电竞旗舰:iQOO 8系列售价3799元起
  17. 智云通CRM:采购决策有哪些关键节点?
  18. 【科研】博士学位论文评阅书
  19. Linux网卡限速下载,端口限速下载脚本,网卡流量监控脚本
  20. 出彩的PPT封面如何设置?这些例子建议收藏

热门文章

  1. origin两个图层图例合并_科学网-Origin双坐标画法以及图例添加之方法一(以origin8.0为例)-蔡延江的博文...
  2. sql注入 union联合查询注入(超详细)
  3. OpenCV(C++)图像处理基础04:图像混合(线性混合操作)
  4. 2019 Q4中国公有云IaaS市场份额:阿里云、腾讯云、华为云三足鼎立
  5. Electron教程 (一)Electron介绍
  6. html页面设计工具,8个新设计工具和网页插件分享
  7. matlab 得到三维的数组例如100x300x200
  8. 解释地震等级与地震烈度的含义(收藏)
  9. jsp+springboot使命必达跑腿接单网站系统 ssm
  10. 【魔豆观察】 金山渡过了生死线