你对这个Debian备份策略有什么看法?

我不是一个真正的系统pipe理员,我主要是一个有一些UNIX知识的开发人员,因为我们没有任何有能力的系统pipe理员,所以我被委派执行备份策略的任务。

我们有很多Web服务器,有一些运行Mysql Srevers,另外一个是Apache,另一个运行nginx,我们使用SVN作为版本控制系统。

我们期待实施备份策略,并能够自动恢复服务器。

我们有两种可能性:

  1. 每天同步整个DISK
  2. 分析我们的configuration,并规范每个安装步骤,仅备份这些信息,并使用MySQL复制,SVN恢复数据,rsync仅备份configuration选项,以及软件包列表

就我们的观点来看,第一种方法的优点是实施起来非常简单,并且有利用大量服务器资源(CPU / RAM /带宽)

因为我们不想看到我们的服务器因为备份脚本的运行而滞后,所以我们决定更深入地研究(2)。

经过一番反思后,我想出了这样的想法,即我们的每台服务器可以分成5个部分

1 – networking服务器数据

SVN可以处理我们所有的php / css / js / html文件,我们只需要一个configuration文件来存储关于文件夹和存储库的信息。 例如:在文件/etc/backup/svn_folders.list中,我会有

FOLDERNAME1 SVN Repository Address1 FOLDERNAME2 SVN Repository Address2 etc... 

那么万一发生崩溃,我们只需要parsing这个文件和SVN结帐。

2 – 用复制备份MySQL数据

我们有3个主要的mysql服务器,我在一个备份服务器mysql_multi上实现,同时有三个mysql实例运行,每个服务器都是主服务器。 那么,我每天都在

 Stop slaves mysqldump start slave 

这样,我确信我们的主MySQL服务器不受备份过程的影响。 然后,foreach主服务器,我只需要将这些信息存储在一个conf文件/etc/backup/mysql.info serverID = ID

要恢复数据库,我只需要从conf文件中获取这个serverID,然后从备份服务器将rsync对应的转储映像恢复到还原的服务器。

3 – 包装清单

使用debian,很容易知道系统上安装的完整软件包列表。 一个cron只会将这个列表存入/etc/backup/package.list

4 – 自定义应用程序

有时候,我们需要手动安装软件包(perl,编译等…)我正在考虑创build一个文件夹/ etc / backup / manual /包含所有的自动安装脚本,然后在还原时,运行这个文件夹中的每个脚本应该使窍门

5 – configuration文件

具有所有configuration目录(例如:/ etc)的列表的文件/etc/backup/conf_data.list可以通过cronjobparsing,然后在备份服务器上进行rsynced。

在恢复时,我们需要先恢复/etc/apt/sources.list,然后执行步骤4,然后将保存的configuration文件rsync同步回服务器。

你可以让我知道你对这个概念的看法。 你已经实现了这样的东西? 你遇到问题吗?

我想你已经想出了一个体面的计划,但有2个错误以上。 rSync只备份更改,而不是整个磁盘和rsync应该得到configuration文件,如果他们改变,不pipe假设你正确地configuration它。

我的观点是,你需要从一个可靠的评估开始,看看丢失这些数据将会花费多less钱,然后根据你的知识来决定是否值得查证损失。 如果成本高于您的舒适区,您需要咨询或聘请另一家公司实施稳定的战略。 没有冒犯,但如果有重大风险,你不想在车轮离开货车时把手提包拿走。 我看到有人在这样的事情上失去工作。 他们想要超越,但是当某些事情不正确的时候,他们就会超越自己的头脑。 有时你只需要知道什么时候退出。 如果失败,你仍然可以投入,但不能承担责任。

只是.02

您可能希望将定期运行的aptitude-create-state-bundle添加到您的scheme中以完成系统恢复。 见http://man.he.net/man1/aptitude-create-state-bundle