PHP 備份還原 MySql 數據庫
阿新 • • 發佈:2018-10-17
說明 當前 沒有 原生 錯誤 自動 0.12 php pdo
原生 PHP 備份還原 MySql 數據庫
支持 MySql,PDO 兩種方式備份還原
php5.5 以上的版本建議開啟pdo擴展,使用 pdo 備份還原數據
備份文件夾 db_backup、import/log 文件要有讀寫權限
環境版本
本人測試環境 php:5.5.38 /5.6.27-nts/7.0.12-nts; mysql: 5.5.53 ; apache: Apache/2.4.23 (Win32)
集成環境 phpStudy,其他環境未測試
備份/還原文件目錄
備份、還原數據文件存放 db_backup 文件夾 備份文件夾可以通過 backup/Backup.php 屬性 $back_dir 修改 備份文件存放位置 還原導入數據文件夾可以通過 import/Import.php 屬性 $back_dir 修改還原文件存放位置
示例 sql 文件:
標註表名、表與表直接的分割示例 db_backup/xxx.sql 文件
備份還原數據文件說明
|---備份文件大小可以通過 Backup.php 中 $size 設置,默認2MB,其他設置也可在 Backup.php 的屬性中設置 |---備份數據如果是一卷命名為:文件名_自定義標識+0.sql,例如 cms_v0.sql |---如果是多卷命名為:文件名_自定義標識+數字第幾卷.sql,例如 cms_v1.sql,cms_v2.sql,依次類推 |---還原數據時如果檢測到有 cms_v0.sql 文件只會還原一卷 |---如果沒有檢測到cms_v0.sql就查找 cms_v1.sql,如果檢測到有cms_v1.sql文件,就會還原cms_v1.sql,cms_v2.sql…… 文件
backup php 備份mysql 數據庫
|---當前操作用戶對備份目錄有創建刪除權限 數據表有創建刪除的權限
|---備份文件名默認 數據庫名為前綴,如果備份文件夾下存在相同文件名自動覆蓋,備份前請查看備份文件是否存在相同前綴文件名
|---如果想修改備份文件命名前綴 請在BackData.php // 備份文件名可以自定義 下2行處修改
文件說明
backup/ |---backup.php 調用父類【基類】 |---PdoSql.php pdo類備份 |---MySql.php mysql類備份 |---BackData.php 備份數據實例化類 |---dome.php 調用測試文件
import php 還原 mysql 數據庫
|---當前操作用戶對備份目錄、日誌目錄有創建刪除權限 數據表有創建刪除的權限
|---還原數據庫文件需放在 import 同級目錄 db_backup/ 目錄下,還原文件名(按照備份文件名格式)文件名_自定義標識+數字第幾卷.sql,例如 cms_v0.sql
|---如果數據還原失敗,數據回滾到沒有還原前,如果是sql語法致命錯誤,程序會直接停止運行,以上版本包括當前版本都無法回滾數據
還原不是使用 備份類備份的 sql 數據需要註意幾點
1: 備份文件名前綴+ 標示名+數字.sql
<數字>0代表只還原這一個,數字從1依次還原多個
標示名可以自定義 默認 $back_file_fu="_v";
2: 備份文件的第一卷需要在 sql 文件的開頭添加(標註)要還原的表名;
如果sql文件開頭沒有要還原的表名,調用 ImportData->import_exec() 函數添加最後一個參數$table_name=false;
如果想添加請在第一卷 註釋 sql 的開頭下面添加如下格式的表名:
格式 -- ##* 表名|表名|表名 ##* --
可以自定義格式 $import_table_fu=" ##* ";
3:使用其他工具導出的 sql 文件需要查看表與表之間的分割符是否 Import.php 下的 table_fu() 函數定義的一致,
如果不一致,需要修改為一致,也可修改 table_fu() 函數的格式
< 防止sql 語句過大程序卡死 >
table_fu() 格式:
$create_table=PHP_EOL;
$create_table.=‘-- ‘.str_repeat(‘--‘,30).PHP_EOL;
$create_table.=PHP_EOL;
文件說明
import/
|---Import.php 調用父類【基類】
|---PdoSql.php pdo類還原
|---MySql.php mysql類還原
|---ImportData.php 還原數據實例化類
|---dome.php 調用測試文件
項目詳細介紹
PHP 備份還原 MySql 數據庫