【问题标题】:Automating (DevOps) the deployment of SQL Server Databases with Large Datasets使用大型数据集自动化 (DevOps) 部署 SQL Server 数据库
【发布时间】:2016-12-21 12:42:05
【问题描述】:

我正在进行一个 DevOps 项目,该项目使用各种 DevOps 工具自动部署不同代码堆栈和数据库的应用程序。我正在寻求有关自动化 MS SQL DB 部署和后续更新的建议。

目前的方法是使用 Terraform 或 Cloudify 通过 VM 蓝图构建 DB VM。我目前有一个配置了 MSSQLServer 的 VM,并且可以针对它编写 sql 文件以实例化我的数据库。但是,一旦我开始编写原始数据的脚本,就大小而言,我经常会耗尽内存。我知道,我可以手动增加属性中的内存等,或者在 CLI 中使用 sql 文件。我也知道 DTS 或 BCP 之类的东西,但我想我正在寻找的是关于通过 DevOps 管道自动部署 MS SQL DB 的最佳方法的建议。目的是使用 jenkins 并通过 power-shell 部署脚本。

最初的想法是强制 DB 所有者提供 bak/mdf 文件,并编写后续更新脚本。但我真的很感谢关于商业最佳方法的委员会,特别是如果你已经大规模地这样做了,例如。数以千计的应用程序。

如果它有助于我的管道的性质,我采用的方法需要同时适用于小型数据库的 100MB 和更大的数据库 - 例如高达 1-2TB。

【问题讨论】:

  • 使用数据库项目并构建 DACPAC,这就是他们的设计目的。对于少量数据,您可以使用包含数据的 BACPAC。对于海量数据,BACKUP/RESTORE 绝对是您最快的选择(实际上,您多久部署一次 2 TB 数据库?!)但是如果您重视一致性而不是性能,那么下一个合乎逻辑的方法是bcp将所有数据转换为原生格式,并在部署 DACPAC 后将bcp 重新输入。在任何情况下,当涉及到需要数据迁移的升级时,不要指望免费的午餐——这总是需要一些仔细的脚本编写。

标签: sql-server database jenkins devops


【解决方案1】:

另一种方法(截至 2018 年初)是使用 SQL Server 数据库克隆,它将一组数据库的完整字节副本还原到支持交付克隆(差异磁盘)的 Windows 虚拟硬盘驱动器 (VHD)带有可安装的副本。克隆可以安装在传统的 SQL Server 实例或容器上,您可以查看 Red Gate 和 Windocks 的克隆支持。

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多