MySQL数据库中备份/恢复的两方法介绍

   下面介绍MySQL数据库备份/恢复的两种方法。

  方法一:

  query($sql); } //将生成的临时备份文件合在一起 $outfile = date("Y-m-d").".sql"; if(file_exists($dbdir.$outfile)) @unlink($dbdir.$outfile); $fpr = fopen($dbdir.$outfile, "a"); foreach($txtname as $txt){ if(file_exists($dbdir.$txt)){ //读取临时备份文件 $tdata = readfiles($dbdir.$txt); //生成备份文件 $tbl = explode(".", $txt); $str = "`".$tbl[0]."`{{".$tdata."}}"; if(fwrite($fpr, $str)){ echo $tbl[0]."...写入 $outfile 成功!

  n"; }else{ echo $tbl[0]."...写入 $outfile 失败!

  n"; } @unlink($dbdir.$txt); } } fclose($fpr); }else{//恢复数据 $tdata = readfiles($dbdir.$_POST["sqlfile"]); preg_match_all("/`(.*)`{{(.*)}}/isU", $tdata, $data_ar); foreach($data_ar[1] as $k => $tt){ if(empty($data_ar[2][$k])) continue; $tfile = $dbdir.$tt.".txt"; $fp = fopen($tfile, "w"); if(fwrite($fp, $data_ar[2][$k])){ //清空表 $sql = "TRUNCATE TABLE `$tt`"; $db->query($sql); //重新装入数据 $sql = "LOAD DATA LOW_PRIORITY INFILE '".$dbdir.$tt.".txt"."' INTO TABLE `$tt`"; if($db->query($sql)){ fclose($fp); echo $tt."表数据恢复成功!

  n"; unlink($dbdir.$tt.".txt"); }else{ echo $tt."表数据恢复失败!

  n"; } } } //echo $tdata; //print_r($data_ar); //exit; }} /* * 读取文件内容 * 参数 $file 为文件名及完整路径 * 返回文件内容 */ function readfiles($file){ $tdata = ""; $fp = fopen($file, "r"); if(filesize($file) <= 0) return; while($data = fread($fp, filesize($file))){ $tdata .= $data; } fclose($fp); return $tdata; }?>

  方法二:

  想在PHP后台管理直接能够备份数据库,于是想呀想,一直没有什么思路,一开始是考虑用php来访问服务器安装mysql的目录,比如 /usr/local/mysql/data目录,直接把下面对应的文件进行备份,但是出现了问题:

  第一、运行php的是apche的用户,比如是nobody,那么它一般是没有权限访问/usr/local/mysql/data目录的。

  第二、就算能够访问,那么你如何能够把/usr/local/mysql/data目录下的文件拷贝出来呢?因为mysql在运行的时候是不运行访问的,那么nobody用户有权限停止mysql的服务,不可能!

  越想越不对劲,没有办法,看能不能从PHP操作数据库入手,于是就去看了下phpMyadmin和Discuz!的代码,呵呵,于是偷抄了Discuz!的代码,形成了如下备份数据库的方法。

时间: 2024-10-26 05:43:20

MySQL数据库中备份/恢复的两方法介绍的相关文章

MySQL数据库中删除重复记录的方法总结[推荐]_Mysql

表结构: mysql> desc demo; +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | id | int(11) unsigned | NO | PRI | NULL

虚拟主机MySQL数据库的备份与还原的方法_Mysql

以前介绍过一个小巧的MYSQL备份PHP脚本程序,不过那适合没有MySQL Shell权限的虚拟主机用户,这里想讲一下更为通用的备份与还原方法,适合有自己主机的朋友. 1.关于备份:我们在使用MySQL中一般都用MyISAM类型的表,这种表是以文件形式保存的文件系统中的:而HEAP类型的表是保存在内存中的,下面的方法是针对MyISAM表的. 1.1.直接拷贝数据库文件.首先不推荐使用这种方法,因为拷贝的数据表是针对特定操作系统(硬件环境)的,移到其他系统中有可能会出问题.其次备份时候要停止MYS

php 列出MySQL数据库中所有表二种方法

php教程 列出MySQL数据库教程中所有表二种方法 PHP代码如下: function list_tables($database) {     $rs = mysql教程_list_tables($database);     $tables = array();     while ($row = mysql_fetch_row($rs)) {         $tables[] = $row[0];     }     mysql_free_result($rs);     return

MySQL数据库中建立外键的方法

解析:MySQL中建立外键的方法 示例: 1.主表 DROP TABLE IF EXISTS `biao`; CREATE TABLE `biao` ( id` int(11) NOT NULL auto_increment, title` varchar(11) default NULL, content` varchar(11) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312; 2.表cotton

MySQL数据库中拷贝数据表的方法

  在 MySQL 中拷贝表,将 old_table 表拷贝为 new_table 表. 1. 不拷贝表数据,只拷贝结构. CREATE TABLE new_table LIKE old_table 2. 通过 SELECT 查询来拷贝,new_table 表会丢失主键.索引等信息. 引用 CREATE TABLE new_table AS ( SELECT * FROM old_table ) 3. 完全拷贝表 CREATE TABLE new_table LIKE old_table; IN

检测mysql 数据库中的不良索引的方法

为了演示,首先建两个包含不良索引的表,并弄点数据. mysql> show create table test1\G *************************** 1. row ***************************        Table: test1 Create Table: CREATE TABLE `test1` (   `id` int(11) NOT NULL,   `f1` int(11) DEFAULT NULL,   `f2` int(11) DE

MySQL数据库中查看当前日期

本文介绍如何查在MySQL数据库中,查看当前日期,使用MySQL自带的CURRENT_DATE变量. 我们使用MySQL客户端工具,或其它图形化工具登录MySQL后,均可以执行SQL语句.如果我们想要查看一下MySQL数据库中的当前日期,可以使用CURRENT_DATE变量.命令如下:  代码如下 复制代码 mysql> select CURRENT_DATE; 输出结果如下:  代码如下 复制代码 mysql> select CURRENT_DATE; +--------------+ |

mysql 5.6 从陌生到熟练之_数据库备份恢复的实现方法_Mysql

MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:root 数据库名称: szldb 备份数据库到D盘跟目录 mysqldump -h127.0.0.1 -uroot -proot szldb > d:/backupfile.sql   备份到当前目录 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库 mysqldump --add-drop-table -h127.0.

实现Linux中Mysql数据库自动备份并上传到远程FTP服务器

这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到远程FTP服务器的部署,在Linuxhttp://www.aliyun.com/zixun/aggregation/31093.html">技术交流群中,也有朋友会遇到这方面的问题,可以将此文分享给群友共益. 注意:任何的操作都会具有风险性,请在本机实际测试通过之后再部署到服务器环境,这样即熟