我在 Linux 10.0.4 LTS 上运行 LAMP 网站。我是一名新手系统管理员(但我是一名开发人员),我正在寻求一些关于如何最好地为我的网站实施备份的建议。我的数据库是 mySQL,我的所有数据库表都使用 InnoDb 数据库引擎。
这些是我想要实现的备份的要求:
包含 mysql 数据库的增量和完整备份 我希望有每小时增量备份,也有每日、每周和每月备份 但我不清楚这些不同的备份数据集应该使用什么轮换 - 以及如何管理它们(更重要的是,如何从一组日期的完整/增量备份中恢复数据库)
我想压缩和加密数据,以便可以远程存储(Amazon S3)
我希望它完全自动化(即作为 cron 作业运行)。
注意:我的服务器是“无头”的,因为它没有安装 X 窗口或其他 GUI,所以我正在考虑使用 bash 脚本来实现备份。或者,如果有软件可以帮助我运行此类备份,那么它需要能够从命令行运行。
我需要备份的项目是:
- mysql 数据库
- 网站文件(在指定的文件夹中。理想情况下,我希望省略一些自动生成的文件)
- 配置文件
- 不同文件夹中的杂项数据文件
以下是我的问题:
是否有现有的软件可以用来执行此操作,或者我需要编写自己的软件(bash 脚本)?
建议使用哪种备份策略(每小时、每天、每周等运行一次),以及如何从特定时间点恢复网站?
如果我必须编写自己的 bash 脚本(作为 bash 脚本新手),如果有人可以提供一个骨架脚本来帮助我入门,我将不胜感激。
答案1
我用了rdiff-backup
好几年,它很稳定,你可以信赖它。它会对你输入的任何内容进行增量备份。所以我会用一个 bash 脚本来解决你的问题,该脚本执行以下操作:
- mysqldump 你的数据库
- 归档你的数据库
- rdiff-备份到远程位置。
Rdiff-backup 仅存储一次文件,所有未来的备份都是增量添加,您可以恢复到任何备份。
其他人可能会建议使用“rsnapshot”,它的速度稍快一些,但它不会保留文件的增量,只会保留文件夹的增量。
答案2
我是 DAR 的忠实粉丝。
它有其优点和缺点,其中许多优点和缺点可以通过 Google 阅读。它非常占用处理器(但大多数好的增量解决方案都是如此),因此如果服务器处于共享环境(共享主机或 VPS),则应考虑使用它。
至于策略,DAR 很容易通过 CRON 设置在 bash/python 中实现。DAR 网站上有一些预构建的 bash 脚本,可根据需要查看和自定义。
您可以通过许多预构建的 S3 应用程序将 DAR 备份和差异上传到 S3。
与往常一样,尝试几种解决方案来找出最适合您需求的解决方案。
答案3
我管理着 4 个非常小的网站,这些网站的数据库很少发生变化。我的备份策略是mysqldump
备份 4 个数据库,然后将所有内容压缩(网站所有者使用 Windows,因此 tar 是不可能的),然后在所有者的机器上使用 WGET 下载它们。简单、免费,并且使用很少出现故障的标准 Linux 工具。