• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 没有虚拟主机的小型Mysql数据库备份脚本

没有虚拟主机的小型Mysql数据库备份脚本

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了推荐没有虚拟主机的小巧的Mysql数据库备份脚本(PHP)等相关知识,希望本文的分享对您有所帮助
最近工作中常常需要备份远程服务器上的Mysql数据库到本机,一开始采用直接备份Mysql的data目录的办法,但由于编码不同的原因经常产生问题。后来朋友推荐我使用一个非常方便小巧的PHP程序——MyDB。一共包含三个文件:

1. mydb.php //DB类

代码如下:

<? 
class db{ 
var $linkid; 
var $sqlid; 
var $record; 
function db($host="",$username="",$password="",$database="") 
    { 
    if(!$this->linkid)  @$this->linkid = mysql_connect($host, $username, $password) or die("连接服务器失败."); 
    @mysql_select_db($database,$this->linkid) or die("无法打开数据库"); 
    return $this->linkid;} 
function query($sql) 
    {if($this->sqlid=mysql_query($sql,$this->linkid)) return $this->sqlid; 
    else { 
        $this->err_report($sql,mysql_error); 
    return false;} 
    } 
function nr($sql_id="") 
    {if(!$sql_id) $sql_id=$this->sqlid; 
    return mysql_num_rows($sql_id);} 
function nf($sql_id="") 
    {if(!$sql_id) $sql_id=$this->sqlid; 
    return mysql_num_fields($sql_id);} 
function nextrecord($sql_id="") 
    {if(!$sql_id) $sql_id=$this->sqlid; 
    if($this->record=mysql_fetch_array($sql_id))  return $this->record; 
    else return false; 
    } 
function f($name) 
    { 
    if($this->record[$name]) return $this->record[$name]; 
    else return false; 
    } 
function close() {mysql_close($this->linkid);} 
function lock($tblname,$op="WRITE") 
    {if(mysql_query("lock tables ".$tblname." ".$op)) return true; else return false;} 
function unlock() 
    {if(mysql_query("unlock tables")) return true; else return false;} 
function ar() { 
    return @mysql_affected_rows($this->linkid); 
  } 
function i_id() { 
        return mysql_insert_id(); 
    } 
function err_report($sql,$err) 
    { 
echo "Mysql查询错误<br>"; 
echo "查询语句:".$sql."<br>"; 
echo "错误信息:".$err; 
    } 
/****************************************类结束***************************/ 
}?>


2. backup.php //备份脚本

代码如下:

