1. 首先写一个导出数据库的PHP脚本(导出数据库,这里主要用到的是exec函数)。
<?php
date_default_timezone_set('PRC');
// 数据库的账号
$cfg_dbuser = "root";
// 数据库的密码
$cfg_dbpwd = "root";
// 要导出的数据库
$cfg_dbname = "videos";
// 设置保存文件名
$filename = date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
// 获取当前页面文件路径,SQL文件就导出到此文件夹内
$tmpFile = (dirname(__FILE__))."/".$filename;
// 用mysqldump命令导出数据库
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. 然后在服务器或虚拟机测试运行下这个脚本,看一下有没有问题(重要一步)如图所示为执行成功的页面,导出的数据库文件路径可以自己定义。

注意:命令是:/usr/local/php/bin/php db_backup.php,前面的/usr/local/php/bin/php是你安装php的可执行文件的目录(不一定每一个的都一样),后面的db_backup.php是你的脚本文件的名称。
4. 下一步就是把这个PHP脚本加到定时任务上
crontab -e (查看linux上有哪些定时任务)
如图所示:

注意:
50 12 * * * /usr/local/php/bin/php /home/wwwroot/default/db_backup.php
讲解:
50 12 * * * -- 这部分是定时任务的设置时间(测试可以以一分钟来测试是否有执行)
/usr/local/php/bin/php -- 这部分是安装php的可执行文件的路径
/home/wwwroot/default/db_backup.php --这部分是PHP脚本的绝对路径
过了一分钟后,查看是否有导出数据库的文件

发现已经导出成功了,到这里就完成了。(这里有注意一点,写的脚本必须是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服务状态:
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列要运行的命令
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
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
网友评论