乐趣区

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

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

1. 摘要

双集群容灾场景下,须要将主集群中的数据备份到备集群。然而,随着主集群数据量的增大,备集群不存在一个独自的大容量磁盘用于寄存主集群发来的备份集,或寄存备份集的盘符空间不足以存储主集群发来的所有备份文件。然而,容灾场景中依然要能反对双集群的备份复原。因而,为了解决磁盘存储空间限度的问题,提出分盘存储伎俩,从而实现备集群备份文件扩散存储的目标。

2. 分盘存储原理

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

如上图所示,在优化前,主集群会将压缩在 roachbackup 中的数据全副 scp 到备集群的 roachbackup 中,这样的存储形式,会对备集群磁盘空间造成十分大的累赘。

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

3. 分盘存储步骤

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

比方 /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,别离代表着日志 / 行存数据 / 列存数据

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

第三步:在备份目录和实例目录不同的 backupkey 文件夹下,有不同的节点目录,在节点目录下有 cn 和 dn 目录,将备份目录下的 cn 和 dn 软连贯到实例目录。

第四步: 只有全量备份和全量复原时必须这样做,增量备份复原可选。依照当初的设计逻辑,全量和增量备份都建设了软链接。

第五步: 复原实现后,备集群删除创立的符号链接、各实例目录下的 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。

点击关注,第一工夫理解华为云陈腐技术~

退出移动版