<? 
global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb; 
$mysqlhost="localhost"; //host name 
$mysqluser="root";              //login name 
$mysqlpwd="";              //password 
$mysqldb="";        //name of database 
include("mydb.php"); 
$d=new db($mysqlhost,$mysqluser,$mysqlpwd,$mysqldb); 
/*--------------界面--------------*/if(!$_POST['act']){/*----------------------*/ 
$msgs[]="服务器备份目录为backup"; 
$msgs[]="对于较大的数据表,强烈建议使用分卷备份"; 
$msgs[]="只有选择备份到服务器,才能使用分卷备份功能"; 
show_msg($msgs); 
?> 
<form name="form1" method="post" action="backup.php"> 
  <table width="99%" border="1" cellpadding='0' cellspacing='1'> 
    <tr align="center" class='header'><td colspan="2">数据备份</td></tr> 
    <tr><td colspan="2">备份方式</td></tr> 
    <tr><td><input type="radio" name="bfzl" value="quanbubiao">        备份全部数据</td><td>备份全部数据表中的数据到一个备份文件</td></tr> 
    <tr><td><input type="radio" name="bfzl" value="danbiao">备份单张表数据  
        <select name="tablename"><option value="">请选择</option> 
          <? 
        $d->query("show table status from $mysqldb"); 
        while($d->nextrecord()){ 
        echo "<option value='".$d->f('Name')."'>".$d->f('Name')."</option>";} 
        ?> 
        </select></td><td>备份选中数据表中的数据到单独的备份文件</td></tr> 
    <tr><td colspan="2">使用分卷备份</td></tr> 
    <tr><td colspan="2"><input type="checkbox" name="fenjuan" value="yes"> 
        分卷备份 <input name="filesize" type="text" size="10">K</td></tr> 
    <tr><td colspan="2">选择目标位置</td></tr> 
    <tr><td colspan="2"><input type="radio" name="weizhi" value="server" checked>备份到服务器</td></tr><tr class="cells"><td colspan='2'> <input type="radio" name="weizhi" value="localpc"> 
        备份到本地</td></tr> 
    <tr><td colspan="2" align='center'><input type="submit" name="act" value="备份"></td></tr> 
  </table></form> 
<?/*-------------界面结束-------------*/}/*---------------------------------*/ 
/*----*/else{/*--------------主程序-----------------------------------------*/ 
if($_POST['weizhi']=="localpc"&&$_POST['fenjuan']=='yes') 
    {$msgs[]="只有选择备份到服务器,才能使用分卷备份功能"; 
show_msg($msgs); pageend();} 
if($_POST['fenjuan']=="yes"&&!$_POST['filesize']) 
    {$msgs[]="您选择了分卷备份功能,但未填写分卷文件大小"; 
show_msg($msgs); pageend();} 
if($_POST['weizhi']=="server"&&!writeable("./backup")) 
    {$msgs[]="备份文件存放目录'./backup'不可写,请修改目录属性"; 
show_msg($msgs); pageend();} 
/*----------备份全部表-------------*/if($_POST['bfzl']=="quanbubiao"){/*----*/ 
/*----不分卷*/if(!$_POST['fenjuan']){/*--------------------------------*/ 
if(!$tables=$d->query("show table status from $mysqldb")) 
    {$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();} 
$sql=""; 
while($d->nextrecord($tables)) 
    { 
    $table=$d->f("Name"); 
    $sql.=make_header($table); 
    $d->query("select * from $table"); 
    $num_fields=$d->nf(); 
    while($d->nextrecord()) 
    {$sql.=make_record($table,$num_fields);} 
    } 
$filename=date("Ymd",time())."_all.sql"; 
if($_POST['weizhi']=="localpc") down_file($sql,$filename); 
elseif($_POST['weizhi']=="server") 
    {if(write_file($sql,$filename)) 
$msgs[]="全部数据表数据备份完成,生成备份文件'./backup/$filename'"; 
    else $msgs[]="备份全部数据表失败"; 
    show_msg($msgs); 
    pageend(); 
    } 
/*-----------------不要卷结束*/}/*-----------------------*/ 
/*-----------------分卷*/else{/*-------------------------*/ 
if(!$_POST['filesize']) 
    {$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();} 
if(!$tables=$d->query("show table status from $mysqldb")) 
    {$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();} 
$sql=""; $p=1; 
$filename=date("Ymd",time())."_all"; 
while($d->nextrecord($tables)) 
{ 
    $table=$d->f("Name"); 
    $sql.=make_header($table); 
    $d->query("select * from $table"); 
    $num_fields=$d->nf(); 
    while($d->nextrecord()) 
    {$sql.=make_record($table,$num_fields); 
    if(strlen($sql)>=$_POST['filesize']*1000){ 
            $filename.=("_v".$p.".sql"); 
            if(write_file($sql,$filename)) 
 
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-12-05MySQL 教程之SQL数据的基本操作
  • 2018-12-055个mysql优化limit查询语句总结
  • 2017-05-11MySQL 5.5的max_allowed_packet属性的修改方法
  • 2018-12-05SQLServer 数据修复命令DBCC一览
  • 2018-12-05总结关于命令包注意点
  • 2018-12-05Oracle 日期的一些简单使用
  • 2017-05-11MySQL查询本周、上周、本月、上个月份数据的sql代码
  • 2018-12-05MYSQL学习总结(七):MYSQL监控
  • 2018-12-05如何在 SQL SERVER 中快速有条件删除海量数据
  • 2018-12-05mysql中order by in 的字符顺序(推荐)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MyEclipse连接MySQL数据库图文教程_MySQL
    • Mysql经典的“8小时问题”
    • 教你为MySQL数据库换挡加速
    • SQL Server如何保证可空字段中非空值唯一
    • 详细介绍如何在Linux中重置MySQL或者MariaDB的root密码(图)
    • Microsoft SQLServer的版本区别及选择
    • SQLServer 2008中通过DBCC OPENTRAN和会话查询事务
    • mysql 5.7.12 win64手动安装教程步骤(图文)
    • T-SQL问题解决集锦 数据加解密全集
    • oracle 删除重复数据

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有