PHP与batch file为MySQL cronjob?

我的服务器信息:

OS: Windows Server 2003 IIS6 Plesk 8.xx installed (currently using Plesk to set the cronjob) 

我需要你的build议。 我有2种方法:

方法1:

使用php + mysqldump,将数据库备份文件创build成gzip,然后用附件发送邮件(每个数据库大约有25MB)

方法2:

使用batch + mysqldump,将数据库备份文件创build成gzip,然后用附件发送电子邮件(每个数据库大约有25MB左右)

我的问题:

  1. 什么是使用PHP文件和batch file的cronjob的区别?

  2. 哪种方法在备份速度和发送电子邮件方面更好 ,以及(可能)安全性(例如,较less的文件损坏发生)?

  3. 如果我每小时设置一次cronjob,它是否会影响我的web性能? 我的意思是,假设我的网站现在有100 ++的用户在线,而且每个用户在MySQL上做交易,当我在我的网站高峰时间进行备份,会降低性能,如加载速度,容易出错等。

(对不起,我的英语不好)

PS:如果你需要我的PHP和batch file代码,请让我把它发布在这里。 我没有发布它现在是因为,它非常简单和标准的代码。

  1. 如果你只是倾销,gzip,然后发送电子邮件,没有什么区别。 但是,如果你正在做更复杂的东西,使用PHP将有优势,例如也许你想设置时间戳,或parsing发送之前的输出。 那么你可以利用PHP的庞大的库和方法来处理这些批量不能提供的东西(至less很容易)

  2. 这一个你将不得不testing自己。

  3. 您可能想要设置增量备份或保存事务(不是整个数据库)

  1. 为了做一些数据库备份,你可以select任何你想要的语言PHP,bash,python,它不会有太大的改变。

  2. 没有什么方法更好,它只取决于你的脚本和你正在使用的工具。

  3. 是的,mysqldump有一些影响性能,你可能想要设置一个使用复制的从属服务器,如果你想经常保存你的数据库的话,实际上是在那里做备份的。

用你最熟练的语言来编码。 对于这样一个简单的任务,语言的速度差异不会显着。

由于您的数据库非常小,因此可能不会影响性能太多。 但是mysqldump倾向于locking表,而在被倾销时阻止任何其他的写入。

虽然你可以使用任何你喜欢的语言来进行这种工作,但有些却明显比其他语言更好。 batch file有这样的限制,即它们需要外部程序来处理这类工作的所有内容。 一般来说,PHP并不是大多数人作为命令行程序的首选,但如果这就是你最喜欢的,那就去做吧。 请记住,PHP和Windows并不总是最好的朋友,在其他平台上运行良好的Windows可能无法正常工作,通常是因为外部程序不同或缺失。

使用php / batch + mysqldump,将数据库备份文件创build成gzip,然后用附件发送邮件(每个数据库大约有25mb)

不pipe你使用的是PHP还是batch file,它都只用了几毫秒。 所有繁重的处理都发生在MySQL和Gzip中,这些都发生在脚本之外。

从本质上来说,它就像是关心你乘坐航天飞机的那辆车的颜色。

哪种方法在备份速度和发送电子邮件方面更好,以及(可能)安全性(例如,较less的文件损坏发生)?

在bash或PHP中这样一个小脚本的执行时间可以忽略不计。 你关心的是MySQL的执行速度,无论哪种语言调用MySQL命令,这都是一样的。 在bash之后/ PHP向MySQL发出命令之后,所有的繁重工作都将在DB中完成。

检查你的表格,看看你是否使用MyISAM或InnoDb。 Mysqldump将lockingMyISAM表,但InnoDB表可以在应用程序继续访问表时备份。 这是因为行级locking。