数据库备份的两种方法

数据库备份的两种方法,第1张

概述数据库备份是必要的一般都是使用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:SQLdatabse_backup';//定义数据库配置$user = ''; //数据库账户$pwd = ''; //数据库密码$dbname = ''; //数据库名称//备份数据库命令地址文件$sqladdress = 'D:phpStudyMySQLbinmysqldump.exe';//备份指定地址$time = time();$path = 'D:SQLdatabse_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;rn";#for mysql>=5.0mysqli_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'].";rnrn";#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);rn";unset($data);}$mysql.="rn";unset($t);}mysqli_close($con);$filename=date('Ymj').".sql"; //文件名为当天的日期$time = time();$path = 'D:SQLdatabse_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

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

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

//备份数据库命令地址文件
<span >$sqladdress = 'D:\PHPStudy\@R_3015605@\bin\@R301_5605@dump.exe'<span >;

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

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

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

('Content-Type:text/HTML;charset=utf8'("max_execution_time",'1024M');date_default_timezone_set("PRC"("Content-Type:text/HTML;charset=utf-8"=""="";="";=""; = ("","","",""(,= "set charset utf8;\r\n";=5.0(,"SET nameS 'UTF8'"=(,"show tables"(=(=[0=(,"show create table ``"=(.=['Create table'].";\r\n\r\n"; =(,"select * from ``"(=(=(=('addslashes',=('`,`',="`".."`"=(=('addslashes',=("','",="'".."'".="insert into ``() values();\r\n"(.="\r\n"((=('Ymj').".sql"; = = 'D:\sql\databse_backup'.'\\'.("Ymd",).'\\'(!( (, = . = (,'w'(,(=(,"r"=(("Content-type: application/octet-stream"("Accept-Ranges: bytes"("Accept-Length: ".("Content-disposition: attachment; filename=". (,(;

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

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

总结

以上是内存溢出为你收集整理的数据库备份的两种方法全部内容,希望文章能够帮你解决数据库备份的两种方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存