PHP后台备份MySQL数据库的源码实例


Posted in PHP onMarch 18, 2019

PHP 备份 mysql 数据库的源代码,在完善的 PHP+Mysql 项目中,在后台都会有备份 Mysql 数据库的功能,有了这个功能,对于一些不便自己写shell脚本备份的VPS来说,就不用使用 FTP 或者使用 mysql 的管理工具进行 mysql 数据库备份下载,非常方便。

下面是一个php数据库备份的源代码,大家也可以根据自己的需求进行修改。

<?php 
// 备份数据库
$host = "localhost";
$user = "root"; //数据库账号
$password = ""; //数据库密码
$dbname = "mysql"; //数据库名称
// 这里的账号、密码、名称都是从页面传过来的
if (!mysql_connect($host, $user, $password)) // 连接mysql数据库
{
 echo '数据库连接失败,请核对后再试';
  exit;
} 
if (!mysql_select_db($dbname)) // 是否存在该数据库
{
 echo '不存在数据库:' . $dbname . ',请核对后再试';
  exit;
} 
mysql_query("set names 'utf8'");
$mysql = "set charset utf8;\r\n";
$q1 = mysql_query("show tables");
while ($t = mysql_fetch_array($q1))
{
  $table = $t[0];
  $q2 = mysql_query("show create table `$table`");
  $sql = mysql_fetch_array($q2);
  $mysql .= $sql['Create Table'] . ";\r\n";
  $q3 = mysql_query("select * from `$table`");
  while ($data = mysql_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";
  } 
} 
$filename = $dbname . date('Ymjgi') . ".sql"; //存放路径,默认存放到项目最外层
$fp = fopen($filename, 'w');
fputs($fp, $mysql);
fclose($fp);
echo "数据备份成功";
?>

PHP执行Mysql数据库的备份和还原

使用mysqldump命令备份

mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。

mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。

mysqldump基本语法:

mysqldump -u username -p password dbname table1 table2 ...-> BackupName.sql
  • username为数据库用户名;
  • password为数据库密码
  • dbname参数表示数据库的名称;
  • table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
  • BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;
$exec="D:/phpstudy/mysql/bin/mysqldump -u".$db_user." -p".$db_pwd." ".$db_name." > ".$name;
exec($exec);
//前面要设置mysql执行文件的路径。

注意:这里的-p后面的password不要有空格,否则可能只会生成空的sql文件,后面$name是生成文件路径及名称。

简单的备份数据库就完成了。

还原使用mysqldump命令备份的数据库的语法

mysql -u root -p password dbname < backup.sql

参数跟备份时一样,backup.sql是需要还原的数据库文件,文件路径为绝对路径。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
php下HTTP Response中的Chunked编码实现方法
Nov 19 PHP
php处理json时中文问题的解决方法
Apr 12 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
php curl_init函数用法
Jan 31 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
php生成excel文件的简单方法
Feb 08 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
PHP从二维数组得到N层分类树的实现代码
Oct 11 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 #PHP
php+ajax 文件上传代码实例
Mar 18 #PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 #PHP
详解php中curl返回false的解决办法
Mar 18 #PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 #PHP
PHP自动生成缩略图函数的源码示例
Mar 18 #PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 #PHP
You might like
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
PHP中的extract的作用分析
2008/04/09 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
JS实现百度搜索框
2021/02/25 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
python修改txt文件中的某一项方法
2018/12/29 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
学生个人自我鉴定范文
2014/03/28 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
庆七一活动简报
2015/07/20 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python