下面介绍mysql数据库备份/恢复的两种方法。
方法一:
query(show create table $table); $create = $db->fetch_row($createtable); $tabledump .= $create[1].;\n\n; return $tabledump;}/****** 备份数据库结构和所有数据 ******//*函数名称:data2sql()函数功能:把表的结构和数据转换成为sql函数参数:$table: 要进行提取的表名返 回 值:返回提取后的结果,sql集合函数作者:heiyeluren*/function data2sql($table) { global $db; $tabledump = drop table if exists $table;\n; $createtable = $db->query(show create table $table); $create = $db->fetch_row($createtable); $tabledump .= $create[1].;\n\n; $rows = $db->query(select * from $table); $numfields = $db->num_fields($rows); $numrows = $db->num_rows($rows); while ($row = $db->fetch_row($rows)) { $comma = ; $tabledump .= insert into $table values(; for($i = 0; $i 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; // 保存到本地 if($saveto == local) { ob_end_clean(); header('content-encoding: none'); header('content-type: '.(strpos($http_server_vars['http_user_agent'], 'msie') ? 'application/octetstream' : 'application/octet-stream')); header('content-disposition: '.(strpos($http_server_vars['http_user_agent'], 'msie') ? 'inline; ' : 'attachment; ').'filename='.$local_filename); header('content-length: '.strlen($sqldump)); header('pragma: no-cache'); header('expires: 0'); echo $sqldump; } // 保存到本地结束 // 保存在服务器 if($saveto == server) { if($filename != ) { @$fp = fopen($filename, w+); if ($fp) { @flock($fp, 3); if(@!fwrite($fp, $sqldump)) { @fclose($fp); exit_msg(数据文件无法保存到服务器,请检查目录属性你是否有写的权限。); } else { exit_msg(数据成功备份至服务器 $filename 中。); } } else { exit_msg(无法打开你指定的目录. $filename .,请确定该目录是否存在,或者是否有相应权限); } } else { exit_msg(您没有输入备份文件名,请返回修改。); } } // 保存到服务器结束}else{ exit_msg(数据表没有任何内容);}/* 备份数据库结束 */
呵呵,基本上这样就结束了,然后涉及到的一个问题是如何把数据恢复到数据库中,我想这个是不复杂的,但是最好能够满足有从客户端和从服务器恢复数据的功能。
post[tbl_name]为预备份表名称数组 * 下面介绍mysql数据库备份/恢复的两种方法。
方法一:
___fckpd___0
方法二:
想在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!的代码,形成了如下备份数据库的方法。
备份数据库有两种方式,一种是只备份数据库的结构,一种把是结构和所有的数据都备份出来,当然是第二种方法好啦,不过我为了考虑可能的需求就都作啦。
___fckpd___1
呵呵,基本上这样就结束了,然后涉及到的一个问题是如何把数据恢复到数据库中,我想这个是不复杂的,但是最好能够满足有从客户端和从服务器恢复数据的功能。
post[sqlfile]为预恢复数据文件的名称 * 注意:该备份没有结构备份,只有数据备份 * * 备份文件格式: * `表名称1`{{数据1}}`表名称2`{{数据2}}`表名称3`{{数据3}}... * * 创建时间:2005-02-25 * e-mail: kingerq at msn.com * 来源:http://blog.csdn.net/kingerq */include(../inc/globals.inc.php);//省略包函文件db_mysql.inc和mysql连接信息set_time_limit(0);$dbdir = d:/site/dbbak/;//用绝对路径$txtname = array();if(下面介绍mysql数据库备份/恢复的两种方法。
方法一:
___fckpd___0
方法二:
想在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!的代码,形成了如下备份数据库的方法。
备份数据库有两种方式,一种是只备份数据库的结构,一种把是结构和所有的数据都备份出来,当然是第二种方法好啦,不过我为了考虑可能的需求就都作啦。
___fckpd___1
呵呵,基本上这样就结束了,然后涉及到的一个问题是如何把数据恢复到数据库中,我想这个是不复杂的,但是最好能够满足有从客户端和从服务器恢复数据的功能。
post){ if(!is_writable($dbdir)) { echo 对不起!指定的备份目录不可写!请修改权限; exit; } //op为一个隐形域,识别备份或者恢复 if(下面介绍mysql数据库备份/恢复的两种方法。
方法一:
___fckpd___0
方法二:
想在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!的代码,形成了如下备份数据库的方法。
备份数据库有两种方式,一种是只备份数据库的结构,一种把是结构和所有的数据都备份出来,当然是第二种方法好啦,不过我为了考虑可能的需求就都作啦。
___fckpd___1
呵呵,基本上这样就结束了,然后涉及到的一个问题是如何把数据恢复到数据库中,我想这个是不复杂的,但是最好能够满足有从客户端和从服务器恢复数据的功能。
post[op]){//备份数据 //生成每个表的临时备份文件 foreach(下面介绍mysql数据库备份/恢复的两种方法。
方法一:
___fckpd___0
方法二:
想在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!的代码,形成了如下备份数据库的方法。
备份数据库有两种方式,一种是只备份数据库的结构,一种把是结构和所有的数据都备份出来,当然是第二种方法好啦,不过我为了考虑可能的需求就都作啦。
___fckpd___1
呵呵,基本上这样就结束了,然后涉及到的一个问题是如何把数据恢复到数据库中,我想这个是不复杂的,但是最好能够满足有从客户端和从服务器恢复数据的功能。
post[tbl_name] as $tbl){ $txtname[] = $tbl..txt; $sql = select * from `$tbl` into outfile '.$dbdir.end($txtname).'; $db->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.下面介绍mysql数据库备份/恢复的两种方法。
方法一:
___fckpd___0
方法二:
想在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!的代码,形成了如下备份数据库的方法。
备份数据库有两种方式,一种是只备份数据库的结构,一种把是结构和所有的数据都备份出来,当然是第二种方法好啦,不过我为了考虑可能的需求就都作啦。
___fckpd___1
呵呵,基本上这样就结束了,然后涉及到的一个问题是如何把数据恢复到数据库中,我想这个是不复杂的,但是最好能够满足有从客户端和从服务器恢复数据的功能。
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)
方法二:
想在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!的代码,形成了如下备份数据库的方法。
备份数据库有两种方式,一种是只备份数据库的结构,一种把是结构和所有的数据都备份出来,当然是第二种方法好啦,不过我为了考虑可能的需求就都作啦。
___fckpd___1
呵呵,基本上这样就结束了,然后涉及到的一个问题是如何把数据恢复到数据库中,我想这个是不复杂的,但是最好能够满足有从客户端和从服务器恢复数据的功能。