SQL Server迁移在DBA的生命周期中是一个常量,SQL Server 2008的支持终结正在推动大量的迁移规划。数据库迁移通常涉及将备份还原到目标环境,为应用程序测试提供开发和QA环境,以及识别已弃用的功能。当处理涉及需要数小时恢复的大量数据库的大型复杂环境时,挑战变得繁重。
Docker容器与数据库克隆相结合,通过利用支持在几秒钟内交付复杂的多TB环境的不可变映像简化了迁移。本文介绍了数据库克隆如何支持将SQL Server 2008迁移到SQL Server 2017 Linux容器。
数据库克隆
Windocks是一个功能齐全的Windows容器引擎,支持所有版本的SQL Server 2008以及数据库克隆。Windocks还支持提供数据库克隆,以便与所有SQL Server环境一起使用,包括Microsoft的SQL容器(Linux和Windows)和传统的SQL Server实例。该组合允许将SQL Server 2008数据库传送到升级后的目标。
图片标题
数据库克隆以不可变图像开始,支持为各种目标环境创建克隆。数据库映像使用Dockerfiles和完整或差异备份构建,这些备份将还原到Windows虚拟硬盘驱动器(VHD)中。父VHD成为不可变的全字节副本,并支持在几秒钟内传送读/写“差异磁盘”(克隆),每个使用少于40 MB的存储空间。SQL Server克隆在支持Windows服务器的任何地方都可用,并且很受SQL Azure,AWS或内部部署的开发和测试支持的欢迎。John Hancock在DevOps Enterprise Summit 2018上谈到了他们使用SQL Server数据库克隆作为DevOps策略的一部分:
构建数据库克隆映像
构建可克隆的数据库映像以纯文本配置文件(Dockerfile)开头,该文件指定目标环境和使用的备份。以下示例构建一个映像,该映像以Linux四个SQL Server 2008完全备份中的克隆为目标。在这种情况下,备份是本地的,网络文件共享将使用通用文件路径。
图片标题
Dockerfile以SQL Server 2017映像开头,后跟一个环境变量,用于在运行时保存和运行Dockerfile。Dockerfile包括构建时间和运行时参数,包括目标IP地址,共享SMB文件夹以及用户分配的端口和sa密码。所述SETUPCLONING FULL命令标识用于构建图像的备份。通过选择Dockerfile并分配图像名称并单击“构建”按钮,可以使用Docker命令行或Web UI构建映像。
图片标题
将SQL Server 2008数据库提供给SQL 2017 Linux容器
完成图像构建后,Web UI将更新以显示新图像。提供了数据库的下拉列表,以允许用户选择使用数据库的子集。系统会提示用户为SQL Server 2017 Linux容器分配端口和sa密码。
图片标题
创建数据库克隆并配置Linux SQL Server 2017容器并装入数据库只需不到一分钟。Windocks跟踪克隆数据库的生命周期,并在不再需要时清理容器和挂载点。网页将更新并显示“数据环境”部分下的添加环境。通过SSMS使用分配的端口和sa密码访问容器。
图片标题
可以根据需要重复提供新环境的过程,以支持升级环境的测试。
DevOps与数据和数据库迁移
DevOps策略广泛用于前端和无状态应用程序,但组织仍在努力将关系后端合并到CI管道中。行业调查表明,平均数据库后端测试环境每月更新两次或更少,很少有组织今天获得足够的测试覆盖率。
现在是时候使用生产数据库克隆来实现SQL Server迁移和DevOps的现代化。克隆提供完整的读/写支持,可在几秒内完成配置而不会影响存储,并提供开发和测试完整的测试环境。虽然我们提倡将Docker容器用于开发/测试,但组织还需要为所有SQL Server环境提供数据,而Windocks通过支持Microsoft Dockers SQL Server容器以及实例和Kubernetes来解决此问题。最后,本文中概述的过程同样适用于将SQL Server 2008迁移测试到SQL Server 2016或其他目标。