我如何才能最好地优化我备份MySQL数据库的方式?

时间:2011-07-22 15:50:10

标签: mysql backup mysqldump database-backups backup-strategies

我在VPS上托管了几个网站,目前正通过cron运行shell脚本来执行数据库备份,如下所示:

mysqldump -uusername1 -prootpassword dbname1 > /backup/dbname1.bak
mysqldump -uusername2 -prootpassword dbname2 > /backup/dbname2.bak
mysqldump -uusername3 -prootpassword dbname3 > /backup/dbname3.bak

我对这个过程有几个担忧。

首先,我使用root服务器密码来执行mysqldump,并且文件以明文形式存储在服务器上(不可公开访问或任何内容,但是如果我授予其他用户访问服务器的权限,则显然存在问题出于某种原因)。我正在使用root,因为它比跟踪创建数据库的每个人都要简单,并要求他们提供特定的数据库密码。

其次,这个过程只有在人们告诉我他们已经添加了一个数据库时才有效(大多数情况下这都很好,我们在这里做的事情并不复杂)。我更愿意备份所有内容,而不必担心我忽视了某些事情。

2 个答案:

答案 0 :(得分:1)

您可以随时转储所有数据库:

mysqldump --all-databases | gzip -9 > /backup/dbs.bak.gz

这使你不必跟踪哪些dbs。缺点是恢复变得有点复杂。

至于使用root,没有理由你不能创建另一个有权进行备份的帐户 - 除了初始设置之外,你不应该使用root帐户。

答案 1 :(得分:1)

我使用这个脚本:http://sourceforge.net/projects/automysqlbackup/它完美无缺。此外,您应该添加具有全局SELECT和LOCK TABLES权限的备份MySQL用户。这样你就不需要每个人的用户名和密码/