1. 程式人生 > >如何使用PHP自動備份資料庫

如何使用PHP自動備份資料庫

1、前言

mysql資料庫的備份方式有很多;

例如:

1、使用mysqldump函式

mysqldump -u username -p dbname table1 table2 ...  > BackupName.sql

  1. dbname引數表示資料庫的名稱
  2. table1和table2引數表示需要備份的表的名稱,為空則整個資料庫備份;
  3. BackupName.sql引數表設計備份檔案的名稱,檔名前面可以加上一個絕對路徑。通常將資料庫被分成一個字尾名為sql的檔案;

基本使用:

2、管理工具

備份資料庫的方法很多,上面兩種比較常見

而本次主要講解如何通過php函式來自動備份資料庫

2、相關函式介紹

2.1 、fopen

詳情參考:http://www.w3school.com.cn/php/func_filesystem_fopen.asp

2.2、array_keys

詳情參考:http://www.w3school.com.cn/php/func_array_keys.asp

2.3、array_values

2.4、implode

詳情參考:http://www.w3school.com.cn/php/func_string_implode.asp

2.5、substr

詳情參考:http://www.w3school.com.cn/php/func_string_substr.asp

2.6、fwrite

詳情參考:https://www.w3cschool.cn/php/func-filesystem-fwrite.html

3、實現思路

4、程式碼構成

/**
 * [copyDb description]  備份資料庫
 * @param  [type] $dbname   [description]  資料庫名
 * @param  [type] $fileName [description]  儲存的檔名
 * @return [type]           [description]
 */
