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


本文摘自PHP中文网,作者步履不停,侵删。

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

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

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

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

/**

 * 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函数进行数据库备份和下载操作。

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

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教程栏目进行学习!

以上就是数据库备份的两种方法是什么的详细内容,更多请关注木庄网络博客其它文章!

相关阅读 >>

表和数据库的关系是什么

mysql数据库绿色版出现系统错误1067怎么办?

数据库 30 条军规

navicat怎么手动创建数据库

数据库读写分离是什么意思

如何建立数据库

数据库的四种连接方式分别是什么

怎么查询mysql数据库表字段类型有哪些?

mysql数据库忘记密码时如何修改?

数据库对象包括哪六个?

更多相关阅读请进入《数据库》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...