DBA福音 | 如何无视数据量快速搭建测试数据库

众所周知,出于产品的开发需求,搭建测试数据库是DBA一项日常工作,不同的行业频度可能差异很大。例如我接触到的保险行业客户,搭建测试数据库的繁重程度简直令人瞠目结舌,某DBA向我吐槽这项日常工作的血泪史:

DBA福音 | 如何无视数据量快速搭建测试数据库

上述场景有搞笑的成分在,觉得和自己工作场景不符的同学权且当段子看。不过这个段子来源于真实的场景,日复一日的搭建测试库给DBA同学带来极大的工作负荷,以及重复无意义的操作。

今天我们就来探讨如何降低这项工作的耗时,将原本一天的工作量降低为5分钟。

|  什么是快照和克隆

首先,在传统的数据库+硬盘之间,需要加入一层存储池,由存储池来统一管理所有的硬盘,并根据实际需要划分逻辑卷供数据库使用。 

数据库向逻辑卷写入的数据最终仍落到硬盘上,逻辑卷其实只是一些指针的集合,如图1。

DBA福音 | 如何无视数据量快速搭建测试数据库

第二步,创建快照。快照仍然是指针的集合,指向当前逻辑卷同样的数据块,所以并没有额外消耗空间,如图2。

DBA福音 | 如何无视数据量快速搭建测试数据库

随着时间推移,数据库在不断修改数据,例如将数据“5”修改为“6”,因数据“5”被快照占用,无法直接修改,因此使用新的数据块来存储“6”,并修改逻辑卷的指针,使其指向“6”,此时快照仅占用数据“5”一个数据块,因此空间消耗为“差异数据”,就是ROW(Redirect-On-Write),如图3。 

DBA福音 | 如何无视数据量快速搭建测试数据库

第三步,创建克隆卷。为了保证数据完整性,快照一般是不建议写入的,因此我们需要创建一份“数据副本”,即克隆卷。在快照的基础上创建一份可写的卷,修改的数据以新数据块存储并修改克隆卷的指针,从而达到不影响逻辑卷,快照的内容的前提要求,如图4。

DBA福音 | 如何无视数据量快速搭建测试数据库

此时克隆卷可以用于做测试用途,由于创建一份克隆卷本质上仅仅是根据快照创建了一份指针的集合,因此无需数据拷贝,且与数据总量无关,无论GB级还是TB级,均可以在秒级创建出克隆卷以供测试,极大降低搭建测试数据库的耗时。

|  引入合适的工具

沃趣科技QBackup容灾备份云平台,目前支持Oracle、MySQL、SQL sever等主流数据库的备份,可同时对多套数据库做集中式备份管理,并对备份进行持续校验以确保数据的可恢复性。产品集成存储池、快照、克隆等特性,并且引入虚拟化将数据库所依赖的OS、软件环境制作成为模板,可以基于模板快速生成多套数据库环境;测试库之间相互隔离,修改系统时间等操作完全不影响其他测试库,解决了传统方案需要多台物理机的问题,降低整体成本;基于快照+克隆可以省去数据拷贝环节,极大节省搭建时间,降低网络带宽及IO占用等。

使用QBackup来创建测试数据库,仅需要在页面上点选,即得到一个完整的测试数据库环境,将DBA原本一天的工作量缩短到几分钟,大大减轻DBA的工作负担。

尽量使用工具降低工作中的重复、无意义劳动,才能真正回归到业务的本质去推进更有价值的工作,毕竟人生苦短,省下这些时间多学点新技术才是正道!