當前位置:首頁 » 編程語言 » mysql備份php

mysql備份php

發布時間: 2022-05-22 17:36:27

1. mysql到底如何備份

數據備份是數據容災的最後一道防線,即便有著兩地三中心的架構,備份也依然重要。如果備份出問題,備份時影響了交易業務,備份數據無法恢復,這些也是企業難以承受的。所以選擇合適的備份工具尤為重要。


每個企業級資料庫都會有配套的備份工具,MEB(MySQL Enterprise Backup)就是MySQL企業版中非常重要的工具之一,是為企業級客戶提供的數據備份方案。


Xtrabackup一直作為MEB 開源版備胎而存在,從MySQL 8.0開始情況可能會變得有所不同。


在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB備份/恢復體驗會更好,目前xtrabackup還不支持這些特性。


MySQL 企業版還有哪些功能?

2. 用php怎麼將MYSQL中的指定資料庫備份下來

下載phpmyadmin ,他是用php語言開發的管理mysql的工具,有導出、導入等功能,解壓復制一份到你的任意一個網站目錄下,通過目錄訪問就可以了,

當然你也可以使用帝國的資料庫備份工具,也很方便的,特別是對於資料庫備份這個功能,比phpmyadmin還強大 予學PHP培訓

3. 關於PHP+Mysql資料庫自動備份的問題

先說代碼,我看了一下,代碼沒什麼問題,至於你說的不備份,原因可能如下:

查詢無結果,測試辦法是在最外層的那個while語句結束後輸出查詢語句,即:

while($t=mysql_fetch_array($q1))
{
//裡面的代碼
}
echo$mysql;//在這里輸出查詢結果,如果結果正常,則說明查詢有結果
$filename="autobackup.sql";//存放路徑,默認存放到項目最外層

然後就是另一個問題了,目標文件不可寫,你可以參考下面這樣的代碼

$filename="autobackup.sql";//存放路徑,默認存放到項目最外層
if(!file_exists($filename)||is_writable($filename))//如果文件不存在或可寫
{
$fp=fopen($filename,'w');//打開或創建可寫文件
$mysql=str_replace("','','');","',null,null);",$mysql);
fputs($fp,$mysql);//寫入
fclose($fp);
}
else
{
echo"文件$filename不存在或不可寫";
}

如果嘗試發現仍有問題,請再追問

4. 如何用PHP來實現 備份 mysql 資料庫的 功能 就是滑鼠單擊 讓此項目的資料庫自動保存到相應的文件夾

我想到的有三種思路吧
1.如果伺服器允許mysqlmp 並且沒有禁止PHP的shell_exec()這個函數的話
直接在PHP裡面執行mysqlmp就可以了。
2.通過mysql_query('show tables')的返回值遍歷每個表,循環對每個表使用查詢語句
select * into outfile '路徑/文件名' from 表名
缺點是這樣得到的是純數據,恢復數據的時候你需要額外再寫腳本
3.同樣通過show tables返回表名,遍歷每個表,通過select 語句查詢,然後逐條結果處理,比如手工添加drop table 和create table 以及insert into等等,然後再寫入文件。這樣得到的備份數據是比較接近mysqlmp的結果的,各種工具都可以用來恢復數據。缺點是如果資料庫太大的話,效率不好說

總之我不推薦用PHP來實現mysql數據的備份,如果可能的話還是用mysqlmp吧

5. PHP+MYSQL的資料庫如何備份和還原

有很多軟體可以使用,比如phpmyadmin,sqlyog等等
下載一個phpmyadmin並且配置好(網上有如何配置),其中就有備份還原資料庫的圖標,很簡單
補充:----------------------
對啊,點導出,然後執行就可以了啊

6. 如何備份Php和MYSQL環境的網站數據

你可以用PHPMyAdimin導出數據,亦可以用MySQL客戶端(如SQLyog)導出數據, 如果不用這個,乾脆把Mysql安裝目錄/data/文件夾備份,每個文件夾是一個資料庫,下次用的時候直接拷貝到Mysql安裝目錄/data/目錄就行,但要保證MySQL的版本一致。文件夾下面有.MYD和.MYI後綴的文件,分別存數據表結構和數據。

7. php備份恢復MYSQL資料庫

