执行可缩放共享数据库的同步更新

如果使用备用的报表卷集更新可缩放共享数据库配置,则可以通过滚动更新或同步更新来更新数据库。如果需要报表数据库向客户端返回相同的结果,则执行同步更新。在同步更新中,可以从所有服务器实例中分离旧版本的数据库,然后向任何服务器实例附加新版本。

如果出现下列情况,则遵照此策略:

  • 必须使报表数据库保持同步以向所有报表服务器上的客户端返回相同的结果。也就是说,陈旧版本和新版本的数据库一定不能同时存在。

  • 或者,必须在最终期限到达之前尽快完成更新,这比保留当前执行的查询更为重要。

使所有报表服务器上的数据库保持同步意味着:在陈旧版本数据库的分离阶段和新版本数据库的附加阶段之间暂时无法使用报表数据库。若要最小化数据库的中断时间,可以在所有服务器上启动新数据库的附加阶段,然后在所有服务器上完成分离阶段。最后,尽快将数据库附加到每个报表服务器。

同步分离阶段和附加阶段

同步所有服务器实例上的更新循环或尽快完成更新循环:

  1. 在每台报表服务器上,通过将包含新数据库的备用卷集装入到报表服务器上开始新数据库的附加阶段。

  2. 在所有报表服务器上完成分离阶段。对于时效性更新,请在分离陈旧数据库和卸除报表卷之前终止任何长时间运行的查询。

  3. 将新数据库附加到每台报表服务器上的服务器实例。只要将数据库附加到给定的实例,终止的查询便可在该实例上立即重新启动。

下图阐释了使用一对备用报表卷维护在所有服务器实例上同步的单个可缩放共享数据库。

使用 2 个报表卷的可缩放共享数据库

此图阐释了使用一对备用报表卷对报表数据库执行两个半更新循环。最初不存在任何报表数据库。

  1. 在卷 A 上生成一个新的报表数据库:作为两个报表卷中的一个,卷 A 将装入到生产服务器上并标记为读写。这样便生成了初始版本的报表数据库。接着,将报表卷标记为只读,并将其卸除。

    注意注意

    尚未使用备用卷。

  2. 卷 A 的附加阶段:卷作为只读卷装入到每台报表服务器上并附加到每个服务器实例。

  3. 当报表数据库作为可缩放共享数据库在卷 A 上可用时,其他报表卷 B 将装入到生产服务器上并标记为读写,从而针对第二个更新循环生成最新版本的数据库。当新版本的报表数据库在卷 B 上准备就绪时,此卷将会卸除。

  4. 卷 A 的分离阶段和卷 B 的附加阶段重叠:

    • 首先,备用卷 B 将装入到报表服务器上。

    • 接着,卷 A 上的陈旧数据库将分离。

    • 然后,卷 B 上刷新的报表数据库会附加到每台报表服务器。

    • 最后,卷 A 将从每台报表服务器上卸除。

  5. 当报表数据库作为可缩放共享数据库在卷 B 上可用时,其他报表卷 A 将装入到生产服务器上并标记为读写,从而为陈旧版本的报表数据库的刷新做好准备。此过程可能需要更新现有数据库或生成一个全新的数据库。