您的当前位置:首页正文

php备份mysql数据库

2023-11-10 来源:帮我找美食网

/*程序功能:mysql数据库备份功能*/ini_set(‘max_execution_time‘,‘0‘);ini_set(‘memory_limit‘,‘1024M‘);//加上这两行,可以备份大数据,昨晚测了一下公司的一个600M的表,很快就可以备份成功$code_type = ‘gbk‘;header("Content-type:text/html;charset=$code_type");header("Content-disposition: filename=backup.sql");//所保存的文件名 header("Content-type: application/octetstream"); header("Pragma: no-cache"); header("Expires: 0"); $conn = mysql_connect("localhost","root","root"); $db = mysql_select_db($dbname,$conn); mysql_query("set names $code_type");$dbname="test";//数据库名$flag = ‘1‘;//1:全部备份,2:只备份表结构,3:只备份数据echo back_dataBase($dbname,$conn,$flag);//备份数据库//开始备份function back_database($dbname,$conn,$flag=‘1‘){$crlf="";$str = ‘‘;$now = date(‘Y年m月d日H点i分s秒‘,time());$str .= "$crlf--$crlf-- 数据库: `$dbname`$crlf--$crlf-- 导出日期: `$now`$crlf--$crlf";$str .= "$crlf--$crlf-- 作者: ****$crlf--$crlf-- QQ: 1019822077$crlf--$crlf";$str .= "-- blog: http://hi.baidu.com/woaidelphi/blog$crlf--$crlf";$str .= "SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";$crlf";$tables = mysql_list_tables($dbname,$conn); $num_tables = mysql_numrows($tables);//表的总数 $i = 0;while($i<$num_tables){//循环所有的表 $table = mysql_tablename($tables,$i); //备份表结构if($flag==‘1‘ or $flag==‘2‘){$query = mysql_query("SHOW CREATE TABLE $table");$row = mysql_fetch_row($query);$str .= "-- --------------------------------------------------------$crlf$crlf";$str .= "--$crlf-- 表的结构 `$table` $crlf--$crlf";$str .= $row[1].";$crlf--$crlf";}//备份表内容 if($flag==‘1‘ or $flag==‘3‘){$str .= "--$crlf-- 导出表中的数据 `$table` $crlf--$crlf";$str .= get_table_content($dbname,$table);$str .= "$crlf$crlf";}$i++; }return $str;}//得到表中的记录sql function get_table_content($dbname,$table){ $crlf = "";$schema_create = ""; $temp = ""; $result = mysql_db_query($dbname,"SELECT * FROM $table"); $i = 0; while($row = mysql_fetch_row($result)){ $schema_insert = "INSERT INTO $table VALUES ("; for($j=0; $j<mysql_num_fields($result);$j++){ if(!isset($row[$j])) $schema_insert .= " NULL,"; elseif($row[$j] != "") $schema_insert .= " ‘".addslashes($row[$j])."‘,"; else $schema_insert .= " ‘‘,"; } $schema_insert = ereg_replace(",$", "", $schema_insert); $schema_insert .= ");$crlf"; $temp = $temp.$schema_insert ; $i++; } return $temp; }

 

php备份mysql数据库

标签:

小编还为您整理了以下内容,可能对您也有帮助:

大家php mysql多的话是用什么备份工具的

下面提供两种方法,仅供研究使用。
  第1种方法:
  复制代码 代码如下:
  <?php
  $host="localhost";
  $user="root";
  $password="";
  $dbname="dbname";
  mysql_connect($host,$user,$password);
  mysql_select_db($dbname);
  $mysql= "set names utf8;";
  mysql_query($mysql);
  $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'].";\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);\n";}
  $mysql.="\n";
  }
  $filename=$dbname.date('Ymj').".sql";
  $fp = fopen($filename,'w');
  fputs($fp,$mysql);
  fclose($fp);
  echo "数据备份成功,生成备份文件".$filename;?>
  第2种方法:
  复制代码 代码如下:
  <?php
  $host="localhost";
  $user="root";
  $password="";
  $dbname="dbname";
  backup_tables($host,$user,$password,$dbname);/* backup the db OR just a table */
  function backup_tables($host,$user,$pass,$name,$tables = '*'){
  $link = mysql_connect($host,$user,$pass);mysql_select_db($name,$link);
  //get all of the tables
  if($tables == '*')
  {
  $tables = array();
  $result = mysql_query('SHOW TABLES');
  while($row = mysql_fetch_row($result))
  {
  $tables[] = $row[0];
  }
  }
  else
  {
  $tables = is_array($tables) ? $tables : explode(',',$tables);}
  $return = '';
  //cycle through
  foreach($tables as $table)
  {
  $result = mysql_query('SELECT * FROM '.$table);$num_fields = mysql_num_fields($result);
  $return.= 'DROP TABLE '.$table.';';
  $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));$return.= "\n\n".$row2[1].";\n\n";
  for ($i = 0; $i < $num_fields; $i++)
  {
  while($row = mysql_fetch_row($result))
  {
  $return.= 'INSERT INTO '.$table.' VALUES(';for($j=0; $j<$num_fields; $j++)
  {
  $row[$j] = addslashes($row[$j]);
  $row[$j] = ereg_replace("\n","\\n",$row[$j]);if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
  if ($j<($num_fields-1)) { $return.= ','; }
  }
  $return.= ");\n";
  }
  }
  $return.="\n\n\n";
  }
  //save file
  $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');fwrite($handle,$return);
  fclose($handle);
  }
  ?>

