热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php备份和还原mysql数据库

2019独角兽企业重金招聘Python工程师标准php实现mysql数据库的备份和还原基本代码参照自http:my.oschina.netnetljxblog11104备份的

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

php实现mysql数据库的备份和还原
基本代码参照自 http://my.oschina.net/netljx/blog/11104

备份的主要php代码:

require_once '../modules/all_table.php';

//该文件提供一些必要的配置参数,如$cfg_dbhost,$cfg_dbuser,$cfg_dbpwd,$cfg_dbname等


@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);

@header("Pragma: no-cache");//禁止缓存

header("Content-Type: application/json; charset=utf-8");


$dbhost      = $cfg_dbhost;     //数据库主机名
$dbuser      = $cfg_dbuser;     //数据库用户名
$dbpass     = $cfg_dbpwd;    //数据库密码
$dbname    = $cfg_dbname;    //数据库名


$filename=date("Y-m-d_H-i-s")."-".$dbname.".sql";


$tmpFile = str_replace('\\','/',(dirname(__FILE__)))."/backupdb/".$filename;

//备份文件存放的目录,当前php代码文件下的backupdb文件夹下

$cmd=$mysqldump_dir."mysqldump -h$dbhost -u$dbuser -p$dbpass  $dbname > ".$tmpFile;

//最重要的一点是$mysqldump_dir目录

前面用网上的代码去实现都不能备份,原因就是,没有用$mysqldump_dir,该变量为mysql的bin文件夹位置

例如:我的mysql是安装在D:\myEnv\下,所以$mysqldump_dir=D:\myEnv\mysql\bin 因为程序要调用mysqldump方法是用到D:\myEnv\mysql\bin下的mysqldump.exe。所以要指定位置。下面还原数据库方法也是一样。

exec($cmd); 
 
echo "数据库备份信息";
echo "备份文件名".$filename."";
echo "备份文件目录".str_replace('\\','/',$tmpFile)."";
echo "操作命令".$cmd."";

if (filesize($tmpFile)>0){
//文件大小>0说明已经写入咯内容,到目前位置,我还没找到比较好的方法判断exec( $cmd)命令执行成功,所以采用的这种方法。
echo "数据库备份成功";
}
else{
echo "数据库备份失败";
echo "提示信息".$cmd."";
}
exit;
?>

数据库还原的主要代码:

require_once((dirname(__FILE__).'/../modules/all_table.php'));
@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");
header("Content-Type: application/json; charset=utf-8");

if ( !empty( $_POST['sqlFile'] ) )
{
 
 $file_name = $_POST['sqlFile']; //要导入的SQL文件名
 $file_name=str_replace('\\','/',$file_name);
 if (strstr($file_name,'/')){
  $file_name=substr($file_name,strrpos($file_name,"/")+1);
 }
 
 $back_name=substr($file_name,strrpos($file_name,"."));
 $dbhost      = $cfg_dbhost;     //数据库主机名
 $dbuser      = $cfg_dbuser;     //数据库用户名
 $dbpass     = $cfg_dbpwd;    //数据库密码
 $dbname    = $cfg_dbname;    //数据库名


 if($back_name!='.sql'){
  echo "
只能导入sql文件,禁止导入其他文件";
  exit();
 }
 //如果换文件存储目录需要修改
 
$filepath = str_replace('\\','/',(dirname(__FILE__)))."/backupdb/".$file_name;

$fp = @fopen($filepath, "r") or die("不能打开SQL文件 $filepath");//打开文件
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库
mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库

echo "

正在清空数据库,请稍等....
";                     
$result = mysql_query("SHOW tables");                     
while ($currow=mysql_fetch_array($result))
{                     
   mysql_query("drop TABLE IF EXISTS $currow[0]");                     
   echo "清空数据表【".$currow[0]."】成功!
";                     
}                     
echo "
恭喜你清理MYSQL成功
";

echo "正在执行导入数据库操作
";
// 导入数据库的MySQL命令

exec($mysqldump_dir."mysql -h$dbhost -u$dbuser -p$dbpass $dbname <".$filepath);

//$mysqldump_dir同备份代码原理一样&#xff0c;如果是备份和还原本地代码&#xff0c;-h$dbhost参数可以删除。

echo "
数据库还原成功&#xff01;
".$time&#61;date("Y-m-d H:i:s" ,time());
echo "
【数据库命令】".$mysqldump_dir."mysql -h$dbhost -u$dbuser -p$dbpass $dbname <".$filepath;
mysql_close(); 
exit();
}
else{
echo "
请导入备份数据库文件";

?> 

网页&#xff1a;


     数据库还原








   

【数据库SQL文件】&#xff1a;


 



重点是还原和备份代码调用exec()方法时的 $mysqldump_dir.。

转:https://my.oschina.net/laodiaoya/blog/90596



推荐阅读
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 数据库多表联合查询:内连接与外连接详解
    在数据库的多表查询中,内连接和外连接是两种常用的技术手段。内连接用于检索多个表中相互匹配的记录,即只有当两个表中的记录满足特定的连接条件时,这些记录才会被包含在查询结果中。相比之下,外连接则不仅返回匹配的记录,还可以选择性地返回不匹配的记录,具体取决于左外连接、右外连接或全外连接的选择。本文将详细解析这两种连接方式的使用场景及其语法结构,帮助读者更好地理解和应用多表查询技术。 ... [详细]
author-avatar
我是小白我有不烦的梦想
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有