我刚刚接手了一个托管在 Windows Azure 上的 Web 项目。
我们一直遇到性能问题,今天我注意到我们的 SQL Azure 服务器位于西欧地区,而托管我们网站的实例位于北欧地区。
- 这是一个多大的问题?
- 假设这是一个问题(并且我认为至少从带宽计费的角度来看这是一个问题!)我该如何解决它?
有没有比在正确区域购买第二台 SQL Azure 服务器、使站点脱机、从当前服务器导出、导入到新服务器、修改站点配置以使其指向新服务器更简单的迁移方法?如果可以在不停机的情况下完成,我会非常高兴。
答案1
问:这个问题有多严重?
答:这是一个潜在的严重问题,因为:
- 潜伏- 您的 Web 服务器与其后端数据库之间的 ping 时间达到两位数毫秒。这很愚蠢,只会使您的网站响应速度低于应有水平。
- 成本- 子区域之间的数据传输需要付费,而子区域内的数据传输是免费的。
问:如何以最少的停机时间修复此问题?
答:如果不知道您的数据库的大小或复杂性,我们很难提出具体的建议。Microsoft 提供了许多将数据从一个 SQL 服务器移动到另一个 SQL 服务器的选项:
一般来说,如果你的数据足够多,简单的备份和恢复不足以满足你最小化停机时间的要求,数据同步服务可能是你最好的选择。
答案2
理想的情况是将数据库与计算实例放在同一个数据中心,正如@Miles 提到的那样。我想讨论“购买”另一台数据库服务器的话题。
配置 SQL Azure 服务器时,服务器本身无需付费,只需付费数据库。数据库费用根据每天的数据库大小按日摊销。
对于从一个数据中心到另一个数据中心的迁移,假设您能够成功备份数据库并将备份存储在 blob 中。然后,您可以将此数据库还原到新服务器。一旦您知道两个数据库已同步(可能通过设置同步服务),您就可以修改应用程序的连接字符串以指向新创建的数据库。假设您的数据库连接存储在应用程序的 Web 配置中,您可能需要部署应用程序的新版本。您可以部署到暂存区,确保一切正常,然后进行 VIP 交换以将新应用程序投入生产。
迁移到新数据库并确保所有数据都是最新的后,您就可以安全地删除原始数据中心的数据库。假设这一切在 3 天内完成,那么在这 3 天内您只需承担双倍的数据库成本。