大家php mysql多的话是用什么备份工具的

下面提供两种方法,仅供研究使用。
  第1种方法:
  复制代码 代码如下:
  <?php
  $host="localhost";
  $user="root";
  $password="";
  $dbname="dbname";
  mysql_connect($host,$user,$password);
  mysql_select_db($dbname);
  $mysql= "set names utf8;";
  mysql_query($mysql);
  $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'].";\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);\n";}
  $mysql.="\n";
  }
  $filename=$dbname.date('Ymj').".sql";
  $fp = fopen($filename,'w');
  fputs($fp,$mysql);
  fclose($fp);
  echo "数据备份成功,生成备份文件".$filename;?>
  第2种方法:
  复制代码 代码如下:
  <?php
  $host="localhost";
  $user="root";
  $password="";
  $dbname="dbname";
  backup_tables($host,$user,$password,$dbname);/* backup the db OR just a table */
  function backup_tables($host,$user,$pass,$name,$tables = '*'){
  $link = mysql_connect($host,$user,$pass);mysql_select_db($name,$link);
  //get all of the tables
  if($tables == '*')
  {
  $tables = array();
  $result = mysql_query('SHOW TABLES');
  while($row = mysql_fetch_row($result))
  {
  $tables[] = $row[0];
  }
  }
  else
  {
  $tables = is_array($tables) ? $tables : explode(',',$tables);}
  $return = '';
  //cycle through
  foreach($tables as $table)
  {
  $result = mysql_query('SELECT * FROM '.$table);$num_fields = mysql_num_fields($result);
  $return.= 'DROP TABLE '.$table.';';
  $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));$return.= "\n\n".$row2[1].";\n\n";
  for ($i = 0; $i < $num_fields; $i++)
  {
  while($row = mysql_fetch_row($result))
  {
  $return.= 'INSERT INTO '.$table.' VALUES(';for($j=0; $j<$num_fields; $j++)
  {
  $row[$j] = addslashes($row[$j]);
  $row[$j] = ereg_replace("\n","\\n",$row[$j]);if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
  if ($j<($num_fields-1)) { $return.= ','; }
  }
  $return.= ");\n";
  }
  }
  $return.="\n\n\n";
  }
  //save file
  $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');fwrite($handle,$return);
  fclose($handle);
  }
  ?>

thinkPHP使用pclzip打包备份mysql数据库的方法