public function copyDb($dbname, $fileName){
	$myfile = fopen($fileName, "w") or die("Unable to open file!");//開啟儲存檔案
	$this->link->query("use {$dbname}");//切換資料庫
	$this->changeDb($dbname);
	$tables = $this->link->query('show tables');//獲取當期資料庫所有表名稱
	while($re = $tables->fetch(PDO::FETCH_ASSOC)){
		//var_dump($re);//檢視陣列構成
		$tableName = $re['Tables_in_'.$dbname];//構成特定的下標
		$sql = "show create table {$tableName};";
		$tableSql = $this->link->query($sql);

		fwrite($myfile, "DROP TABLE IF EXISTS `{$tableName}`;\r\n");//加入預設刪除表的遇見
		//下面備份表結構,這個迴圈之執行一次
		while($re = $tableSql->fetch(PDO::FETCH_ASSOC)){
			// echo "<pre>";
			// var_dump($re);
			// echo "</pre>";
			echo "正在備份表{$re['Table']}結構<br/>";
			fwrite($myfile, $re['Create Table'].";\r\n\r\n");
			echo "正在備份表{$re['Table']}結構完成<br/>";
		}
		//下面備份表資料
		echo "正在備份表{$tableName}資料<br/>";
		$sql = "select * from {$tableName};";
		$valueSql = $this->link->query($sql);
		while($re = $valueSql->fetch(PDO::FETCH_ASSOC)){
			$keyArr = array_keys($re);//獲得對應的鍵值
			$valueArr = array_values($re);//獲得對應的值
	
			$keyStr = '';
			foreach ($keyArr as $key => $value) {
				$keyStr .= "`".$value."`,";
			}
			$keyStr = substr($keyStr,0,strlen($keyStr)-1); //取出最後一個逗號


			$valueStr = '';
			// var_dump($valueArr);
			foreach ($valueArr as $key => $value) {
				$valueStr .= "'".$value."',"

相關推薦

如何使用PHP自動備份資料庫

1、前言 mysql資料庫的備份方式有很多; 例如: 1、使用mysqldump函式 mysqldump -u username -p dbname table1 table2 ...  > BackupName.sql dbname引數表示資料庫的名稱 table1和table2引數表示需要備份

CentOS下使用crontab+mysqldump實現定時自動備份資料庫

一 : 為什麼要進行資料庫的備份?  最主要的原因:儘可能地減少損失,包括時間上、精神上和金錢上的損失。很多人都不注意備份資料,以致在發生問題後丟失大量的重要資料。要知道,在地球上網是很危險的,即使做好安全預防措施,也難免會發生不可預想的問題。因此,資料備份是日常必不可少的操作。資料庫的備份

SQL Server 2008每天自動備份資料庫

在SQL Server 2008資料庫中。為了防止資料的丟失我們就需要按時的來備份資料庫了。要是每天都要備份的話,人工備份會很麻煩的,自動備份的話就不需要那麼麻煩了,只要設定好了,資料庫就會自動在你設定的時間段裡備份。那麼自動備份要怎麼設定呢。下面為大家講解。   在“ Micro

crontab定時執行php指令碼備份資料庫

2014年的時候用crontab定時執行php指令碼來備份資料庫,簡單的寫了個例項: db_backup.php程式碼: <?php date_default_timezone_set ('A

Windows-計劃任務-自動備份資料庫和檔案

開始->程式->附件->系統工具->計劃任務 .bat檔案如下: ::資料庫+檔案備份 @echo off ::日期時間 set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2% set curtime=%time% IF "%curtime

SQL Server 2008怎麼自動備份資料庫

1、開啟、連線資料庫 2、管理–>維護計劃–>右擊–>維護計劃嚮導 3、下一步–>填寫名稱、說明–>選中”整個計劃統籌安排或無計劃”–>“更改”–>填寫內容

sql建立自動備份資料庫

【背景】     前段時間需要建立一個sql資料庫定時自動備份的任務,通過查詢以及實踐,將自己的經歷過程記錄在下面。 【步驟】 一、開啟代理,維護計劃中建立備份計劃 二、雙擊備份資料庫任務,出現下面

Linux利用定時任務自動備份資料庫

一、在實際生產環境中遇到需要備份資料庫,防止伺服器或資料庫崩潰資料損壞時,無法挽救的情況,一種情況我們可以部署MySQL主主互備來備份資料庫,在機器資源不足以我們部署MySQL主主互備,又不能採取以人工手動定時備份資料庫這種繁瑣的操作時,我們可以利用Linux的定時任務cro

自動備份資料庫並通過bat 實現自動上傳到ftp伺服器

系統上線已有半年時間了,執行很穩定,所以需要把資料庫每天定時備份並且自動上傳到ftp伺服器上。 1,關於資料庫自動備份主要利用SSMS中自帶的功能實現即可。 管理-》維護計劃-》維護計劃嚮導

centos linux 指令碼自動備份資料庫

編寫指令碼 [[email protected] service]# vi mysql_dump.sh #!/bin/sh echo "mysqldump start..." DB_NAME="imms_core" DB_USER="root" DB_PA

Linux下自動備份資料庫和刪除歷史備份檔案

一、Linux下自動備份資料庫通常情況下,檔案備份大家喜歡名稱+備份日誌來命名備份檔案。下面以此為例說明:(1)建立備份指令碼檔案,並編寫備份指令碼。[root@test02 backup]# touch backup.sh #建立指令碼檔案 [root@test02 ba

Odoo中自動備份資料庫

本文地址: http://blog.csdn.net/wangnan537/article/details/45016965 測試環境: Ubuntu14.04+Odoo8.0 一個優雅的生產系統,資料庫的自動備份是必備條件之一。Odoo社群模組中,就有這麼一個很好很強大的

MySQL學習筆記(七)使用AutoMySQLBackup工具自動備份MySQL資料庫

首先到官網檢視開源軟體AutoMySQLBackup下載地址。 2        輸入“cd /tmp”切換到/tm

Linux下Oracle資料庫自動備份Shell指令碼

1.在伺服器建立備份目錄,並賦予許可權 mkdir -p /backup/P_DATA  #新建shell指令碼存放路徑 mkdir -p /backup/P_DB_BACK  #新建Oracle資料庫備份目錄 chown -R oracle:oinstall /backup/P

如何在生產環境下實現每天自動備份mysql資料庫

www.syncnavigator.cn SyncNavigator 做資料同步時所支援的資料庫型別: 支援sqlserver 2000-2014所有版本,全相容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。 來源資料庫和目標資料庫可以版本不同,比如:來源資料庫

PHP備份資料庫

   <?php//每天早上備份一次 MySQL 資料庫並自動打包,同時刪除 5 天前的備份檔案 建議在本地執行沒有任何問題再傳到伺服器上 以後就可以新增計劃任務////////////////////////*///儲存目錄,路徑要用反斜槓.您需要手動建立它.//WinRAR.exe 要把壓縮包的e

windows下自動備份mysql和oracle資料庫

rem ******Oracle backup start********  @echo off      forfiles /p "C:\DatabaseBackup\egov\essucap" /m essucap_backup_*.dmp -d -7

資料庫】SQL Server 2008建立定期自動備份任務

進入企業管理器 > 管理 > 資料庫維護計劃,右鍵單擊,新建維護計劃 點選下一步 選擇資料庫 下一步 下一步 更改備份時間,下一步 修改備份地址,及備份資料儲存的週期(否則資料備份會一直存在佔用空間

DB2 資料庫自動備份

db2 核心備份的語句就只有一句: db2 "backup database db21 to $file parallelism 8" 其中的file是我們備份資料庫的目錄,db21是資料庫名稱 具體的備份為: #建立檔案 file="/home/db2inst/backup/`da

SQL SERVER 2012資料庫自動備份的方法

SQL SERVER 2012資料庫自動備份的方法 為了防止資料丟失,這裡給大家介紹SQL SERVER2012資料自動備份的方法: 一、開啟SQL SERVER 2012,如圖所示: 伺服器型別:資料庫引擎; 伺服器名稱:127.0.0.1(本地),也可以選擇遠端連線; 身份驗證:包含Wind