DBA Bootcamp
几个月前,Business Intelligence 部门跑来跟 DBA 讨论,希望可以设定一个複製资料库的排程,每天将约 20 TB 的资料库複製到另一个 SQL Server 供数据科学家们 (Data Scientists) 使用。没错!是20 TB, 而且是每天的排程 (on a daily basis)。
设定 backup 与 restore 的複製排程听起来相当容易,但问题是如果使用 SQL Server 内建的複原方法, 20 TB 资料库的複製程序推算大概要花 26个小时才能完成,但每个人每一天都只有24小时,根本就不切实际。所以要达成使命,必须得借助 Storage Admin 的帮忙。
让我们想一想如何在複製程序上利用 SAN storage snapshot 的 magic。通常 Storage Admin 从 SAN 建立 volume (create a volume), 从 volume 裁切 disk luns (cut disk luns),然后附加 disk luns (attach disk luns) 到 SQL Server 的虚拟主机 (VM) 上设定为储存的空间(如 E:\ )。 Snapshot 1GB 的时间跟 snapshot 20 TB 的时间是相同的,大概需要30秒到60秒时间完成。在 Snapshot 之前,系统会将 SQL server 的 I/O 静止 (freeze the I/O), 确认储存拍照时没有任何的资料库活动运作,拍完照后再释放 I/O,让SQL Server 恢複正常使用。
了解了上述 storage 的概念后,现在把所有资料库複製程序归纳如下。
首先,建立安装 一个新的 destination (目的地) SQL server, 然后建立一个空的複製资料库,複製资料库的名称跟档案的名称与 source (来源) 资料库的名称必须一样,并设定好使用者与权限。(举例来说,使用者资料库的 MDF 跟 LDF 都在 E:.)
排程:
在 source (来源)SQL server, snapshot E:\ drive (包括 MDF 跟 LDF).
将步骤 1 得到的 snapshot 附加 (attach) 到 destination (目的地)SQL Server 覆盖取代原有的 E:.
重启 destination (目的地) SQL server service.
就这样,这个 20 TB 资料库每天的複製程序在30分钟内搞定。