我是linux cron job的新手,我使用的是mysql DB,我的数据库名称是finaldb,我想每隔一小时拿一次这个数据库,
我有一个名为dailbackup的文件夹,在这个我有文件夹的日期明智,在这个每个文件夹我有备份mysql db文件
像final_db_9.sql这样的名字(这个备份是在早上9点拍摄的),final_db_13.sql(这个备份是在中午1点拍摄的,就像那样,
这个过程目前正在手动进行,是否有可能使其自动化,任何想法,建议,
答案 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