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 相关文章推荐
mysql总结之explain
Feb 27 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
php之readdir函数用法实例
Nov 13 PHP
关于URL最大长度限制的相关资料查证
Dec 23 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
php远程下载类分享
Apr 13 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
深入理解PHP类的自动载入机制
Sep 16 PHP
PHP实现websocket通信的方法示例
Aug 28 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 16 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
PHP写的求多项式导数的函数代码
2012/07/04 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php中动态变量用法实例
2015/06/10 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
python爬虫---requests库的用法详解
2020/09/28 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
给领导的致歉信范文
2014/01/13 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
学校火灾防控方案
2014/06/09 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
让世界充满爱观后感
2015/06/10 职场文书