我是一名新手服务器管理员。我正在运行一个非常基本的云服务器(Windows 2008 R2),它托管了几个不同的公共网站。现在服务和数据库已经增长了很多,我的服务器在负载下快要崩溃了。所以我联系了云托管公司,显然我购买的服务器类型是当时我能找到的最便宜的,无法升级 - 甚至内存也无法升级! - 我现在需要购买一台新服务器。
所以现在我有几个问题:
- 多个 DNS 记录指向旧服务器。
- 该网站正在与该服务器上的 SQL Server 实例交互,因此我需要先冻结该网站,然后才能在另一台服务器上备份和恢复数据库。
我希望将我的 SQL Server 和 DNS 记录迁移到新服务器,以尽量减少网站用户的停机时间和中断。
我知道我不是世界上第一个进行这种训练的人,所以我希望一些更有经验的人可以给我一些建议,如何尽量减少疼痛。
谢谢!
答案1
使用 DNS 时,您需要将 TTL 设置为较低,以便在更改它们时传输能够更快地生效。
我会找一家新的托管公司,并开始在新系统上尽可能地复制软件配置。静态内容将是最容易移动的。
困难的部分是动态内容,例如数据库服务器中的内容。从 SQL 服务器获取数据转储,然后将其导入新服务器。这应该会为您提供一个相当最新的网站版本,以便与生产系统并行运行。
一旦您确认新站点上的一切正常,请通过禁用访问和转储数据库来“锁定”旧站点,然后将数据重新导入新站点,重新指向 DNS 并上线。
当然,您需要与您托管的网站的所有者合作,以便您可以向他们的用户发布有关迁移的公告。您甚至可以在旧网站上放置一个重定向页面,以便在新网站启动并运行后重定向到新网站,直到 DNS 迁移生效。
DNS 完全迁移后,关闭旧服务器。等待几天,然后永久关闭旧提供商。
对于大型网站,您可以考虑并行运行一段时间的策略;通过网络连接复制 SQL 服务器等,直到您可以关闭 alpha 站点并启动 beta(辅助)站点,这有点像使用两个数据中心进行灾难规划并模拟关闭主站点。如果您的运营规模很小(听起来是这样),那么您最终将不得不创建并行安装,然后在解决问题后,关闭主站点并启动辅助站点,等待 DNS 发挥其魔力,帮助它自动重定向您的旧站点。您需要警告可能会有一天的维护/停机时间,尽管如果您提前将 TTL 设置为较低,切换本身应该只需要几个小时。只需考虑一些模糊因素 - 哦 - 哦时间。
检查日志,了解切换的最佳时间,尽量减少使用。甚至我的银行也警告说,他们的服务将在半夜到周日的几个小时内不可用……尽管我还没有看到它真的完全无法访问。
答案2
几个步骤
DNS 记录 - 首先减少 TTL,让其传播至少 12 小时。如果您有一家优秀的 DNS 提供商,他们会很乐意为您提供帮助。这样,如果您更改了您想要的记录,它将根据 TTL 进行更新。但请记住,全球 DNS 服务器可能需要长达 48 小时才能更新。
您确实应该将数据库服务和文件服务/打印/AD 分开。如果可行,请考虑虚拟化或单独的服务器。
即使网站处于“在线”状态,您也可以进行备份。但显然您希望恢复最新的备份。因此,我建议您进行“测试”以确保恢复工作正常,并在“在线”时进行在线测试。您可以考虑使用“锁定机制”来防止发生任何写入,但您希望在最不繁忙的时间执行此操作(不幸的是,这通常是在标准工作时间之外)。
至于网站,您需要同时运行,确保网站可以通过测试数据库在本地访问。否则,您可能会发现没有时间解决可能/很容易发生的任何“潜在”问题。对于测试,您不需要更改 DNS,而是使用 IP 地址。
答案3
定时
...so I need to freeze the web sites...
这真的是一个选择吗?如果是这样,你真是个幸运儿!如果这真的不是一个选择,那么你需要弄清楚你的网站何时至少经常使用,然后执行迁移。对我来说,这通常是星期六晚上(有些人称之为“更改窗口”)并持续到星期天早上。
技术杂谈
DNS
您通过谁购买了域名?谁在为您管理 DNS 记录?更新您网站的 DNS 应该非常轻松。只需使用提供商提供的工具(很可能是某个网页)来更新记录即可。但请注意,条目可能需要几分钟或几个小时才能完全传播。为了帮助缩短这一时间,您可以降低生存时间。
SQL
备份 SQL Server 数据库也应该相当轻松。SQL Server Management Studio 中有可以为您备份数据库的工具。
未来
将数据库服务器与 Web 服务器分开。无论是通过不同的物理机箱,还是虚拟化。每当您需要移动服务器时,您都不想移动一切。