我有一个运行 Windows Server 2012 的 Web 服务器,上面主要有三个东西:
- Web 内容(html、php 等文件)
- mySQL 数据库
- solr 数据库
今天我突然意识到,过去一年我一直忙于开发,根本没有想过备份任何东西——值得庆幸的是,我今天才想到这一点,而不是在服务器崩溃后!
我想知道每晚备份这三个不同的东西的最佳方法是什么。我想我可以:
创建某种“磁盘映像”,这样会很好,因为我可以存储映像,如果发生灾难性事件,可以轻松恢复到昨天的数据,但我只为个人使用创建磁盘映像,如果我的驱动器是 1TB,映像也是 1TB - 我不知道这是否是唯一的方法,而且我不确定我是否有足够的硬盘空间来每晚执行此操作。另外 - 我只有 1 台服务器,里面有 2 个驱动器,所以我不确定我会把它备份到哪里。如果这是最好的选择,我会找到一种方法来让它发挥作用。
我可以编写一个脚本,每晚复制所有 Web 文件(php、html 等),编写 MySQL 备份脚本也相对容易,但在网上搜索备份 solr 似乎并不那么简单。当然,我想我可以弄清楚,然后单独备份这三个文件,但如果我出了什么事,别人可能很难把这些数据带回公司。
我总是看不到第三种选择
答案1
有许多应用程序在备份 SQL、文件、系统状态或简单文件级备份方面表现非常出色,尤其是对于 Windows。我建议使用 cloudberry 或您选择的其他软件包,以消除备份中的人为因素。备份 SQL 数据库、系统状态和选定的文件/目录,包括 solr 索引文件夹。
另外,结合使用 SQL 脚本备份计划和使用任务调度程序执行的批处理脚本(就像您在问题中提到的那样)也可以。但是,如果您选择这种方式,请确保您经常检查它或使用 vbackup 之类的实用程序,它允许您自己制作一些日志!如果您愿意,我也可以提供我使用过的示例脚本。
编辑:为了更彻底地回答您的问题,利用诸如 Cloudberry 之类的应用程序可以实现压缩、加密和更低的带宽要求。
答案2
欢迎来到备份世界 Brian!我想我以前也和你一样,认为备份浪费时间,甚至浪费金钱,但你一旦被咬了,就明白了这一点!
我认为您需要基于映像的备份,并集成 VSS,以确保数据和备份的一致性。有许多解决方案可供选择,具有各种选项、价格等。
您需要考虑的只是:
1) 存储,基本上就是您需要保存备份的地方(例如,现场或异地 => 在云中)2) RTO、RPO => 考虑数据丢失量(这实际上决定了您的备份频率和日记)和恢复速度(例如,恢复数据的速度取决于具体情况),两者都决定了您的整体保留策略。3) 解决方案。我尝试过不同的方法,从我的脑海中我可以建议以下这些:Cloudberry Backup、Veeam Endpoint、Crashplan 和其他一些。4) 您需要哪些恢复选项(基本上是您想要保护自己的形式,例如整个计算机、一些文件、mysql 事务/数据库/实例/回滚选项等)。所有这些基本上都应该与 #2 RTO 一起考虑。
思考并权衡上述 4 件事,然后做出决定。是的,备份很重要,尤其是当您开始丢失数据时,所以您处于紧急状态!备份是您的保险。
答案3
磁盘映像将起作用如果所有应用程序都停止了 - 否则,您不知道在转储时是否有未完成的事务。如果您不需要恢复整个系统,这也是一种缓慢的恢复方式。
MySQL 转储很容易,基于文本的文件也很容易(使用自动 git push 的 git 是个好主意)。对于 solr,似乎有一个可以调用的备份 URL 可以将其转储,但我只在 Elasticsearch 下使用它,所以 YMMV。
答案4
我建议分别备份每个项目。这样,如果只有一个项目出现问题,您只需要恢复该项目即可……
听起来您在 Web 内容备份方面走在了正确的轨道上,但对于 SQL,我建议使用 MSSQL 服务器中的作业功能(而不是任务计划程序)。这还有一个额外的好处,就是可以为您提供作业运行状态的历史记录。 https://blogs.msdn.microsoft.com/sqlagent/2010/10/12/create-a-database-backup-job-using-sql-server-management-studio/