GBase 8a多VC 镜像使用
1. 查看VC 的distribution【镜像功能要求两个 VC 的 distribution 的主分片数相同】
gcadmin showdistribution vc vc1
gcadmin showdistribution vc vc2
2. 比对两个 VC 的 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;
3. 同化 HASHMAP:镜像表所属的两个 VC 创建相同的 hashmap:
- 两个集群创建相同的 distribution;
- 初始化时创建相同的 HASHMAP:
语法:
- initnodedatamap from vc 是专为镜像功能设计,所以要求 distribution 个数必须相同。
INITNODEDATAMAP FROM VC1;
4、创建镜像
1. 虚拟集群镜像功能提供了三种方式创建表镜像。分别是:
(1) 创建单个表镜像;
(2) 以库为单位创建表镜像;
(3) 同时创建主表和镜像表;
(4) 创建库的默认镜像 VC。
1. 创建单个表镜像;
- 以下命令用于 VC1.DB.T1 表和 VC2.DB 库已存在, VC2.DB.T1 表不存在的场景下,
在 VC2.DB 下创建 T1 表、同步数据并创建镜像关系,使 VC1.DB.T1 与VC2.DB.T1 完全一样,
并在后续对镜像关系表的任意一边操作保持同步到另一边。如果 VC2.DB.T1 表存在则报错。
ALTER TABLE VC1.testdb.test CREATE MIRROR TO VC2;
(1) 强制创建镜像命令:
- 以上命令使用 FORCE 参数,用于 VC2.DB.T1 表存在的场景,
会强制在 VC2.DB中创建 VC1.DB.T1 的镜像表,使 VC2.DB.T1 与 VC1.DB.T1 完全一样,
并在后续对镜像关系表的任意一边操作保持同步到另一边。
ALTER TABLE VC1.DB.T1 CREATE MIRROR TO VC2 FORCE;
#################################################################################
2. 以库为单位创建表镜像
- 镜像库必须有主库的库,方可创建成功
ALTER DATABASE VC1.DB CREATE MIRROR TO VC2;
(1) 强制创建库级镜像表命令(使用 Force 参数):
- 镜像库存在主库的库,以及还存在表
ALTER DATABASE VC1.DB CREATE MIRROR TO VC2 FORCE;
#################################################################################
3. 同时创建主表和镜像表
- 在 CREATE TABLE 语句中增加 MIRROR TO 参数来实现同时创建主表和镜像表。
CREATE TABLE VC1.DB.T1(A INT, B VARCHAR(10)) MIRROR TO VC2;
CREATE TABLE VC1.DB.T1 MIRROR TO VC2 AS SELECT * FROMVC1.DB.T
如果 VC2.DB 中存在 T1 表则报错。
#################################################################################
4. 创建库的默认镜像VC
- 设置 VC1.DB 库的默认镜像所在的 VC 名(后续简称为默认镜像 VC),
用于VC1.DB 和 VC2.DB 已存在的场景下。如果 VC2.DB 不存在则报错。
ALTER DATABASE VC1.DB SET DEFAULT MIRROR = VC2;
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526