分盘存储:实现数据库备集群备份文件分散存储

摘要:为了解决磁盘存储空间限制的问题,提出分盘存储手段,从而实现备集群备份文件分散存储的目的。

1. 摘要

双集群容灾场景下,须要将主集群中的数据备份到备集群。然而,随着主集群数据量的增大,备集群不存在一个单独的大容量磁盘用于存放主集群发来的备份集,或存放备份集的盘符空间不足以存储主集群发来的全部备份文件。可是,容灾场景中仍然要能支持双集群的备份恢复。所以,为了解决磁盘存储空间限制的问题,提出分盘存储手段,从而实现备集群备份文件分散存储的目的。node

2. 分盘存储原理

在双集群容灾设计中,主集群的角色是只作备份,备集群的角色是只作恢复。为了实现主备数据的同步,须要将备份集以.rch的格式进行数据拷贝。工具

如上图所示,在优化前,主集群会将压缩在roachbackup中的数据所有scp到备集群的roachbackup中,这样的存储方式,会对备集群磁盘空间形成很是大的负担。测试

在优化后,主集群会将压缩数据scp到备集群实例目录中的roachbackup文件夹,而后经过软连接的方式,备份目录中不一样的DN和CN连接到了roachbackup文件夹。因为CN和DN分布在不一样的磁盘上,同时软链接使得roach看到的路径和之前同样,这样就实现了数据分盘存放的目的。优化

3. 分盘存储步骤

第一步:在备集群CN和DN实例目录下建立文件夹roachbackup,主集群根据config.ini建立备集群的media目录下的目录连接:url

好比/data1/roach3/mediadata/roach/20210129_181026/ecs-env-2998/dn_6001_6002为一个符号连接,此符号连接能够指向备集群roachbackup目录/data1/ha_install_3/data1/roachbackup/20210129_091422/master1目录。其中,master1子目录为archive/data/data_colstore,分别表明着日志/行存数据/列存数据spa

第二步:备集群恢复前clean集群时,跳过各实例目录的roachbackup文件夹。.net

第三步:在备份目录和实例目录不一样的backupkey文件夹下,有不一样的节点目录,在节点目录下有cn和dn目录,将备份目录下的cn和dn软链接到实例目录。设计

第四步:只有全量备份和全量恢复时必须这样作,增量备份恢复可选。按照如今的设计逻辑,全量和增量备份都创建了软连接。3d

第五步:恢复完成后,备集群删除建立的符号连接、各实例目录下的roachbackup文件夹,即恢复即删。对于主集群roachbackup目录,边传输数据,边删除数据,即传输即删。日志

4. 分盘存储结果

如上图所示,对于cn和dn目录,都经过软链接方式链接到了roachbackup对应的data_cn,master1,dummy1。经过软链接方式,roach在scp时,觉得是传输到了一个磁盘上,但实际上写到了软链接对应的其余盘上,这样的话,数据也就实现了存放在不一样磁盘上的目的。

5. 软链接含义

分盘存储中,实现的基础就是软链接的创建。那么,软链接是什么意思呢?

软连接有着本身的inode号以及用户数据块。只不过用户数据块中存放的内容是另外一文件的路径名的指向。

如上图所示,在备集群恢复dn_6001_6002数据时,其实是去/data1/ha_install_3/data1/roachbackup/20210129_091422/master1目录中去读取真正的数据,从而完成数据访问,最终实现备集群备份集的恢复功能。

6. 结论

随着数据仓库业务的发展以及客户数据量的增大,这就要求双集群容灾须要不断的迭代,深刻挖掘客户需求是研发的第一性原则。

双集群容灾任务存在不少的策略,如分盘存储,生命周期清理,断点续备份和断点续恢复,主备切换。继往开来,双集群新的特性仍需开发,如自动化测试工具、过程监控工具和云化等。将来可期,实现产品生态丰富的目的始终是研发的第一辈子产力。

本文分享自华为云社区《GaussDB(DWS)备份容灾之分盘存储》,原文做者:zxy_db 。

 

点击关注,第一时间了解华为云新鲜技术~

相关文章
相关标签/搜索