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或其他目標。