1. 首先寫一個導出數(shù)據(jù)庫的PHP腳本(導出數(shù)據(jù)庫般哼,這里主要用到的是exec函數(shù))癞松。
<?php
date_default_timezone_set('PRC');
// 數(shù)據(jù)庫的賬號
$cfg_dbuser = "root";
// 數(shù)據(jù)庫的密碼
$cfg_dbpwd = "root";
// 要導出的數(shù)據(jù)庫
$cfg_dbname = "videos";
// 設置保存文件名
$filename = date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
// 獲取當前頁面文件路徑,SQL文件就導出到此文件夾內
$tmpFile = (dirname(__FILE__))."/".$filename;
// 用mysqldump命令導出數(shù)據(jù)庫
exec("mysqldump -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;
2. 接著直接把該PHP腳本文件放到Linux服務器上(我這里是放到centos7上)的項目上靖苇,我的配置是lnmp模式,如果所示。
3. 然后在服務器或虛擬機測試運行下這個腳本丑搔,看一下有沒有問題(重要一步)如圖所示為執(zhí)行成功的頁面,導出的數(shù)據(jù)庫文件路徑可以自己定義提揍。
注意:命令是:/usr/local/php/bin/php db_backup.php啤月,前面的/usr/local/php/bin/php是你安裝php的可執(zhí)行文件的目錄(不一定每一個的都一樣),后面的db_backup.php是你的腳本文件的名稱劳跃。
4. 下一步就是把這個PHP腳本加到定時任務上
crontab -e (查看linux上有哪些定時任務)
如圖所示:
注意:
50 12 * * * /usr/local/php/bin/php /home/wwwroot/default/db_backup.php
講解:
50 12 * * * -- 這部分是定時任務的設置時間(測試可以以一分鐘來測試是否有執(zhí)行)
/usr/local/php/bin/php -- 這部分是安裝php的可執(zhí)行文件的路徑
/home/wwwroot/default/db_backup.php --這部分是PHP腳本的絕對路徑
過了一分鐘后谎仲,查看是否有導出數(shù)據(jù)庫的文件
發(fā)現(xiàn)已經(jīng)導出成功了,到這里就完成了刨仑。(這里有注意一點郑诺,寫的腳本必須是unix下的格式,不然可能會報錯)報錯方式如下:unexpected end of file或syntax error near unexpected token `fi'等
具體解決方式如下:
vim db_backup.php (編輯腳本文件)
:set ff (查看文件的格式杉武,如果是unix就把沒問題辙诞,如果是dos的就要改成unix)
:set ff=unix (把文件格式改成unix)
5. 補充linux的部分命令:
5.1. 安裝crontab命令:
yum install crontabs
5.2. 查看crontab服務狀態(tài):
service crond status
5.3. 手動啟動crontab服務:
service crond start
5.4. 加入開機自動啟動:
chkconfig –level 35 crond on
5.5. crontab命令:
-e 編輯該用戶的計時器設置。
-l 列出該用戶的計時器設置轻抱。
-r 刪除該用戶的計時器設置飞涂。
-u <用戶名稱> 指定要設定計時器的用戶名稱。
5.6. crontab 格式:
基本格式 :
分鐘 小時 日 月 星期 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列 表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
記住幾個特殊符號的含義:
“*”代表取值范圍內的數(shù)字,
“/”代表”每”,
“-”代表從某個數(shù)字到某個數(shù)字,
“,”分開幾個離散的數(shù)字
Use the hash sign to prefix a comment
+—————- minute (0 – 59)
| +————- hour (0 – 23)
| | +———- day of month (1 – 31)
| | | +——- month (1 – 12)
| | | | +—- day of week (0 – 7) (Sunday=0 or 7)
| | | | |
* * * * * command to be executed