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


Posted in PHP onJune 18, 2015

分卷导出思路:统计sql语句变量的长度,按1个字符当成1 字节比较,如果大于设定分卷大小,则写入一个sql文件(我也不知道这样统计是否稳当,这也是借鉴其他的人的)。

分卷导入思路:按行读取sql文件,将每一行当作完整的sql语句存到数组再循环执行插入数据库就可以了,但是在创建表语句分了多行,这个需要单独处理(就这个花了我好长时间的);

<?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}`;\n" . $row[1] . ";\n\n";
}
$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 .= ");\n";
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;
}
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
无数据库的详细域名查询程序PHP版(2)
Oct 09 PHP
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
php 日期时间处理函数小结
Dec 18 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
PHP代码优化技巧小结
Sep 29 PHP
php文件上传类完整实例
May 14 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
php将xml转化对象的实例详解
Nov 17 PHP
php遍历树的常用方法汇总
Jun 18 #PHP
php编写简单的文章发布程序
Jun 18 #PHP
试用php中oci8扩展
Jun 18 #PHP
浅谈PDO的rowCount函数
Jun 18 #PHP
基于PHP实现的事件机制实例分析
Jun 18 #PHP
php使用MySQL保存session会话的方法
Jun 18 #PHP
php判断表是否存在的方法
Jun 18 #PHP
You might like
ftp类(example.php)
2006/10/09 PHP
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
php创建无限级树型菜单
2015/11/05 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
ajax java 实现自动完成功能
2012/12/19 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
打架检讨书100字
2014/01/08 职场文书
临床护士自荐信
2014/01/31 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
八年级英语教学计划
2015/01/23 职场文书