Home Database Mysql Tutorial 如何用PHP来实现MySQL备份?

如何用PHP来实现MySQL备份?

Jun 07, 2016 pm 04:14 PM
mysql php main introduce backup accomplish article

以下的文章主要介绍的是用PHP来实现MySQL备份的实际操作流程,我们大家都知道用PHP来实现MySQL备份可以说在实际应用频率还是比较大的,以下的文章主要描述的是用PHP来实现MySQL备份的实际操作流程。 看了下phpMyadmin和Discuz!的代码,呵呵,于是偷抄了Disc

以下的文章主要介绍的是用PHP来实现MySQL备份的实际操作流程,我们大家都知道用PHP来实现MySQL备份可以说在实际应用频率还是比较大的,以下的文章主要描述的是用PHP来实现MySQL备份的实际操作流程。

看了下phpMyadmin和Discuz!的代码,呵呵,于是偷抄了Discuz!的代码,形成了如下备份数据库的方法。(在这里感谢Discuz!的开发者)

备份数据库有两种方式,一种是只备份数据库的结构,一种把是结构和所有的数据都备份出来,当然是第二种方法好啦,不过我为了考虑可能的需求就都作啦。

备份数据库结构

函数名称:table2sql()

函数功能:把表的结构转换成为SQL

函数参数:$table: 要进行提取的表名

返 回 值:返回提取后的结果,SQL集合

函数作者:heiyeluren

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<p></p><ol class="dp-xml">

<li><span>function table2sql($table)   </span></li>

<li class="alt"><span>{  </span></li>

<li><span>global $db;  </span></li>

<li class="alt">

<span>$</span><span class="attribute">tabledump</span><span> = </span><span class="attribute-value">"DROP TABLE IF EXISTS $table;\n"</span><span>;  </span>

</li>

<li>

<span>$</span><span class="attribute">createtable</span><span> = $db-</span><span class="tag">></span><span>query("SHOW CREATE TABLE $table");  </span>

</li>

<li class="alt">

<span>$</span><span class="attribute">create</span><span> = $db-</span><span class="tag">></span><span>fetch_row($createtable);  </span>

</li>

<li>

<span>$tabledump </span><span class="attribute">.</span><span>= $create[1].";\n\n";   </span>

</li>

<li class="alt"><span>return $tabledump;  </span></li>

<li><span>}  </span></li>

</ol>

Copy after login