本文实例讲述了thinkPHP使用pclzip打包备份mysql数据库的方法。分享给大家供大家参考,具体如下:
PclZip介绍
PclZip
library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等
数据库备份是一件非常重要的事情,备份的方式也很多有的通过vps直接进行备份、有的通过phpmyadmin进行数据进行备份。小编觉得这些该麻烦了并且备份好的.sql文件过于太大占用了一定的空间。所以用pclzip将sql文件进行压缩,这样节省了一部分空间。之前小编有写过数据库备份的代码这里就不再复述,Pclzip官方下载地址:http://www.phpconcept.net/pclzip/pclzip-downloads(最新版本2-8-2)。
本站下载地址。
在DatabaseAction.class.php文件中查找
file_put_contents在下面添加如下代码
import("ORG.Util.PclZip");
$archive
=
new
PclZip('./data/'.date("y-m-d").'.zip');
$v_list
=
$archive->create($dir);
if(file_exists($dir)&&$v_list
!=
0)
{
$this->success("备份成功&&压缩成功");
}else
{
die("Error
:
".$archive->errorInfo(true));
$this->error("备份失败");
}
并将原有的DatabaseAction.class.php中原有if判断删除
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

thinkPHP使用pclzip打包备份mysql数据库的方法

本文实例讲述了thinkPHP使用pclzip打包备份mysql数据库的方法。分享给大家供大家参考,具体如下:
PclZip介绍
PclZip
library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等
数据库备份是一件非常重要的事情,备份的方式也很多有的通过vps直接进行备份、有的通过phpmyadmin进行数据进行备份。小编觉得这些该麻烦了并且备份好的.sql文件过于太大占用了一定的空间。所以用pclzip将sql文件进行压缩,这样节省了一部分空间。之前小编有写过数据库备份的代码这里就不再复述,Pclzip官方下载地址:http://www.phpconcept.net/pclzip/pclzip-downloads(最新版本2-8-2)。
本站下载地址。
在DatabaseAction.class.php文件中查找
file_put_contents在下面添加如下代码
import("ORG.Util.PclZip");
$archive
=
new
PclZip('./data/'.date("y-m-d").'.zip');
$v_list
=
$archive->create($dir);
if(file_exists($dir)&&$v_list
!=
0)
{
$this->success("备份成功&&压缩成功");
}else
{
die("Error
:
".$archive->errorInfo(true));
$this->error("备份失败");
}
并将原有的DatabaseAction.class.php中原有if判断删除
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

备份mysql是用的什么方法

MySQL备份数据库的两个主要实际操作方案是采用MySQL(与PHP搭配之最佳组合) mp程序或是直接复制相关的数据库文件(如用cp、cpio或tar等)。当然每种实际应用方法都有其优缺点:

MySQL(和PHP搭配之最佳组合)mp与MySQL(和PHP搭配之最佳组合)服务器协同操作。
直接拷贝方法在服务器外部进行,并且你必须采取措施保证没有客户正在修改你将拷贝的表。如果你想用文件系统备份来备份数据库,也会发生同样的问题:
如果数据库表在文件系统备份过程中被修改,进入备份的表文件主语不一致的状态,而对以后的恢复表将失去意义。文件系统备份与直接拷贝文件的区别是对后者你
完全控制了备份过程,这样你能采取措施确保服务器让表不受干扰。

MySQL(和PHP搭配之最佳组合)mp比直接拷贝要慢些。

MySQL(和PHP搭配之最佳组合)mp生成能够移植到其它机器的文本文件,甚至那些有不同硬件结构的机器上。直接拷贝文件不能移植到其它机器上,
除非你正在拷贝的表使用MyISAM存储格式。ISAM表只能在相似的硬件结构的机器上拷贝。在MySQL(和PHP搭配之最佳组合)
3.23中引入的MyISAM表存储格式解决了该问题,因为该格式是机器无关的,所以直接拷贝文件可以移植到具有不同硬件结构的机器上。只要满足两个条
件:另一台机器必须也运行MySQL(和PHP搭配之最佳组合) 3.23或以后版本,而且文件必须以MyISAM格式表示,而不是ISAM格式。

不管你使用哪种备份方法,如果你需要恢复数据库,有几个原则应该遵守,以确保最好的结果:

定期实施备份。建立一个计划并严格遵守。

让服务器执行更新日志。当你在崩溃后需要恢复数据时,更新日志将帮助你。在你用备份文件恢复数据到备份时的状态后,你可以通过运行更新日志中的查询再次运用备份后面的修改,这将数据库中的表恢复到崩溃发生时的状态。

以文件系统备份的术语讲,数据库备份文件代表完全倾倒(full mp),而更新日志代表渐进倾倒(incremental mp)。

使用一种统一的和易理解的备份文件命名机制。象backup1、buckup2等不是特别有意义。当实施你的恢复时,你将浪费时间找出文件里是什么东西。你可能发觉用数据库名和日期构成备份文件名会很有用。例如:

%MySQL(和PHP搭配之最佳组合)mp samp_db >/usr/archives/MySQL(和PHP搭配之最佳组合)/samp_db.1999-10-02
%MySQL(和PHP搭配之最佳组合)mp menagerie >/usr/archives/MySQL(和PHP搭配之最佳组合)/menagerie.1999-10-02

备份mysql是用的什么方法

MySQL备份数据库的两个主要实际操作方案是采用MySQL(与PHP搭配之最佳组合) mp程序或是直接复制相关的数据库文件(如用cp、cpio或tar等)。当然每种实际应用方法都有其优缺点:

MySQL(和PHP搭配之最佳组合)mp与MySQL(和PHP搭配之最佳组合)服务器协同操作。
直接拷贝方法在服务器外部进行,并且你必须采取措施保证没有客户正在修改你将拷贝的表。如果你想用文件系统备份来备份数据库,也会发生同样的问题:
如果数据库表在文件系统备份过程中被修改,进入备份的表文件主语不一致的状态,而对以后的恢复表将失去意义。文件系统备份与直接拷贝文件的区别是对后者你
完全控制了备份过程,这样你能采取措施确保服务器让表不受干扰。

MySQL(和PHP搭配之最佳组合)mp比直接拷贝要慢些。

MySQL(和PHP搭配之最佳组合)mp生成能够移植到其它机器的文本文件,甚至那些有不同硬件结构的机器上。直接拷贝文件不能移植到其它机器上,
除非你正在拷贝的表使用MyISAM存储格式。ISAM表只能在相似的硬件结构的机器上拷贝。在MySQL(和PHP搭配之最佳组合)
3.23中引入的MyISAM表存储格式解决了该问题,因为该格式是机器无关的,所以直接拷贝文件可以移植到具有不同硬件结构的机器上。只要满足两个条
件:另一台机器必须也运行MySQL(和PHP搭配之最佳组合) 3.23或以后版本,而且文件必须以MyISAM格式表示,而不是ISAM格式。

不管你使用哪种备份方法,如果你需要恢复数据库,有几个原则应该遵守,以确保最好的结果:

定期实施备份。建立一个计划并严格遵守。

让服务器执行更新日志。当你在崩溃后需要恢复数据时,更新日志将帮助你。在你用备份文件恢复数据到备份时的状态后,你可以通过运行更新日志中的查询再次运用备份后面的修改,这将数据库中的表恢复到崩溃发生时的状态。

以文件系统备份的术语讲,数据库备份文件代表完全倾倒(full mp),而更新日志代表渐进倾倒(incremental mp)。

使用一种统一的和易理解的备份文件命名机制。象backup1、buckup2等不是特别有意义。当实施你的恢复时,你将浪费时间找出文件里是什么东西。你可能发觉用数据库名和日期构成备份文件名会很有用。例如:

%MySQL(和PHP搭配之最佳组合)mp samp_db >/usr/archives/MySQL(和PHP搭配之最佳组合)/samp_db.1999-10-02
%MySQL(和PHP搭配之最佳组合)mp menagerie >/usr/archives/MySQL(和PHP搭配之最佳组合)/menagerie.1999-10-02

MySQL数据库如何导入导出(备份还原)

本文适用范围:全面阐述MySQL数据库的各种操作,分虚拟主机和服务器两种情况。

虚拟主机

1、通过PHPMyAdmin的导入导出功能,这个软件一般只支持几兆数据的导出,太大的数据可能会超时。

2、通过程序自带的数据库备份还原功能来操作,一些常见的PHP程序如DZ论坛等,后台都有数据库还原和备份的功能,方便我们转移空间数据。

3、如果您的数据库在朝暮数据购买,我们的管理面板支持一键备份和还原。点击备份按钮后,您可以到数据库对应的空间上通过FTP方式下载。

服务器或VPS

首先我们远程到服务器上(Windows或Linux均可),并准备好root密码或具体数据库的用户名密码。

一、数据库的导入(还原)

1、source命令

1)打开开始菜单->程序->MySQL->MySQL Command Line Client,输入MySQL的root密码。

2)然后输入use 数据库名;进入对应的数据库,再用source 备份文件具体路径;命令导入备份文件。注意,在这里的命令后面都要加;分号,截图如下:

