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

发布于 2024-10-07 02:30:09 字数 260 浏览 4 评论 0原文

我是linux cron工作的新手,我正在使用mysql数据库,我的数据库名称为finaldb,我想每隔一小时获取一次这个数据库,

我有一个名为dailbackup的文件夹,在这个文件夹中我有按日期排列的文件夹,在这个每个文件夹中我都有备份mysql数据库文件

名像final_db_9.sql(这个备份是在早上9点进行的),final_db_13.sql(这个备份是在中午1点进行的,这样,

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

Am new to linux cron job, i am using mysql DB, my database name finaldb, i want to take this database every one hour,

I have folder called dailbackup, in this i have folder by date wise,in this each folder i have backup mysql db file

name like final_db_9.sql (this backup taken at morning 9 am), final_db_13.sql(this backup taken at noon 1pm, like that ,

this process at present am doing manually , is it possible to make it automation , any ideas, suggestions ,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

身边 2024-10-14 02:30:09

创建包含以下内容的 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.'"' );

Create a PHP Script containing the following:

$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.'"' );
一曲琵琶半遮面シ 2024-10-14 02:30:09

在某处创建一个脚本来进行滚动备份,如下所示(未经测试,但应该可以工作):

#!/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

然后将此脚本设置为每小时运行一次:

crontab -e

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

Create somewhere a script to make your rolling backups, like this (untested, but should work):

#!/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

Then setup this script to run as an hourly cronjob:

crontab -e

0 * * * * /absolute-path-to-where-you-saved-the-script
一抹淡然 2024-10-14 02:30:09
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 文件名

crontab -e

putting this:

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

the above cron is allow you to backup database every hour and using the %H as sql file name

故乡的云 2024-10-14 02:30:09

未经测试的一个衬垫:

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

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

Untested one liner:

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

just add it to your cron job or wrap it in a script and you are done

韵柒 2024-10-14 02:30:09

是的,当然,只要你的 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 为星期日)

示例 :: 您希望每天运行 test_pl 脚本 crontab 中的1200

条目将为 ::

00 12 * * * /home/jok/test_pl

Yes ofcourse, you can do it as long as your mysql server is up and listening :). You will need to make a shell or perl script and use edit the crond using the below command (in Fedora):

crontab -e

Components of your cron job is ::

1) Path to your script(executable)

2) Minutes(00-59)

3) Hours (00 - 23)

4) Month (01-12)

5) Day (01-31)

6) Day of the week (00 -06 with 00 as Sunday)

Example :: You wat to run test_pl script every day at 1200

entry in crontab will be ::

00 12 * * * /home/jok/test_pl

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文