linux定时任务crontab自动备份mysql数据库(ssh/php)

时间:2021-12-08 07:52:35

定时备份对于数据库必不可少,本文介绍 linux+php 环境下三种备份方式,结合crontab实现定时自动备份。
首先简单介绍一下crontab。


crontab定时任务

打开任务列表文件进行编辑:

crontab -e

文件中每一行都代表一项任务,每行有六个字段,前五段设置时间,第六段设置任务,格式如下:
minute hour day month week command

字段名称(取值)
minute(0-59)
hour(0-23)
day(1-31)
month(1-12)
week(1-7)
command(脚本或命令)

在以上时间字段中,还可以使用以下特殊字符:
星号(*): 代表所有可能的值;
逗号(,) : 列举所有取值,例如:1,3,5;
中杠(-): 指定取值范围,例如:2-5;
斜线(/): 指定频率,例如:*/10,如果用在minute字段,表示每十分钟执行一次。

实例:

  1. 每个星期一的上午8点到11点的第3和第15分钟执行

    3,15 8-11 * * 1 command

  2. 每隔4个小时执行

    0 */4 * * * command

详细介绍可以参考
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

编辑保存后查看任务列表:

crontab -l


下面介绍备份方式。

第一种: shell + mysqldump

新建bash 文件:

vim ~/tmp/backup.sh

写入:

#! /bin/bash
/usr/bin/mysqldump -uroot -p123456 hkproduce > /var/www/html/hkproduct/db_backup/backup_`date "+%Y%m%d%H%M%S"`.sql

修改权限:

chmod +x ~/tmp/backup.sh

创建定时任务,每天3点执行:

0 3 * * * /bin/bash ~/tmp/backup.sh


第二种: php + mysqldump

新建php 文件:

vim ~/tmp/backup.php

写入:

#! /usr/bin/php -q
<?php
date_default_timezone_set("Asia/Shanghai"); //设定时区
$time = date("Ymdhis");
exec("mysqldump -u root -p hkproduce --password='123456' > /var/www/html/hkproduct/db_backup/backup.sql.{$time}");
?>

修改权限:

chmod +x ~/tmp/backup.php

创建定时任务,每天3点执行:

0 3 * * * ~/tmp/backup.php


第三种:php

与第二种方法相同,也是通过定时任务执行php 脚本,但不使用mysqldump,而是用php 函数读取数据库内容后按照sql文件的格式生成备份文件,代码较长,有兴趣的可以在网上搜一下。


总结

比较这三种方法,第一种最简单高效,第二种与第一种结果相同,效率较低,不推荐使用,第三种方法的优点在于*度高,可以让用户有选择性地手动触发,根据不同需求进行备份。