php MYSQL 数据备份类

功能上有: ­
require_once("backdata.class.php");
$link = @mysql_connect("localhost","数据库名","密码") or die ('Could not connect to server.');
mysql_query("use cms",$link);
mysql_query("set names utf8",$link);
$dbbck=new backupData($link);//实例化它,只要一个链接标识就行了
//备份数据时,如想备份一个数据库中的所有表,你可这样写:
$dbbck->backupTables("cms","./",array('*'));
­
//备份数据时,如想备份一个数据库中的仅一个表时,你可这样写:
$dbbck->backupTables("cms","./",array('user'));
­
//备份数据时,如想备份一个数据库中的多个表时,你可这样写:
­
$dbbck->backupTables("cms","./",array('user','acl','informatoin'));
//注解:$dbbck->backupTables("参1","参2",array());中,
参1为:数据库名,
参2为:要存放备份数据的位置(即目录地址)
第三个为:你要保存那些表
ok...
­
以下为代码:


代码如下:

<?php
/*
*
*简单的一个备份数据类
*author FC
*
*/
class backupData{
private $mysql_link;//链接标识
private $dbName;//数据库名
private $dataDir; //数据所要存放的目录
private $tableNames;//表名
public function __construct($mysql_link){
­
$this->mysql_link = $mysql_link;
}
­
public function backupTables($dbName,$dataDir,$tableNames){//开始备份
­
$this->dbName = $dbName;
$this->dataDir = $dataDir;
$this->tableNames = $tableNames;
$tables=$this->delarray($this->tableNames);
$sqls='';
foreach($tables as $tablename){
if($tablename==''){//表不存在时
continue;
}
//************************以下是形成SQL的前半部分**************
//如果存在表,就先删除
$sqls .= "DROP TABLE IF EXISTS $tablename;\n";
//读取表结构
$rs = mysql_query("SHOW CREATE TABLE $tablename",$this->mysql_link);
$row=mysql_fetch_row($rs);
//获得表结构组成SQL
$sqls.=$row['1'].";\n\n";
unset($rs);
unset($row);
//************************以下是形成SQL的后半部分**************
//查寻出表中的所有数据
$rs=mysql_query("select * from $tablename",$this->mysql_link);
//表的字段个数
$field=mysql_num_fields($rs);
//形成此种SQL语句:"INSERT INTO `groups` VALUES('1499e0ca25988d','主任','','0');"
while($rows=mysql_fetch_row($rs)){
$comma='';//逗号
$sqls.="INSERT INTO `$tablename` VALUES(";
for($i=0;$i<$field;$i++){
$sqls.=$comma."'".$rows[$i]."'";
$comma=',';
}
$sqls.=");\n\n\n";
}
}
$backfilepath=$this->dataDir.date("Ymdhis",time()).'.sql';
//写入文件
$filehandle = fopen($backfilepath, "w");
fwrite($filehandle, $sqls);
fclose($filehandle);
}
­
private function delarray($array){//处理传入进来的数组
foreach($array as $tables){
if($tables=='*'){//所有的表(获得表名时不能按常规方式来组成一个数组)
$newtables=mysql_list_tables($this->dbName,$this->mysql_link);
$tableList = array();
for ($i = 0; $i < mysql_numrows($newtables); $i++){
array_push($tableList,mysql_tablename($newtables, $i));
}
$tableList=$tableList;
}else{
$tableList=$array;
break;
}
}
return $tableList;
}
}

(0)

