我的服务器详细信息:
OS: Windows Server 2003
IIS6
Plesk 8.xx installed (currently using Plesk to set the cronjob)
我需要你的建议。我有两种方法:
方法 1:
使用 php + mysqldump,将数据库备份文件创建为 gzip,然后发送带有附件的电子邮件(每个数据库大约有 25mb)
方法 2:
使用批处理 + mysqldump,将数据库备份文件创建为 gzip,然后发送带有附件的电子邮件(相同,每个数据库大约有 25mb)
我的问题:
使用 php 文件和批处理文件执行 cronjob 有什么区别?
就备份速度和发送电子邮件而言,哪种方法更好,以及(可能)安全性(例如,较少的文件损坏发生)?
如果我每小时设置一次 cronjob,这会影响我的网站性能吗?我的意思是,假设我的网站现在有 100 多个在线用户,每个用户都与 MySQL 进行交易,当我在网站高峰时段执行备份时,这会降低性能吗,例如加载速度、容易出错等?
(对不起,我的英语不好)
PS:如果您需要我的 php 和批处理文件代码,请让我在此处发布。我现在没有发布它是因为它的代码非常简单和标准。
答案1
如果您只是进行转储、gzip 压缩然后发送电子邮件,则没有什么区别。但是如果您正在做更复杂的事情,使用 PHP 将有优势,例如,您可能想要设置时间戳,或者在发送之前解析输出。然后,您可以利用 PHP 的大量库和方法来完成批处理无法提供(至少不容易)的这类事情
这个你必须自己测试一下。
您可能想要设置增量备份或仅保存交易。(而不是整个数据库)
答案2
为了进行一些数据库备份,您可以选择任何您想要的语言 PHP、bash、python,无论如何它不会有太大变化。
没有哪种方法更好,它只取决于您的脚本和您使用的工具。
是的,mysqldump 对性能有一定影响,如果您想经常保存数据库,您可能需要使用复制设置从属服务器并在那里进行备份。
答案3
使用您最熟练的语言进行编码。对于像这样的简单任务,不同语言的速度差异并不明显。
由于您的数据库非常小,因此可能不会对性能造成太大影响。但是 mysqldump 往往会在转储表时锁定表,以防止任何其他内容写入这些表。
答案4
使用 php/batch + mysqldump,将数据库备份文件创建为 gzip,然后发送带有附件的电子邮件(每个数据库大约有 25mb)
无论您使用的是 PHP 还是批处理文件,它实际上只被使用了数毫秒。所有繁重的处理都发生在 MySQL 和 Gzip 中,而这一切都发生在您的脚本之外。
本质上,这就像关心您乘坐前往航天飞机的汽车的颜色一样。