备份数据库结构和所有数据/*

函数名称:data2sql()

函数功能:把表的结构和数据转换成为SQL

函数参数:$table: 要进行提取的表名

返 回 值:返回提取后的结果,SQL集合

函数作者:heiyeluren

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

<ol class="dp-xml">

<li class="alt"><span><span>function data2sql($table)   </span></span></li>

<li><span>{  </span></li>

<li class="alt"><span>global $db;  </span></li>

<li>

<span>$</span><span class="attribute">tabledump</span><span> = </span><span class="attribute-value">"DROP TABLE IF EXISTS $table;\n"</span><span>;  </span>

</li>

<li class="alt">

<span>$</span><span class="attribute">createtable</span><span> = $db-</span><span class="tag">></span><span>query("SHOW CREATE TABLE $table");  </span>

</li>

<li>

<span>$</span><span class="attribute">create</span><span> = $db-</span><span class="tag">></span><span>fetch_row($createtable);  </span>

</li>

<li class="alt">

<span>$tabledump </span><span class="attribute">.</span><span>= $create[1].";\n\n";  </span>

</li>

<li>

<span>$</span><span class="attribute">rows</span><span> = $db-</span><span class="tag">></span><span>query("SELECT * FROM $table");  </span>

</li>

<li class="alt">

<span>$</span><span class="attribute">numfields</span><span> = $db-</span><span class="tag">></span><span>num_fields($rows);  </span>

</li>

<li>

<span>$</span><span class="attribute">numrows</span><span> = $db-</span><span class="tag">></span><span>num_rows($rows);  </span>

</li>

<li class="alt">

<span>while ($</span><span class="attribute">row</span><span> = $db-</span><span class="tag">></span><span>fetch_row($rows))  </span>

</li>

<li><span>{  </span></li>

<li class="alt">

<span>$</span><span class="attribute">comma</span><span> = </span><span class="attribute-value">""</span><span>;  </span>

</li>

<li>

<span>$tabledump </span><span class="attribute">.</span><span>= </span><span class="attribute-value">"INSERT INTO $table VALUES("</span><span>;  </span>

</li>

<li class="alt">

<span>for($</span><span class="attribute">i</span><span> = </span><span class="attribute-value">0</span><span>; $i </span><span class="tag"><span> $numfields$i++)   </span></span>

</li>

<li><span>{  </span></li>

<li class="alt">

<span>$tabledump </span><span class="attribute">.</span><span>= $comma."'".</span>MySQL<span>_escape_string($row[$i])."'";  </span>

</li>

<li>

<span>$</span><span class="attribute">comma</span><span> = </span><span class="attribute-value">","</span><span>;  </span>

</li>

<li class="alt"><span>}  </span></li>

<li>

<span>$tabledump </span><span class="attribute">.</span><span>= </span><span class="attribute-value">");\n"</span><span>;  </span>

</li>

<li class="alt"><span>}  </span></li>

<li>

<span>$tabledump </span><span class="attribute">.</span><span>= </span><span class="attribute-value">"\n"</span><span>;  </span>

</li>

<li class="alt"><span>return $tabledump;  </span></li>

<li><span>}  </span></li>

</ol>

Copy after login

具体实现MySQL操作

好,我们既然把代码都写出来了,那么我们如何在具体的程序种去实现MySQL备份呢,我们看下面的代码。

备份数据库

注意:我们一下的数据库操作采用了phplib的DB类

定义要保存的数据表、前缀、保存到何处

$tables = array('us_sort', 'us_download', 'us_article', 'us_guestbook'); //定义要保存的数据表,一个数组

$prefix = 'us_';// 要保存的.sql文件的前缀

$saveto = 'server'; // 要保存到什么地方,是本地还是服务器上,默认是服务器

$back_mode = 'all'; // 要保存的方式,是全部备份还是只保存数据库结构

$admin = 'heiyeluren'; //管理员名称

$admin_email = 'heiyeluren@163.com';// 管理员邮箱

// 定义数据保存的文件名

$local_filename = $prefix.date('Ymd_His').'.sql"';

if (!$filename) { $filename = $db_backup_path . $prefix . date('Ymd_His_'). create_check_code(4) . ".sql"; }

$filename = $prefix.date(Ymd_His). create_check_ code(6).".sql";// 保存在服务器上的文件名

// 注意后面的create_check_code()函数,这是一个生成随机码的函数,详细可以参考:

// http://blog.csdn.net/heiyeshuwu/archive/2005/01/26/268446.aspx

// 获取数据库结构和数据内容

1

2

3

4

5

6

7

8

9

10

11

<ol class="dp-xml">

<li class="alt"><span><span>foreach($tables as $table)   </span></span></li>

<li><span>{  </span></li>

<li class="alt">

<span>if ($</span><span class="attribute">back_mode</span><span> == 'all') { $sqldump </span><span class="attribute">.</span><span>= </span><span class="attribute-value">data2sql</span><span>($table); }  </span>

</li>

<li>

<span>if ($</span><span class="attribute">back_mode</span><span> == 'table') { $sqldump </span><span class="attribute">.</span><span>= </span><span class="attribute-value">table2sql</span><span>($table); }  </span>

</li>

<li class="alt"><span>} </span></li>

</ol>

Copy after login

// 如果数据内容不是空就开始保存

if(trim($sqldump))

{

// 写入开头信息

$sqldump =

"# --------------------------------------------------------\n".

"# 数据表备份\n".

"#\n".

"# 服务器: $db->Host\n".

"# 数据库:$db->Database\n".

"# 备份编号: ". create_sess_id() ."\n". // 这里有一个生成session id的函数

"# 备份时间: ".time_to_date('',6)."\n". // 这里就是获取当前时间的函数

"#\n".

"# 管理员:$admin ($admin_email)\n". // 管理员的用户名和邮箱地址

"# $copyright\n".

"# --------------------------------------------------------\n\n\n".

$sqldump;

保存到本地

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<ol class="dp-xml">

<li class="alt"><span><span>if($</span><span class="attribute">saveto</span><span> == "local")   </span></span></li>

<li><span>{  </span></li>

<li class="alt"><span>ob_end_clean();  </span></li>

<li><span>header('Content-Encoding: none');  </span></li>

<li class="alt"><span>header('Content-Type: '.(strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'], 'MSIE') ? <p></p>'application/octetstream' 'application/octet-stream'));  </span></li>

<li>

<span>header('Content-Disposition: '.(strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'], 'MSIE') ? <p></p>'inline; ' 'attachment; ').'</span><span class="attribute">filename</span><span>="'.$local_filename);  </span>

</li>

<li class="alt"><span>header('Content-Length: '.strlen($sqldump));  </span></li>

<li><span>header('Pragma: no-cache');  </span></li>

<li class="alt"><span>header('Expires: 0');  </span></li>

<li><span>echo $sqldump;  </span></li>

<li class="alt"><span>}  </span></li>

</ol>

Copy after login

保存到本地结束

保存在服务器

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<ol class="dp-xml">

<li class="alt"><span><span>if($</span><span class="attribute">saveto</span><span> == "server")   </span></span></li>

<li><span>{  </span></li>

<li class="alt"><span>if($filename != "")   </span></li>

<li><span>{  </span></li>

<li class="alt">

<span>@$</span><span class="attribute">fp</span><span> = </span><span class="attribute-value">fopen</span><span>($filename"w+");  </span>

</li>

<li><span>if ($fp)  </span></li>

<li class="alt"><span>{  </span></li>

<li><span>@flock($fp, 3);  </span></li>

<li class="alt"><span>if(@!fwrite($fp$sqldump))   </span></li>

<li><span>{  </span></li>

<li class="alt"><span>@fclose($fp);  </span></li>

</ol>

Copy after login

exit_msg("数据文件无法保存到服务器,请检查目录属性你是否有写的权限。");

}

else

{

exit_msg("数据成功备份至服务器 $filename 中。");

}

}

else

{

exit_msg("无法打开你指定的目录". $filename .",请确定该目录是否存在,或者是否有相应权限");

}

}

else

{

exit_msg("您没有输入备份文件名,请返回修改。");

}

}

// 保存到服务器结束

}

else

{

exit_msg("数据表没有任何内容");

}

备份数据库结束

以上的相关内容就是对PHP实现MySQL备份的介绍,望你能有所收获。


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MySQL: An Introduction to the World's Most Popular Database MySQL: An Introduction to the World's Most Popular Database Apr 12, 2025 am 12:18 AM

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP's Current Status: A Look at Web Development Trends PHP's Current Status: A Look at Web Development Trends Apr 13, 2025 am 12:20 AM

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP: The Foundation of Many Websites PHP: The Foundation of Many Websites Apr 13, 2025 am 12:07 AM

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.

MySQL's Place: Databases and Programming MySQL's Place: Databases and Programming Apr 13, 2025 am 12:18 AM

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

The Enduring Relevance of PHP: Is It Still Alive? The Enduring Relevance of PHP: Is It Still Alive? Apr 14, 2025 am 12:12 AM

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP vs. Python: Core Features and Functionality PHP vs. Python: Core Features and Functionality Apr 13, 2025 am 12:16 AM

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

See all articles