相关推荐

  • PHP备份/还原MySQL数据库的代码

    以下是代码: 一.备份数据库并下载到本地[db_backup.php] 复制代码 代码如下: <?php // 设置SQL文件保存文件名 $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; // 所保存的文件名 header("Content-disposition:filename=".$filename); header("Content-type:a

  • 详解MYSQL的备份还原(PHP实现)

    手把手教你实现MYSQL的备份还原示例代码用我比较熟悉的PHP,当然你看完并理解了其中的思路,相信你也可以快速地用你熟悉的语言自己写出来.一.新建dbBackup类,设置默认参数. 复制代码 代码如下: class dbBackup {    public $host='localhost';    //数据库地址    public $user='root';    //登录名    public $pwd='';    //密码    public $database;    //数据库名 

  • php实现mysql数据库分表分段备份

    分卷导出思路:统计sql语句变量的长度,按1个字符当成1 字节比较,如果大于设定分卷大小,则写入一个sql文件(我也不知道这样统计是否稳当,这也是借鉴其他的人的). 分卷导入思路:按行读取sql文件,将每一行当作完整的sql语句存到数组再循环执行插入数据库就可以了,但是在创建表语句分了多行,这个需要单独处理(就这个花了我好长时间的): <?php //宋正河 转载请注明出处 set_time_limit(0); header('content-type:text/html;charset=utf

  • linux php mysql数据库备份实现代码

    但是出现了问题: 第一.运行php的是apche的用户,比如是nobody,那么它一般是没有权限访问/usr/local/mysql/data目录的 第二.就算能够访问,那么你如何能够把/usr/local/mysql/data目录下的文件拷贝出来呢?因为mysql在运行的时候是不运行访问的,那么nobody用户有权限停止mysql的服务,不可能! 越想越不对劲,没有办法,看能不能从php操作数据库入手,于是就去看了下phpMyadmin和Discuz!的代码,呵呵,于是偷抄了Discuz!的代

  • 备份mysql数据库的php代码(一个表一个文件)

    复制代码 代码如下: <?php $cfg_dbhost ='localhost';//mysql主机 $cfg_dbname ='sq_test';//数据库名 $cfg_dbuser ='root';//数据库用户名 $cfg_dbpwd ='jb51.net';//数据库用户密码 $cfg_db_language ='utf8';//数据库编码 class dbmysql{ public static $dbhost = 'localhost'; public static $dbname

  • php实现mysql备份恢复分卷处理的方法

    本文实例讲述了php实现mysql备份恢复分卷处理的方法.分享给大家供大家参考.具体分析如下: 分卷处理就是把握们要处理的数据分成一个个小文件进行处理了,这里我来给大家介绍一个php mysql备份恢复分卷处理类,实现mysql数据库分卷备份,选择表进行备份,实现单个sql文件及分卷sql导入. 分卷导入类及思路详解 数据库导入导出是一个后台必要拥有的功能,网上一搜,有很多关于数据库导入导出的,但基本上一个大的系统,包含了许多我们并不需要的,而且他们都是自己的后台的形式,我并不喜欢的是拿人家的东

  • 推荐没有虚拟主机的小巧的Mysql数据库备份脚本(PHP)

    最近工作中常常需要备份远程服务器上的Mysql数据库到本机,一开始采用直接备份Mysql的data目录的办法,但由于编码不同的原因经常产生问题.后来朋友推荐我使用一个非常方便小巧的PHP程序--MyDB.一共包含三个文件: 1. mydb.php //DB类 复制代码 代码如下: <? class db{ var $linkid; var $sqlid; var $record; function db($host="",$username="",$passw

  • php实现mysql数据库备份类

    1.实例化DbBak需要告诉它两件事:数据服务器在哪里($connectid).备份到哪个目录($backupDir): require_once('DbBak.php');     require_once('TableBak.php');     $connectid = mysql_connect('localhost','root','123456');     $backupDir = 'data';     $DbBak = new DbBak($connectid,$backupD

  • php实现MySQL数据库备份与还原类实例

    本文实例讲述了php实现MySQL数据库备份与还原类.分享给大家供大家参考.具体分析如下: 这是一个非常简单的利用php来备份mysql数据库的类文件,我们只要简单的在dbmange中配置好连接地址用户名与数据库即可,下面我们一起来看这个例子,代码如下: 复制代码 代码如下: <?php   /**   * 创建时间: 2012年5月21日   *   * 说明:分卷文件是以_v1.sql为结尾(20120522021241_all_v1.sql)   * 功能:实现mysql数据库分卷备份,选

  • php MYSQL 数据备份类

    功能上有: ­ require_once("backdata.class.php"); $link = @mysql_connect("localhost","数据库名","密码") or die ('Could not connect to server.'); mysql_query("use cms",$link); mysql_query("set names utf8",$li

  • MySQL数据备份、还原、数据库迁移以及表的导出和导入

    目录 前言 一.数据备份 1.使用mysqldump命令备份 2.直接复制整个数据库目录 3.使用mysqlhotcopy工具快速备份 二.数据还原 1.使用mysql命令还原 2.直接复制到数据库目录 三.数据库迁移 1.相同版本的MySQL数据库之间的迁移 2.不同版本的MySQL数据库之间的迁移 四.表的导出和导入 1.用select…into outfile导出文本文件 2.用mysqldump命令导出文本文件 3.用mysql命令导出文本文件 4.用load data infile方式

  • MySQL数据备份之mysqldump的使用详解

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du

  • C#实现操作MySql数据层类MysqlHelper实例

    本文实例讲述了C#实现操作MySql数据层类MysqlHelper.分享给大家供大家参考.具体如下: using System; using System.Data; using System.Configuration; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using MySql.Data; using MySql.Data.MySqlCli

  • MySQL数据备份方法的选择与思考

    从事DBA的行业也有两年多了,在数据备份上无论是理论和实践上,都积累了一些经验,恰逢这两天又出现一些数据备份方面的问题,这里,我将之前遇到过的数据备份方法简单做个整理. 我们都知道,保障数据库的稳定.安全.高效运行,是DBA的工作职责所在.对于DBA来讲,要想实现数据安全,数据备份可能是至关重要的一个环节. 我曾经就遇到过一个案例,业务方误删数据引发故障,要求DBA恢复数据,结果发现当天的数据没有备份,场面一度十分尴尬,本来这个故障是业务引发的,但是由于没有数据备份,最后业务和DBA各打五十大板

  • MySQL数据备份之mysqldump的使用方法

     一.mysqldump 简介 mysqldump 是 MySQL 自带的逻辑备份工具.MySQLdump是一个数据库逻辑备份程序,可以使用对一个或者多个mysql数据库进行备份或者将数据传输到其他mysql服务器.执行mysqldump时需要账户拥有select权限才可以进行备份数据表,show view权限用于备份视图,trigger权限用于备份触发器等. mysqldump不是大数据备份的解决方案,因为mysqldump需要通过重建sql语句来实现备份功能,对于数据量比较大的数据库备份与还

  • 史上最简单的MySQL数据备份与还原教程(上)(三十五)

    数据备份与还原第一篇分享给大家,具体内容如下 基础概念: 备份,将当前已有的数据或记录另存一份: 还原,将数据恢复到备份时的状态. 为什么要进行数据的备份与还原? 防止数据丢失: 保护数据记录. 数据备份与还原的方式有很多种,具体可以分为:数据表备份.单表数据备份.SQL备份和增量备份. 数据表备份 数据表备份,不需要通过 SQL 来备份,我们可以直接进入到数据库文件夹复制对应的表结构以及数据:在需要还原数据的时候,直接将备份(复制)的内容放回去即可. 不过想要进行数据表备份是有前提条件的,因为

  • 史上最简单的MySQL数据备份与还原教程(中)(三十六)

    数据备份与还原第二篇,具体如下 基础概念: 备份,将当前已有的数据或记录另存一份: 还原,将数据恢复到备份时的状态. 为什么要进行数据的备份与还原? 防止数据丢失:保护数据记录. 数据备份与还原的方式有很多种,具体可以分为:数据表备份.单表数据备份.SQL备份和增量备份. 单表数据备份 单表数据备份,每次只能备份一张表,而且只能备份数据,不能备份表结构. 通常的使用场景为:将表中的数据导出到文件. 备份方法:从表中选出一部分数据保存到外部的文件中, select */字段列表 + into ou

  • 史上最简单的MySQL数据备份与还原教程(下)(三十七)

    数据备份与还原第三篇,具体如下 基础概念: 备份,将当前已有的数据或记录另存一份: 还原,将数据恢复到备份时的状态. 为什么要进行数据的备份与还原? 防止数据丢失: 保护数据记录. 数据备份与还原的方式有很多种,具体可以分为:数据表备份.单表数据备份.SQL备份和增量备份. SQL 备份 SQL 备份,备份的是 SQL 语句.在进行 SQL 备份的时候,系统会对表结构以及数据进行处理,变成相应的 SQL 语句,然后执行备份.在还原的时候,只要执行备份的 SQL 语句即可,此种备份方式主要是针对表

  • Linux下实现MySQL数据备份和恢复的命令使用全攻略

    为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有三种备份恢复方式: 1.利用Mysqldump+二进制日志实现备份 2.利用LVM快照+二进制日志实现备份 3.使用Xtrabackup备份 一:实验环境介绍: 系统介绍:CentOS6.4_X64 数据库版本:mysql-5.5.33 二:基于Mysqldump命令实现备份恢复 2.1.思路概念

随机推荐