cron job用于备份linux / php中的数据库

时间:2010-12-12 14:40:46

标签: php linux cron

我是linux cron job的新手,我使用的是mysql DB,我的数据库名称是finaldb,我想每隔一小时拿一次这个数据库,

我有一个名为dailbackup的文件夹,在这个我有文件夹的日期明智,在这个每个文件夹我有备份mysql db文件

像final_db_9.sql这样的名字(这个备份是在早上9点拍摄的),final_db_13.sql(这个备份是在中午1点拍摄的,就像那样,

这个过程目前正在手动进行,是否有可能使其自动化,任何想法,建议,

5 个答案:

答案 0 :(得分:6)

创建包含以下内容的PHP脚本:

$dbFile = 'final_db'.date('H').'.sql.gz';
$dbHost = 'localhost'; // Database Host
$dbUser = 'username'; // Database Username
$dbPass = 'password'; // Database Password
exec( 'mysqldump --host="'.$dbHost.'" --user="'.$dbUser.'" --password="'.$dbPass.'" --add-drop-table "finaldb" | gzip > "'.$dbFile.'"' );

答案 1 :(得分:5)

在某个地方创建一个脚本来进行滚动备份,就像这样(未经测试,但应该有效):

#!/bin/bash

BKPDIR=dailbackup  # You must use absolute path here
DB=finaldb
USERNAME=myusername
PASSWORD=mypassword

BKPFILE=${BKPDIR}/`date +%Y-%m-%d`/final_db_`date +%H`.sql

# Create backup
mysqldump --user=${USERNAME} --password=${PASSWORD} ${DB} | gzip -c > ${BKPFILE}

# Remove older backups (> 7 days),
# unless you want to run out of drive space
find ${BKPDIR} -mtime +7 -print0 | xargs -0 rm -rf

然后设置此脚本以每小时cronjob运行:

crontab -e

0 * * * * /absolute-path-to-where-you-saved-the-script

答案 2 :(得分:2)

crontab -e

把这个:

the_date='date +%Y%m%d'
the_hour='date +%H'
0 * * * * mysqldump OPTIONS > /dailbackup/`$the_date`/final_db_`$the_hour`.sql

上面的cron允许你每小时备份数据库并使用%H作为sql文件名

答案 3 :(得分:1)

未经测试的一个班轮:

mysqldump -u*user* -p*password* -P*dbport* -h localhost finaldb > /.../dailbackup/final_db_$(date +%Y-%m-%d_%H_%M).sql

只需将其添加到您的cron作业或将其包装在脚本中即可完成

答案 4 :(得分:1)

是的,只要您的mysql服务器已启动并正在侦听,您就可以执行此操作:)。你需要制作一个shell或perl脚本并使用下面的命令编辑crond(在Fedora中):

crontab -e

您的cron作业的组件是::

1)脚本的路径(可执行文件)

2)分钟(00-59)

3)小时(00 - 23)

4)月(01-12)

5)日(01-31)

6)星期几(00-06,00为星期日)

示例::您每天都要在1200

运行test_pl脚本 crontab中的

条目将是::

00 12 * * * / home / jok / test_pl