• php+mysql 数据库分表分段备份程序--宋正河


    <?php

    //宋正河 转载请注明出处

    set_time_limit(0);

    header('content-type:text/html;charset=utf-8');

    mysql_connect('localhost','root','root');

    mysql_select_db('test');

    $table_array=get_tables('test');

    mysql_query('set names utf8');

    $filesize=1024*1024*4;

    $start=$_GET['start']?$_GET['start']:0;

    $part=$_GET['part']?$_GET['part']:'1';

    $table_index=$_GET['table_index']?$_GET['table_index']:'0';

    $table=$table_array[$table_index];

    $num=200000000;//这个数要足够大,可以是总记录数

    $backupdata='';

    if($start=='0'){

    $query="SHOW CREATE TABLE `{$table}`";

    $result = mysql_query($query);

    $row = mysql_fetch_row($result);

    $backupdata .= "DROP TABLE IF EXISTS `{$table}`; " . $row[1] . "; ";

    }

    $limit=($start=='0')?'':" limit $start,$num ";

    $query="select * from `{$table}` $limit ";

    $result=mysql_query($query);

    $numfields = mysql_num_fields($result); //统计字段数

    while($row=mysql_fetch_row($result)){

    $comma = ''; //存储逗号

    $backupdata_tmp = "INSERT INTO `{$table}` VALUES (";

    for($i=0; $i<$numfields; $i++){

    $backupdata_tmp .= $comma . "'" . mysql_escape_string($row[$i]) . "'";

    $comma = ',';

    }

    $backupdata_tmp .= "); ";

    if(strlen($backupdata)+strlen($backupdata_tmp) > $filesize){

    //写入文件并跳转

    $file='data/'.$table.'-'.$part.'.sql';

    file_put_contents($file,$backupdata);

    echo $file.' 备份完成,程序继续进行!';

    $part++;

    //分段

    //表名

    //起点

    //跳转

    sleep(3);

    echo "<script>location.href='?start={$start}&table_index={$table_index}&part={$part}';</script>";

    exit;

    }

    $backupdata.=$backupdata_tmp;

    $start++;

    }

    if($backupdata){

    $file='data/'.$table.'-'.$part.'.sql';

    file_put_contents($file,$backupdata);

    }

    echo $table.'备份完成!<br />';

    sleep(2);

    $table_index++;

    if($table_array[$table_index]){

    echo "<script>location.href='?table_index={$table_index}';</script>";

    exit;

    }else{

    echo '恭喜你,数据库备份完毕!';

    }

    function get_tables($db){

    $tq = mysql_list_tables($db);

    while($tr = mysql_fetch_row($tq)){

    $arrtb[] = $tr[0];

    }

    return $arrtb;

    }

    ?>

  • 相关阅读:
    第一章 操作系统引论
    程序流程结构
    IE网页cab插件无法安装
    Java面试题整理(题目内容非原创)
    linux下安装字体
    博客园使用Silence主题装饰
    编码问题总结
    JUnit 4.10 新功能简介——RuleChain 和TemporaryFolder的应用
    Usage and Idioms——Rules
    Usage and Idioms——Theories
  • 原文地址:https://www.cnblogs.com/songzhenghe/p/4582331.html
Copyright © 2020-2023  润新知