在可用性组数据库中部署和回滚更改

Dan*_*her 6 snapshot availability-groups sql-server-2014

我正在寻找解决方案或工作流程。以下是我在使用独立服务器时进行数据库部署的方式:

  • 创建生产数据库的快照
  • 部署更改
  • 验证部署是否成功
  • 如果部署不成功,请从快照还原数据库。

我想对可用性组中的数据库执行类似的过程,但从备份或快照还原不是理想的选择,因为数据库相当大,我必须先将数据库从 AG 中取出。这是我正在寻找的理想解决方案类型:

  • 暂停 AG 中的数据移动
  • 将更改部署到主副本
  • 验证部署是否成功
  • 如果部署不成功,将主副本回滚到我们暂停数据移动并重新启动同步的 LSN。

有没有可行的方法来做到这一点?

我会使用BEGIN/ ROLLBACK TRANSACTION,但这在自动构建过程中更难实现,并且考虑到我想在提交或回滚之前首先检查结果(来自不同的数据库连接)。

小智 2

确实没有什么实用的方法。我确实可以想到三种回滚失败部署的方法:

  • BEGIN \ ROLLBACK TRANSACTION:通常情况下,这是我的建议 - 它是最干净的,并且您不必暂停数据移动即可执行此操作。但是,由于您需要能够从另一台计算机查看更改,因此这并不是一个真正的选择。
  • 回滚脚本:使用此脚本,您可以预先编写将数据库返回到部署之前的状态所需的命令。这不是真正的回滚,并且在某些情况下对于大型数据库可能不切实际。
  • RESTORE DATABASE:正如您所提到的,在 AG 的大型数据库上这样做会遇到麻烦。