如何将SQL Server可用性组数据库复制到Kubernetes并实现快速克隆
利用分布式可用性组与Portworx实现跨平台数据库迁移与快照克隆
本文介绍如何将已部署在Windows可用性组(AG)中的SQL Server数据库,通过分布式可用性组技术复制到运行于Kubernetes环境中的SQL Server实例,并借助Portworx实现持久化存储与数据库快照,从而为测试和开发提供高效、可扩展的数据库副本。
在现代企业环境中,生产数据库常部署于高可用架构中,如SQL Server的Windows可用性组。然而,为开发与测试环境快速提供生产数据副本仍是一大挑战。Kubernetes虽具备快速部署SQL实例的能力,但实现跨平台数据库迁移需解决存储、网络与身份验证等复杂问题。
本文方案通过构建分布式可用性组,将Windows AG中的数据库无缝“植入”Kubernetes中的SQL Server Pod。该过程无需手动备份还原,利用SQL Server原生的自动植入功能,只要数据库文件位于默认路径,即可实现自动同步。
为实现持久化存储,Kubernetes集群中部署了Portworx,并创建了自定义存储类(StorageClass)px-mssql-sc,用于为SQL Server StatefulSet动态分配持久卷(PV)。同时,在Pod的主机文件中配置Windows AG监听器的DNS映射,确保网络可达。
接下来,需在Kubernetes中的SQL Server实例与Windows实例之间建立安全通信。具体步骤包括:
- 在各实例中创建相同的主密钥、登录名和用户;
- 在Kubernetes Pod中生成证书并备份;
- 将证书文件复制至Windows节点,并在各Windows SQL实例中重建证书;
- 配置镜像端点并启用证书身份验证。
随后,在Kubernetes中的SQL Server实例上创建单节点无集群可用性组,并在Windows AG主节点上创建分布式可用性组,指定Kubernetes端的AG作为目标。通过服务(Service)暴露SQL Server(端口1433)和AG端点(端口5022),确保通信畅通。
一旦数据库成功植入Kubernetes中的SQL实例,即可利用Portworx的快照功能实现数据库克隆。首先创建VolumeSnapshotClass,定义快照策略;然后基于托管数据库的持久卷声明(PVC)创建快照。
通过该快照,可动态生成新的PVC,并用于部署新的SQL Server StatefulSet实例。新实例将自动挂载包含数据库副本的持久卷,实现快速部署。
由于克隆的卷包含原实例的系统数据库,新SQL实例会继承原有的AG配置。因此,在使用前需手动删除分布式可用性组及相关配置,使数据库恢复正常运行状态。
该方案支持无限扩展:在新实例运行后,可再次对其卷进行快照,用于生成更多副本,极大提升测试环境搭建效率。
整个流程实现了从生产级高可用环境到开发测试环境的自动化、可重复的数据库复制,结合Kubernetes的弹性与Portworx的存储能力,为企业数据管理提供了高效、可靠的解决方案。


