2016年8月31日 星期三

MySQL - 備份與還原

一、Windows DOS

1. 基本的備份與還原 


備份:
C:\pathToFolder\MySQL\MySQL Server 5.1\bin\>mysqldump -uuser -p'mypassword' dbname > d:\dbname_20130101.sql

還原:
C:\pathToFolder\MySQL\MySQL Server 5.1\bin\>mysql -uuser -p'mypassword' db< d:\dbname_20130101.sql
參考:【筆記整理】Windows下MySQL備份與還原


2. 使用DOS指令設定日期與時間

DOS指令取得日期與時間
echo %date%   結果為 yyyy/MM/dd
echo %time%   結果為 mm:dd:ss.xx
echo %date:~0,4%  結果為 yyyy,以此類推
但是如果數值小於10,它會空一格,而不是補0。所以如果不想讓檔名有空格就要額外處理。

指令
SET yyyy=%date:~0,4%

IF %date:~5,2% LSS 10 (
 SET Mon=0%date:~6,1%
) ELSE (
 SET Mon=%date:~5,2%
)

IF %date:~8,2% LSS 10 (
 SET dd=0%date:~9,1%
) ELSE (
 SET dd=%date:~8,2%
)

IF %time:~0,2% LSS 10 (
 SET hh=0%time:~1,1%
) ELSE (
 SET hh=%time:~0,2%
)

IF %time:~3,2% LSS 10 (
 SET mm=0%time:~4,1%
) ELSE (
 SET mm=%time:~3,2%
)

SET filename=D:\dbname_%yyyy%-%Mon%-%dd%_%hh%%mm%.sql
echo %filename%

filenam:dbname_2013-07-30_0651.sql

參考
DOS指令--取得日期時間字串
「知識」DOS指令-用FOR迴圈更名
for指令太強了
DOS COMMAND IF 比較運算元 是&gt; &lt; =嗎?

二、Linux

(備份的指令跟上面 Windows 一樣。)

#!/bin/bash
#by Ron 2016-08-31

#進入網域資料夾
cd /var/www/websites/example.com.tw;
#還原資料庫
mysql --user=username -pMyPassword dbname < backup/dbname.sql
#刪除舊網頁檔
rm -rf httpdocs/*
#複製備份網頁檔
cp -fR backup/httpdocs/* httpdocs
#變更擁有者跟權限
chown user.wwwgroup httpdocs -R; chmod 2775 httpdocs -R

三、PHP

<?php
header ('Content-Type: text/html; charset=big5');
include('config.php');

//設定備份檔名稱
$path = 'D:/';
$filename = $path.$DATABASE.'_'.date('Y-m-d_Hi').'.sql';
//echo $filename; exit;

$mysql_bin_path = 'E:/xampp/xampp1.8.1/mysql/bin/';
$cmd_str = $mysql_bin_path.'mysqldump '.$DATABASE.' -u'.$USER.' -p'.$PASSWORD.' > '.$filename;
//echo $cmd_str; exit;
$output = shell_exec($cmd_str);
echo "<pre>".print_r($output,1)."</pre>";
?>

.

沒有留言:

張貼留言