千家信息网

数据库中有哪两种数据库备份

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,小编给大家分享一下数据库中有哪两种数据库备份,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数据库备份的两种方法是:1、使用
千家信息网最后更新 2024年11月11日数据库中有哪两种数据库备份

小编给大家分享一下数据库中有哪两种数据库备份,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

数据库备份的两种方法是: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.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'].";\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下可以用定时任务。

以上是"数据库中有哪两种数据库备份"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0