GBASE南大通用数据库-GBase8a虚拟集群镜像技术

随着云计算和大数据技术的发展,虚拟集群环境下的数据同步和备份问题日益凸显。如何在保证数据一致性的同时,实现高效、可靠的数据管理?今天,我们为大家介绍一款强大且实用的技术——GBase8a虚拟集群镜像。

什么是虚拟集群镜像呢?

虚拟集群(visual cluster,简称vc)大家都很熟悉了,就是通过将不同的数据节点组成不同的集群,由统一的入口进行访问,使得应用能够透明地访问多个物理集群,就像访问一个统一的集群一样。虚拟集群镜像是虚拟集群的一个重要特性。GBase8a镜像集群允许在两个vc之间为库、表创建镜像关系,使得用户对于任意一张表的写操作(DDL、DML和Load操作)都能实时同步到镜像关系对应的另一张表。这种镜像关系是相互的、平等的,不存在主次区别。本篇文章就从虚拟集群镜像的应用场景、搭建虚拟集群镜像前提条件及虚拟集群镜像特性几个方面来为大家介绍。

虚拟集群镜像的应用场景

1、灾备:每个机房分别部署一个集群,两个集群实时互为备份,机房之间使用专线互通。当有一个机房整体故障了,也能保证集群正常使用。

GBASE南大通用数据库-GBase8a虚拟集群镜像技术_第1张图片

2、负载均衡:用户将业务进行划分,一部分业务在集群A上执行,另一部分业务在集群B上执行,有效地缓解集群运行压力。

3、读写分离用户业务A在集群上写入数据,业务B在集群B上可以读到业务A写入的数据,即集群A负责写入操作,集群B负责查询分析操作。

4、机房迁移:当集群需要迁移到新地点时,可在新地点搭建集群并创建vc,建立新vc和原vc的镜像关系,实现两个vc的数据同步与备份。待新旧vc数据同步完成后,可将数据连接切换到新vc,并删除镜像关系和旧vc,完成机房迁移工作。

创建镜像集群前提条件

镜像关系的创建必须保证vc间的hashmap相同,那么hashmap又和什么有关系呢?Hashmap只和distribution表的数量和主分片数量有关,和节点数无关,也就是待创建镜像关系的两个vc必须有相同的distribution数和主分片数。

如何验证两个vc的hashmap是否相同呢?只需要执行如下sql,如果输出和下面完全相同的信息,则证明hashmap相同。

select distinct(res.r), count(res.r) from (select count(*) r from gbase.nodedatamap t where

t.data_distribution_id in (1,2) group by t.hashkey, t.nodeid) res group by res.r;

+---+--------------+

| r | count(res.r) |

+---+--------------+

| 2 | 65536 |

+---+--------------+

1 row in set (Elapsed: 00:00:00.15)

注意: (1,2)是指用于比较的两张vc中的distribution表的 id号,可以通过gcadmin showdistribution查看distribution表的id号。

在实际操作中,也可以执行如下语句,保证在初始化时创建相同的hashmap。

Use vc vc1;initnodedatamap;Use vc vc2;Initnodedatamap from vc1;

Tips:创建镜像集群的节点只能是data节点,不支持对coor节点创建镜像。

虚拟集群特性介绍

实时同步性

创建镜像关系的虚拟集群,通过同步工具实现对数据的实时同步,用户对任意一张表的写操作(DDL、DML、LOAD)都能同时同步到镜像集群中。

对于DML和LOAD操作,会把镜像表的分片当做主表的备份分片来操作,执行时先从gbase.table_distribution表中获取镜像关系(通过select mirror_vc_id from gbase.table_distribution where dbName=''and tbName=''获取表的镜像关系),然后同时操作主表和镜像表所有可用分片,最后统一提交,在提交阶段主表和镜像表结合,每个分片只要有一个备份成功,DML和LOAD就返回成功。

你可能感兴趣的:(数据库,GBASE南大通用,GBASE)