专用服务器自动备份解决方案

专用服务器自动备份解决方案

我在云环境中有一个专用的 Ubuntu 网络服务器,我正在寻找一种好的方法来进行自动备份。

我想备份一些包含 Web 应用程序的目录以及我的所有 MySql 数据库。至于目标:每两小时在本地制作一次快照,每六小时在远程 ftp 服务器上制作一次快照。还要删除超过七天的备份档案(本地 + ftp),并通过电子邮件通知任何问题。

现在为了实现其中的一些功能我使用 cron + shell 脚本,并且http://www.mysqldumper.net/,但实际上这并不能满足我的需求。Mysqldumper 不会自动了解新数据库,并且 shell 脚本不会通知问题。这是我必须不时检查的东西,但我不信任它。

我在 Google 上搜索了一段时间,似乎大多数人都使用 shell 脚本来解决这个问题。这是您可以信赖的方法吗?有没有我遗漏的 web-gui 工具?也许有更聪明的策略来做到这一点?我有点困惑。

答案1

其实我正在使用快照用于备份。它不能备份 mysql db 本身,但它允许在备份之前和之后执行脚本。因此在 rsnapshot 执行之前:

 /usr/bin/ssh remote_host 'mysql -N -e "SHOW DATABASES;" | while read db; do mysqldump --skip-comments $db |gzip > ~/db/${db}.sql.gz; done'

所有 mysql 设置都存储在 ~/.my.cnf 中,备份完成后,rsnapshot 执行脚本以删除远程主机上的转储。

此外,rsnapshot 在备份时使用硬链接,因此它可以节省您的空间并且您可以在备份完成后随时进行完整备份。

Rsnapshot 使用 rsync 传输数据,因此它比 ftp 更安全。

答案2

我们也有类似的情况,我们使用自动mysql备份(而不是像你的情况那样使用 mysqldumper)和 rsnapshot。Automysqlbackup 也可以通过电子邮件通知你。

答案3

您似乎对备份有特定的要求:您知道要备份什么、您喜欢使用的间隔是多少、您喜欢如何删除旧备份等。我认为您不太可能找到一个免费的基于 GUI 的应用程序来以您喜欢的方式完成所有这些操作并使其成为一个自动化过程。

我建议的解决方案是使用命令行工具执行这些步骤,然后使用脚本语言(如 Perl 或 Python)将它们粘合在一起,使其成为一个由 cron 启动的进程。您可以在脚本中捕获子进程的返回值并采取适当的操作。您可以进行任何您想要的日志记录,甚至可以在脚本中添加验证步骤和恢复测试。与基于 GUI 的应用程序相比,我更信任这种解决方案。

答案4

我使用备份忍者表里不一用于备份我的服务器。Backupninja 能够备份 MySQL 数据库。Duplicity 使用类似于 rsync 的算法创建增量备份(可选加密),并且可以使用多种协议传输备份(如 SCP/SFTP、FTP、WebDAV 或存储在 Amazon S3 中)。

相关内容