2、mysql命令

1)如果是Windows系统,请在命令行模式下进入mysql的bin目录,如D:Programmysql41bin。如果是Linux系统,请直接看下面的步骤。

2)执行mysql命令导入数据库,命令格式为:

mysql -u用户名 -p密码 数据库名<备份文件具体路径

比如:mysql -uroot -pabc123 mydb<file.sql,其中用户名和密码也可以是具体数据库的,不一定要root的。截图如下:

二、数据库的导出(备份)

一般使用mysqlmp命令

1)如果是Windows系统,请在命令行模式下进入mysql的bin目录,如D:Programmysql41bin。如果是Linux系统,请直接看下面的步骤。

2)执行mysqlmp命令导入数据库,命令格式为:

mysqlmp -u用户名 -p密码 数据库名>备份文件具体路径

比如:mysqlmp -uroot -pabc123 mydb>file.sql,其中用户名和密码也可以是具体数据库的,不一定要root的。如果出现when using LOCK TABLES错误,请在database后面加上--skip-lock-tables就不会报错了。截图如下:您可能感兴趣的文章:MySQL 文本文件的导入导出数据的方法Mysql 导入导出csv 中文乱码问题的解决方法mysql 导入导出数据库、数据表的方法MySQL导入导出.sql文件及常用命令小结Mysql导入导出工具Mysqlmp和Source命令用法详解mysql 导入导出数据库以及函数、存储过程的介绍mysqlmp命令导入导出数据库方法与实例汇总MYSQL命令行导入导出数据库详解MYSQL导入导出sql文件简析HeidiSQL工具导出导入MySQL数据php写mysql备份表注释和行注释出乱码问题

最好不要加表注释。建立完善的数据结构说明文档。是个好选择。

以前碰到过 phpmyadmin 版本不一样。无法正确导入sql 的问题。

检查导出的 生成文件 是否是 utf-8 编码。。数据库建立也采用utf-8 。然后你在用程序导入SQL 试试看。

需要检查 :SQL 文件。数据库编码。以及导入程序。是否都是 utf8 编码的。可以用 editplus 或 ultraedit 进行编码转换!

Top