php备份和还原mysql数据库

1、配置文件sql.config.php

<?php
    $cfg_dbhost = "localhost"; //数据库主机名
    $cfg_dbuser = "root"; //数据库用户名
    $cfg_dbpwd = "123456"; //数据库密码
    $cfg_dbname = "familymart"; //数据库名
?>

2、备份程序db_backup.php

<?php
    date_default_timezone_set(‘Asia/Shanghai‘);
    require_once((dirname(__FILE__).‘/sql.config.php‘));
    // 设置SQL文件保存文件名
    $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
    // 所保存的文件名
    header("Content-disposition:filename=".$filename);
    header("Content-type:application/octetstream");
    header("Pragma:no-cache");
    header("Expires:0");
    // 获取当前页面文件路径,SQL文件就导出到此文件夹内
    $tmpFile = (dirname(__FILE__))."/".$filename;
    // 用MySQLDump命令导出数据库
    exec("mysqldump -h$cfg_dbhost -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);
    $file = fopen($tmpFile, "r"); // 打开文件
    echo fread($file,filesize($tmpFile));
    fclose($file);
    exit;
?> 

3、还原数据库之restore_mysql.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>还原数据库</title>
</head>
<body>
    <form id="form1" name="form1" method="post" action="db_restore.php">
    【数据库SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />
    <input id="submit" name="submit" type="submit" value="还原" />
    </form>
</body>
</html>

4、还原程序db_restore.php

<?php
// 我的数据库信息都存放到config.php文件中,所以加载此文件,如果你的不是存放到该文件中,注释此行即可;
require_once((dirname(__FILE__).‘/sql.config.php‘));
if ( isset ( $_POST[‘sqlFile‘] ) ) {
    $file_name = $_POST[‘sqlFile‘]; //要导入的SQL文件名
    //$file_name = "2014-06-10_09-24-44-familymart-app.sql";
    $dbhost = $cfg_dbhost; //数据库主机名
    $dbuser = $cfg_dbuser; //数据库用户名
    $dbpass = $cfg_dbpwd; //数据库密码
    $dbname = $cfg_dbname; //数据库名 

    set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入
    $fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件
    mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库
    mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库 

    echo "<p>正在清空数据库,请稍等....<br>";
    $result = mysql_query("SHOW tables");
    while ($currow=mysql_fetch_array($result))
    {
    mysql_query("drop TABLE IF EXISTS $currow[0]");
    echo "清空数据表【".$currow[0]."】成功!<br>";
    }
    echo "<br>恭喜你清理MYSQL成功<br>"; 

    echo "正在执行导入数据库操作<br>";
    // 导入数据库的MySQL命令
    exec("mysql -h$cfg_dbhost -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);
    echo "<br>导入完成!";
    mysql_close();
}
?> 

如果通过程序还原数据库之后,发现数据出错,可能是数据库版本不一样,对‘\n‘等字符解析结果不同,而上面的程序还原时又并没有链接数据库,

此时可通过phpmyadmin导入功能还原,如果数据库文件较大,还需要把phpmyadmin和php.ini相关配置调大

时间: 2024-10-08 20:50:45

php备份和还原mysql数据库的相关文章

如何使用命令来备份和还原MySQL数据库

数据库在使用当中都会有数据库备份工作,当数据库发生严重错误无法启动,或者数据丢失时可以及时有效地恢复数据.那么多备份就简单介绍如何使用命令来备份和还原MySQL数据库. 备份数据库 使用mysqldump命令备份数据库 代码如下: # 如果要将game数据库进行备份: mysqldump -u root -p game > game_backup.sql # 如果希望备份所有的数据库: mysqldump -u root -p --all-databases > all_backup.sql

备份与还原mysql 数据库的常用命令。

一.备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 -P: 端口号,不写默认3306 --all-databases, -A:备份所有数据库 --databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名.使用该选项,mysqldum把每个名字都当作为数据库名. -d: 只导出数据库的表

备份与还原mysql 数据库的常用命令

--备份数据:-- mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 -P: 端口号,不写默认3306 --all-databases, -A:备份所有数据库 --databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名. 使用该选项,mysqldum把每个名字都当作为数据库名. -d: 只导出数据

shell 脚本--备份、还原mysql数据库

备份mysql数据库 #! /bin/bash BPATH=/home/backup/mysql_bak USER="root" PASSWD="123456" HOST="192.168.1.5" DATE=$(date +%Y-%d-%m) if [ ! -d "$BPATH" ];then mkdir -p $BPATH fi DB=$(mysql -u $USER -h $HOST -p $PASSWD -Bse 's

CentOS6.5下通过Shell创建、备份、还原MySQL数据库

创建数据库: mysql -uroot -p123456 -e "CREATE DATABASE IF NOT EXISTS yourDatabaseName DEFAULT CHARSET utf8 COLLATE utf8_general_ci;" 备份数据库: mysqldump -uroot -p123456 yourDatabaseName > c:\backupFileName.dmp 还原数据库: mysql -uroot -p123456 yourDatabase

C#备份还原MySql数据库

原文:C#备份还原MySql数据库 项目结束,粘点代码出来让Google或Baidu一下,原因是现在还搜不到这么现成的 调用MySql的工具mysqldump来实现. 类Cmd来实现调用cmd命令, 要启动的进程所在的目录是说mysql自动的备份还原数据库工具mysqldump和mysql所在目录,当然,这个方法可以执行别的命令行工具. using System; using System.Collections.Generic; using System.Text; using System.

xtrabackup备份还原MySQL数据库

原文:xtrabackup备份还原MySQL数据库 mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况Xtrabackup可以解决mysqldump存在的上述的一些问题,生产环境应用的也会更多一些.本文简单测试一下Xtrabackup对MySQL数据库的备份还原操作. 本着先把功能先撸起来再深入细节的原则,粗略地实现了一个备份还原,并未深入细节. 网上有不少xtrabackup的文章,因为环境不一样,有些

Qt中使用QProcess备份和恢复Mysql数据库

分类: Qt2011-02-18 21:35 1395人阅读 评论(3) 收藏 举报 qtmysql数据库windowspathcmd . 使用Qt做MySQL数据库开发,遇到需要备份.还原数据库的问题. MySQL中没有提供将数据库备份成.sql文件的SQL语句,而是提供了一个mysqldump.exe工具来完成这个功能. 没有SQL语句,QSqlQuery就用不成了,决定改用QProcess实现. . 但是在Qt中使用QProcess::execute()方法怎样都导不出数据来, 更郁闷的是

如何备份和还原sqlite数据库

Backing up the database To make a backup copy of the database, simply do a "dump" and redirect the results to a file. cd /home/sqlite sqlite3 sample.db .dump > sample.bak Restoring the database Restoring the database from a backup is just as