// Create SQL file header:$sqlbackup .= "# MySQL backup of " . $dname . ":\n";$sqlbackup .= "# Generated on " . date('Y-m-d') . " at " . date("H:i:s") . ".\n\n";
// Get the tables to backup:$tables = mysql_list_tables($dname);for($i = 0; $i < mysql_num_rows($tables); $i++) {
$table = mysql_tablename ($tables, $i);$sqlbackup .= "# Data for $table: \n";
$tabledata = mysql_query("SELECT * FROM $table");$num_fields = mysql_num_fields($tabledata);$numrow = mysql_num_rows($tabledata);while( $row = mysql_fetch_array($tabledata, MYSQL_NUM)) {
// Add commands so backup can be used by SQL:$sqlbackup .= "INSERT INTO ".$table." VALUES(";for($j = 0; $j < $num_fields; $j++) {$row[$j] = addslashes($row[$j]);$row[$j] = str_replace("\n","\\n",$row[$j]);$row[$j] = str_replace("\r","",$row[$j]);if (isset($row[$j]))$sqlbackup .= "\"$row[$j]\"";else$sqlbackup .= "\"\"";if ($j<($num_fields-1))$sqlbackup .= ", "; }$sqlbackup .= ");\n"; }if ($i + 1 != mysql_num_rows($tables))$sqlbackup .= "\n"; }
// Find out how long the file is for the browser:$howlong = strlen($sqlbackup);
// Construct file name:$sqlfname = "db_" . $dname . date("_m_d_Y");
header("Content-type: text/sql");header("Content-Length: $howlong");header("Content-Disposition: attachment; filename=$sqlfname.sql");echo $sqlbackup;

8. php,mysql資料庫備份和還原的最理想方式,類似phpadmin的代碼

一、備份資料庫並下載到本地【db_backup.php】
復制代碼 代碼如下:
<?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("mysqlmp -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;
?>
二、還原資料庫【db_restore.php】
復制代碼 代碼如下:
<form id="form1" name="form1" method="post" action="">
【資料庫SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />
<input id="submit" name="submit" type="submit" value="還原" />
</form>
<?php
// 我的資料庫信息都存放到config.php文件中,所以載入此文件,如果你的不是存放到該文件中,注釋此行即可;
require_once((dirname(__FILE__).'/../../include/config.php'));
if ( isset ( $_POST['sqlFile'] ) )
{
$file_name = $_POST['sqlFile']; //要導入的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 -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);
echo "<br>導入完成!";
mysql_close();
}
?>

9. php MYSQL 數據備份類

功能上有:
­
require_once("backdata.class.php");
$link
=
@mysql_connect("localhost","資料庫名","密碼")
or
die
('Could
not
connect
to
server.');
mysql_query("use
cms",$link);
mysql_query("set
names
utf8",$link);
$dbbck=new
backupData($link);//實例化它,只要一個鏈接標識就行了
//備份數據時,如想備份一個資料庫中的所有表,你可這樣寫:
$dbbck->backupTables("cms","./",array('*'));
­
//備份數據時,如想備份一個資料庫中的僅一個表時,你可這樣寫:
$dbbck->backupTables("cms","./",array('user'));
­
//備份數據時,如想備份一個資料庫中的多個表時,你可這樣寫:
­
$dbbck->backupTables("cms","./",array('user','acl','informatoin'));
//註解:$dbbck->backupTables("參1","參2",array());中,
參1為:資料庫名,
參2為:要存放備份數據的位置(即目錄地址)
第三個為:你要保存那些表
ok...
­
以下為代碼:
復制代碼
代碼如下:
<?php
/*
*
*簡單的一個備份數據類
*author
FC
*
*/
class
backupData{
private
$mysql_link;//鏈接標識
private
$dbName;//資料庫名
private
$dataDir;
//數據所要存放的目錄
private
$tableNames;//表名
public
function
__construct($mysql_link){
­
$this->mysql_link
=
$mysql_link;
}
­
public
function
backupTables($dbName,$dataDir,$tableNames){//開始備份
­
$this->dbName
=
$dbName;
$this->dataDir
=
$dataDir;
$this->tableNames
=
$tableNames;
$tables=$this->delarray($this->tableNames);
$sqls='';
foreach($tables
as
$tablename){
if($tablename==''){//表不存在時
continue;
}
//************************以下是形成SQL的前半部分**************
//如果存在表,就先刪除
$sqls
.=
"DROP
TABLE
IF
EXISTS
$tablename;\n";
//讀取表結構
$rs
=
mysql_query("SHOW
CREATE
TABLE
$tablename",$this->mysql_link);
$row=mysql_fetch_row($rs);
//獲得表結構組成SQL
$sqls.=$row['1'].";\n\n";
unset($rs);
unset($row);
//************************以下是形成SQL的後半部分**************
//查尋出表中的所有數據
$rs=mysql_query("select
*
from
$tablename",$this->mysql_link);
//表的欄位個數
$field=mysql_num_fields($rs);
//形成此種SQL語句:"INSERT
INTO
`groups`
VALUES('1499e0ca25988d','主任','','0');"
while($rows=mysql_fetch_row($rs)){
$comma='';//逗號
$sqls.="INSERT
INTO
`$tablename`
VALUES(";
for($i=0;$i<$field;$i++){
$sqls.=$comma."'".$rows[$i]."'";
$comma=',';
}
$sqls.=");\n\n\n";
}
}
$backfilepath=$this->dataDir.date("Ymdhis",time()).'.sql';
//寫入文件
$filehandle
=
fopen($backfilepath,
"w");
fwrite($filehandle,
$sqls);
fclose($filehandle);
}
­
private
function
delarray($array){//處理傳入進來的數組
foreach($array
as
$tables){
if($tables=='*'){//所有的表(獲得表名時不能按常規方式來組成一個數組)
$newtables=mysql_list_tables($this->dbName,$this->mysql_link);
$tableList
=
array();
for
($i
=
0;
$i
<
mysql_numrows($newtables);
$i++){
array_push($tableList,mysql_tablename($newtables,
$i));
}
$tableList=$tableList;
}else{
$tableList=$array;
break;
}
}
return
$tableList;
}
}

熱點內容
linuxselect阻塞 發布:2024-03-29 10:16:07 瀏覽:448
java喂狗 發布:2024-03-29 10:03:33 瀏覽:547
mcafee按訪問掃描 發布:2024-03-29 10:02:40 瀏覽:817
編譯成debug版本 發布:2024-03-29 09:06:55 瀏覽:885
wms伺服器地址 發布:2024-03-29 09:05:55 瀏覽:416
mep編程器 發布:2024-03-29 09:05:13 瀏覽:140
大小s我們一家訪問人 發布:2024-03-29 09:03:16 瀏覽:533
造物者編程 發布:2024-03-29 08:50:27 瀏覽:534
sql技能 發布:2024-03-29 08:50:23 瀏覽:56
希沃安卓下載安裝應用在哪裡 發布:2024-03-29 08:22:51 瀏覽:631