Home > Backend Development > PHP Tutorial > PHP implements volume backup of mysql database

PHP implements volume backup of mysql database

墨辰丷
Release: 2023-03-31 11:44:01
Original
1670 people have browsed it

This article will share with you how to implement mysql database volume backup in PHP, select tables for backup, and implement single sql file and volume sql import. Friends in need can refer to the

volume export idea: count the length of sql statement variables, compare 1 character as 1 byte, if it is greater than the set volume size, write a sql file (I don’t know if this statistics is reliable. This is also a reference to other people).

The idea of ​​importing into volumes: read the sql file line by line, save each line as a complete sql statement to the array, and then loop and execute it to insert into the database. However, the create table statement is divided into multiple lines. This It needs to be dealt with separately (it took me a long time to do this);

<?php
//宋正河 转载请注明出处
set_time_limit(0);
header(&#39;content-type:text/html;charset=utf-8&#39;);
mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);
mysql_select_db(&#39;test&#39;);
$table_array=get_tables(&#39;test&#39;);
mysql_query(&#39;set names utf8&#39;);
$filesize=1024*1024*4;
$start=$_GET[&#39;start&#39;]?$_GET[&#39;start&#39;]:0;
$part=$_GET[&#39;part&#39;]?$_GET[&#39;part&#39;]:&#39;1&#39;;
$table_index=$_GET[&#39;table_index&#39;]?$_GET[&#39;table_index&#39;]:&#39;0&#39;;
$table=$table_array[$table_index];
$num=200000000;//这个数要足够大,可以是总记录数
$backupdata=&#39;&#39;;
if($start==&#39;0&#39;){
$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==&#39;0&#39;)?&#39;&#39;:" limit $start,$num ";
$query="select * from `{$table}` $limit ";
$result=mysql_query($query);
$numfields = mysql_num_fields($result); //统计字段数
while($row=mysql_fetch_row($result)){
$comma = &#39;&#39;; //存储逗号
$backupdata_tmp = "INSERT INTO `{$table}` VALUES (";
for($i=0; $i<$numfields; $i++){
$backupdata_tmp .= $comma . "&#39;" . mysql_escape_string($row[$i]) . "&#39;";
$comma = &#39;,&#39;;
}
$backupdata_tmp .= ");\n";
if(strlen($backupdata)+strlen($backupdata_tmp) > $filesize){
//写入文件并跳转
$file=&#39;data/&#39;.$table.&#39;-&#39;.$part.&#39;.sql&#39;;
file_put_contents($file,$backupdata);
echo $file.&#39; 备份完成,程序继续进行!&#39;;
$part++;
//分段
//表名
//起点
//跳转
sleep(3);
echo "<script>location.href=&#39;?start={$start}&table_index={$table_index}&part={$part}&#39;;</script>";
exit;
}
$backupdata.=$backupdata_tmp;
$start++;
}
if($backupdata){
$file=&#39;data/&#39;.$table.&#39;-&#39;.$part.&#39;.sql&#39;;
file_put_contents($file,$backupdata);
}
echo $table.&#39;备份完成!<br />&#39;;
sleep(2);
$table_index++;
if($table_array[$table_index]){
echo "<script>location.href=&#39;?table_index={$table_index}&#39;;</script>";
exit;
}else{
echo &#39;恭喜你,数据库备份完毕!&#39;;
}
function get_tables($db){
$tq = mysql_list_tables($db);
while($tr = mysql_fetch_row($tq)){
$arrtb[] = $tr[0];
}
return $arrtb;
}
?>
Copy after login

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.

Related recommendations:

PHP’s four basic sorting algorithms and two search algorithms

PHP generates and downloads csv files and solves problems

How PHP accepts files and gets the suffix name

The above is the detailed content of PHP implements volume backup of mysql database. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template