签到成功

知道了

CNDBA社区CNDBA社区

Oracle 18c 必须掌握的新特性 Sharding系列(4) -- Sharding 分片的方法及高可用

2019-10-30 16:31 2464 0 原创 Oracle 18c
作者: dave

在上篇我们了解了sharding 对象的信息,如下:
Oracle 18c 必须掌握的新特性 Sharding系列(3) — Sharding对象说明
https://www.cndba.cn/dave/article/3760

本篇我们学习下Sharding 分片的方法以及分片的高可用。

1 分片的方法

有了前面的理论储备,我们来看一下分片的相关方法,分片方法一经指定无法修改,所以先了解他们的不同,在进行选择。

1.1 系统管理的分片(System-Managed Sharding)

  系统管理的分片,Oracle使用一致性哈希算法将数据自动分布存储在各个分片中,根据特定算法在分片之间均匀随机的存储数据,不需要用户手动指定如何将数据映射存储到具体的某个分片中。
  
 系统管理的分片可以消除热点数据并在分片之间提供一致的读写性能。当在SDB中添加或删除分片时,Oracle Sharding会自动维护块之间的数据平衡分配。

  一致性哈希是可扩展分布式系统中最常用的分区方法。它与传统的哈希分区不同。对于传统的哈希,桶(bucket)值等于HF(密钥)%N,其中HF是散列函数,N是桶的总数。如果N是一个常数,那么该方法可以很好的工作,但当N值发生改变时,所有数据都需要重新进行移动。更高级的算法,如线性散列,在添加桶时不再需要对整个表进行哈希,但他们限制桶的数量,如桶的数量只能是2的幂,这样桶可以进行分裂。https://www.cndba.cn/cndba/dave/article/3761

  Oracle Sharding中使用一致性哈希避免了这些限制,该方法是将哈希函数的可能值范围(例如,从0到232)划分为一组N个相邻区间,并将每个区间分配给一个块,如下图所示。在本例中,SDB包含1024个块,每个块分配222个散列值。因此,一致性哈希分区本质上就是哈希值范围的分区。

  如上图,如果SDB中的所有分片的硬件性能都是一样的,如果有16个分片,那么每个分片将会分配64个块。
  当将分片添加到SDB或从SDB移除分片时,会发生重新分配块的操作,这样可以保持块在每个分片上是均匀分布。在迁移块过程中,块里的内容是不会改变。

https://www.cndba.cn/cndba/dave/article/3761

  当一个块被分割时,原有的哈希值范围就被分成两个了(从中间分开),但是不会影响其他的块。
  如果使用系统管理分片,那么在创建SDB时,可以指定块的数量,默认是每个分片120个块。块数量一旦指定了,那么以后只能分割块,也就是说块数量无法减少。https://www.cndba.cn/cndba/dave/article/3761

  在通过一致性哈希来创建分片表分区之前,需要先创建一个表空间集(一个块一个表空间)用来存储表分区。执行CREATE TABLESPACE SET语句时会自动创建表空间集。表空间集中的表空间只能是通过OMF来管理的,无法手动指定数据文件路径。
  创建名为ts1的表空间集https://www.cndba.cn/cndba/dave/article/3761

SQL>CREATE TABLESPACE SET data1;

如果想要自定义表空间的属性,使用USING TEMPLATE字句来指定属性:

SQL>CREATE TABLESPACE SET ts1
USING TEMPLATE
( 
 DATAFILE SIZE 10M
 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K
 SEGMENT SPACE MANAGEMENT AUTO
 ONLINE
);

创建完表空间集后,使用一致性哈希来创建表分区,表存储在表空间集的一个表空间中。

SQL>CREATE SHARDED TABLE cndba_users 
( user_id     NUMBER NOT NULL
, name        VARCHAR2(50)
, address     VARCHAR2(250) 
, sex       VARCHAR2(3)
,created_date      DATE
, CONSTRAINT user_pk PRIMARY KEY(user_id))
PARTITION BY CONSISTENT HASH (user _id)
PARTITIONS AUTO
TABLESPACE SET data1;

  PARTITIONS AUTO:分区数自动设置为表空间集data1中的表空间数(等于块的数量),每个分区将存储在单独的表空间中。
  表空间集中的每个表空间都属于不同的块。换句话说,块只能包含表空间集的某一个表空间。但是,相同的表空间集可包含同一个表家族的多个表。在这种情况下,表空间集中的每个表空间都将存储多个分区,每个表中都有一个分区。

  表家族中的每个表也可以存储在单独的表空间集中。在这种情况下,一个块将包含多个表空间,每个表空间集中每个表空间存储一个分区。
  下图是一个系统管理的分片,每个块只包含一个表空间,每个表空间存储一个分区,P表示分区。

1.2 自定义分片(User-Defined Sharding)

  由于需要和性能的原因,某些数据需要存储在特定分片上,并且DBA需要控制分片之间的数据移动。因此Oracle从18c开始支持自定义分片,自定义分片允许用户手动指定数据和各个分片映射关系。但到目前版本,OGG还不支持自定义的分片。

  自定义分片的另一个优点就是在某个分片关闭时,DBA可以知道哪些数据是不可用的。相对应的缺点就是DBA需要不断检查和维护分片间数据,确保负载均衡分布。

  使用自定义分片时可以按范围或列表对分片表进行分区。除了每个分区都应存储在单独的表空间中之外,创建分片表的语法和普通创建分区表的语法没有区别。https://www.cndba.cn/cndba/dave/article/3761

https://www.cndba.cn/cndba/dave/article/3761

SQL>CREATE SHARDED TABLE cndba_ud
( id             NUMBER
, name           VARCHAR2(20)
, address          VARCHAR(5) NOT NULL
, status         VARCHAR2(1)
)
PARTITION BY LIST (address)
( PARTITION p_anhui VALUES ('HF', 'HN') TABLESPACE data1
, PARTITION p_jiangsu VALUES ('SQ', 'LYG', 'HA') TABLESPACE data2
, PARTITION p_shandong VALUES ('JN', 'SG') TABLESPACE data3
);

  使用自定义分片方法时,无法使用表空间集。每个表空间只能通过手动创建并指定shardspace。shardspace是一组分片,用于存储与范围或键值列表相对应的数据。

通过GDSCTL来添加shardspace:

GDSCTL>ADD SHARDSPACE –SHARDSPACE anhui, jiangsu, shandong;
GDSCTL>ADD SHARD –CONNECT shard-1 –SHARDSPACE anhui;
GDSCTL>ADD SHARD –CONNECT shard-2 –SHARDSPACE jiangsu;
GDSCTL>ADD SHARD –CONNECT shard-3 –SHARDSPACE shandong;

创建表空间:

SQL>CREATE TABLESPACE data1 IN SHARDSPACE anhui;
SQL>CREATE TABLESPACE data2 IN SHARDSPACE jiangsu;
SQL>CREATE TABLESPACE data3 IN SHARDSPACE shandong;

下图是自定义分片

  和系统管理的分片一样,块也是由表空间组成。但是当新增一个分片时,不会自动进行块的移动,需要DBA手动在GDSCTL中执行MOVE 块命令。

  在系统管理分片时可以使用SPLIT命令分割块,但该命令不支持自定义分片。所以必须使用ALTER TABLE SPLIT PARTITION语句来进行块的分割。自定义分片支持Oracle Data Guard 和Oracle Active Data Guard的数据复制方案。

1.3 复合分片(Composite Sharding)

  复合分片可以为一致性哈希分区表的不同分区创建多个shardspace。shardspace是由多个分片组成的,用来存储相应的分区数据。

  相比于系统管理的分片和自定义分片,复合分片兼顾了前两者的优点。既可以可以自动保持每个shardspace中分片之间的数据均衡分布,同时还可以跨shardspace分割数据。通过复合分片,首先按照列表或范围键值将数据分割到多个shardspace中,然后再通过每个shardspace中多个分片的一致散列进一步划分数据。

  下图的SDB共有五个分片,其中两个分片是部署在硬件配置高的服务器上,另外三个部署在硬件一般的服务器上。然后根据用户ID将重要用户存储到性能好的分片上,不重要的存储到性能一般的分片上。

1)创建两个shardspace

GDSCTL>ADD SHARDSPACE –SHARDSPACE shspace1;
GDSCTL>ADD SHARDSPACE –SHARDSPACE shspace2;

2)向shardspace中添加分片

分别向两个shardspace中添加分片,shspace1添加两个分片,shspace2添加三个分片。
GDSCTL>ADD SHARD –CONNECT shard1 –SHARDSPACE shspace1;
GDSCTL>ADD SHARD –CONNECT shard2 –SHARDSPACE shspace1;
GDSCTL>ADD SHARD –CONNECT shard3 –SHARDSPACE shspace2;
GDSCTL>ADD SHARD –CONNECT shard4 –SHARDSPACE shspace2;
GDSCTL>ADD SHARD –CONNECT shard5 –SHARDSPACE shspace2;

  
  对于复合分片,与其他分片方法一样,表空间用于指定分区到分片的映射。要将分片表的分区存储在不同的shardspace,必须在每个shardspace中创建单独的表空间集,如下所示:

SQL>CREATE TABLESPACE SET tbs1 IN SHARDSPACE shspace1;
SQL>CREATE TABLESPACE SET tbs2 IN SHARDSPACE shspace2;

  为了将用户定义的分区的数据存储在不同的表空间中,Oracle Sharding提供了将多个分区组成分区集的语法,并将每个分区集与表空间集关联起来。分区集合可以理解为更高级别的分区,是在一致性哈希的分区之上实现的。在Oracle 12c R2中,只支持表中的单个分区集存储在shardspace中。
  
 下面的SQL语句将分片表分为两个分区集:根据重要性分为important和general。每个分区集合都存储在单独的表空间中。然后,通过用户ID上的一致哈希进一步对每个分区集合中的数据进行再分区。

SQL>CREATE SHARDED TABLE b_users
( user_id NUMBER NOT NULL
, user_name VARCHAR2(50)
, address VARCHAR2(250) 
, user_level VARCHAR2(3) 
, created_date DATE 
, CONSTRAINT user_pk PRIMARY KEY(user_id, user_level) 
)
PARTITIONSET BY LIST (user_level) 
  PARTITION BY CONSISTENT HASH (user_id)
  PARTITIONS AUTO
(PARTITIONSET important VALUES ('imp') TABLESPACE SET suyi_tbs1,
 PARTITIONSET general VALUES ('gen') TABLESPACE SET suyi_tbs2);

1.4 使用子分区分片

  Oracle Sharding是基于表分区的, 所以分区表支持的子分区也支持分片。子分区将每个分区分割成更小的部分,这有助于分区内高效并行的执行,特别是在按范围或列表分片的情况下,每个分片的分区数量可能很小。
  从管理的角度来看,通过将子分区放到单独的表空间中并在存储层之间移动的分层存储方法也成为可能。在存储层之间迁移子分区可以在不牺牲可伸缩性和可用性的情况下完成,而且可以在主键上执行分区修剪和分区连接。
以下示例是通过一致性哈希和按范围进行子分区的系统管理分片方法:

SQL>CREATE SHARDED TABLE b_users
( user_id NUMBER NOT NULL
, user_name VARCHAR2(50)
, address VARCHAR2(250) 
, user_level VARCHAR2(3) 
, created_date DATE 
, CONSTRAINT user_pk PRIMARY KEY(user_id, created_date) )
TABLESPACE SET suyi_tbs1
PARTITION BY CONSISTENT HASH (user_id)
SUBPARTITION BY RANGE (created_date)
SUBPARTITION TEMPLATE 
( SUBPARTITION 2016_P VALUES LESS THAN (TO_DATE('01/01/2017','DD/MM/YYYY')),
  SUBPARTITION 2017_P VALUES LESS THAN (TO_DATE('01/01/2018','DD/MM/YYYY')),
  SUBPARTITION 2018_P VALUES LESS THAN (TO_DATE('01/01/2019','DD/MM/YYYY')),
  SUBPARTITION future_p VALUES LESS THAN (MAXVALUE)))
PARTITIONS AUTO;

下图是上面SQL语句创建后的示意图

2 分片的高可用

  分片虽然可以提升性能,但每个分片都存在单点故障,所以建议在使用Oracle Sharding时与Oracle复制技术结合使用,可以实现高可用性和灾难恢复。
  
 SDB和Data Guard、OGG结合使用时,相关的部署操作都由Oracle自动来完成,无需DBA手动进行配置。但目前OGG仅支持的系统管理的分片方法,Data Guard则没有限制。
  
 SDB的总体可用性不受一个或多个分片的影响,一个或几个分片的故障不会导致整个SDB不可用,仅可能会导致故障分片上的数据无法查询。
SDB中可能存在很多的分片,不一定非要对所有分片都都采用DG或OGG, 当硬件不足的情况下,可以针对某些重要的分片进行复制部署,而且安装和配置都是自动完成。当然也可以配合RAC来使用,但这就需要手动来配置。

DG和OGG都可以实现高可用和容灾,但它们也有区别,

1)OGG的所有分片都要是读写模式, ADG的备库是只读。
2)OGG的部署分片更灵活。如:可以使用不同的操作系统,不同的数据库版本。
3)OGG支持多个可读写副本。

2.1 Data Guard与SDB

2.1.1系统管理的分片和Data Guard

  在系统管理分片和复合分片中,由分片组成的一个复制的逻辑单元,称为分片组(shardgroup)。在系统管理的分片中,一个分片组包含了SDB中的所有数据。同一个分片组中的分片通常位于同一数据中心(机房)。单个分片组可以完全复制到相同或不同数据中心的一个或多个分片组中(使用DG或OGG)。
  下图是DG和系统管理的分片一起使用的架构示例。图中有一个主分片组是Shardgroup1和两个备分片组分别是Shardgroup2、Shardgroup3。Shardgroup1是由DG的主库组成,包含1-3分片。Shardgroup2是由同一个HeFei机房的备库中组成,包含4-6分片,主备库之间配置为同步复制。Shardgroup3是由远程机房NanJing中备库组成,包含7-9分片,配置成异步复制。因为使用的是ADG,所以备库可以提供只读访问。

  上图架构中的SDB由三组分片组成:{1, 4, 7}, {2, 5, 8} 和{3, 6, 9}。每组分片都在Data Guard Broker中进行配置管理,并启用fast-start failover(FSFO)。
  在部署复制时,要先要指定分片组的属性(区域,角色等)再添加分片。 Oracle Sharding会自动配置Data Guard并启动FSFO。它还提供了只读工作负载、基于角色的全局服务和复制延迟以及基于位置的路由负载平衡。

 这里看下大致的语法:

1)创建分片目录
GDSCTL>CREATE SHARDCATALOG –database 192.168.1.120:1521:shardcat –region hefei_dc, nanjing_dc
2)添加gsm
GDSCTL>ADD GSM -gsm gsm1 -listener 1571 –catalog 192.168.1.120:1521:shardcat –region hefei_dc
GDSCTL>ADD GSM -gsm gsm2 -listener 1571 –catalog 192.168.1.120:1521:shardcat –region nanjing_dc
3)添加shardgroup
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup1 -region hefei_dc -deploy_as primary 
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup2 -region hefei_dc -deploy_as active_standby 
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup3 -region nanjing_dc -deploy_as active_standby 
4)添加分片
GDSCTL>CREATE SHARD -shardgroup shardgroup1 -destination 192.168.1.121 -credential oracle_cred 
GDSCTL>CREATE SHARD -shardgroup shardgroup1 -destination 192.168.1.122 -credential oracle_cred 
GDSCTL>CREATE SHARD -shardgroup shardgroup1 -destination 192.168.1.123 -credential oracle_cred 
...
GDSCTL>CREATE SHARD -shardgroup shardgroup3  -destination 192.168.1.129 -credential oracle_cred
5)部署
GDSCTL>DEPLOY

2.1.2 自定义分片和Data Guard

  使用自定义分片时,复制的逻辑单元是整个分片(主备库只能是以分片为单位)。分片不会合并到分片组中,每个分片及其副本组成同一个shardspace。所以可以为每个shardspace单独配置DG,其他shardspace中的分片可以不配置DG。Shardspace可以有不同数量的备库,备库也可以位于不同的机房。

1)创建分片目录
GDSCTL>CREATE SHARDCATALOG -sharding user –database 192.168.1.120:1521:cat –region hefei_dc, nanjing_dc, suqian_dc
2)添加gsm
GDSCTL>ADD GSM -gsm gsm1 -listener 1571 –catalog 192.168.1.120:1521:cat –region hefei_dc
GDSCTL>ADD GSM -gsm gsm2 -listener 1571 –catalog 192.168.1.120:1521:cat –region nanjing_dc
GDSCTL>ADD GSM -gsm gsm3 -listener 1571 –catalog 192.168.1.120:1521:cat –region suqian_dc
3)添加shardspace
GDSCTL>ADD SHARDSPACE -shardspace shardspace_a 
GDSCTL>ADD SHARDSPACE -shardspace shardspace_b
GDSCTL>ADD SHARDSPACE -shardspace shardspace_c
4)创建分片
shardspace_a中的分片:
GDSCTL>CREATE SHARD shardspace shardspace_a –region hefei_dc -deploy_as primary  -destination 
192.168.1.121 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp
GDSCTL>CREATE SHARD shardspace shardspace_a –region hefei_dc -deploy_as standby  -destination 
192.168.1.124 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp
GDSCTL>CREATE SHARD shardspace shardspace_a –region nanjing_dc -deploy_as standby  -destination 
192.168.1.126 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp
GDSCTL>CREATE SHARD shardspace shardspace_a –region suqian_dc -deploy_as standby  -destination 
192.168.1.128 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp

同样创建shardspace_b和中shardspace_c的分片:
GDSCTL>CREATE SHARD shardspace shardspace_b –region hefei_dc -deploy_as primary  -destination 
192.168.1.129 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rs
...
GDSCTL>CREATE SHARD shardspace shardspace_c –region suqian_dc -deploy_as standby  -destination 
192.168.1.130 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp
5)部署
GDSCTL>DEPLOY

2.1.3 复合分片和Data Guard

  在复合分片中SDB由多个shardspace组成。然而每个shardspace由主备shardgroup组成而不是分片,也就是以shardgroup为单位进行DG复制。

https://www.cndba.cn/cndba/dave/article/3761

1)创建分片目录
GDSCTL>CREATE SHARDCATALOG -sharding composite –database 192.168.1.120:1521:cat –region hefei_dc, nanjing_dc, suqian_dc
2)添加gsm
GDSCTL>ADD GSM -gsm gsm1 -listener 1571 –catalog 192.168.1.120:1521:cat –region hefei_dc
GDSCTL>ADD GSM -gsm gsm2 -listener 1571 –catalog 192.168.1.120:1521:cat –region nanjing_dc
GDSCTL>ADD GSM -gsm gsm3 -listener 1571 –catalog 192.168.1.120:1521:cat –region suqian_dc
3)添加shardspace
GDSCTL>ADD SHARDSPACE -shardspace shardspace_a 
GDSCTL>ADD SHARDSPACE -shardspace shardspace_b
4)添加shardgroup
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup_a1 –shardspace shardspace_a -region hefei_dc
-deploy_as primary 
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup_a2 –shardspace shardspace_a -region hefei_dc
-deploy_as active_standby
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup_a3 –shardspace shardspace_a -region suqian_dc
-deploy_as active_standby 
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup_b1 –shardspace shardspace_b -region hefei_dc
-deploy_as primary 
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup_b2 –shardspace shardspace_b -region hefei_dc
-deploy_as active_standby 
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup_b3 –shardspace shardspace_b -region nanjing_dc
-deploy_as active_standby 
5)在shardspace中创建分片
GDSCTL>CREATE SHARD -shardgroup shardgroup_a1 -destination 192.168.1.121 –credential orcl_cred  
...
GDSCTL>CREATE SHARD -shardgroup shardgroup_b3 -destination 192.168.1.129 -credential orcl_cred 
6)部署
GDSCTL>DEPLOY

2.2 OGG与SDB

  OGG用于细粒度多主复制,各个分片之间可以互相进行复制,其中所有分片都是读写的,并且每个分片都可以部分复制到分片组内的其他分片中。与Data Guard不同,SDB中,OGG只支持系统管理的分片,并且在配置时无法手动进行配置,只能通过DEPLOY命令让Oracle自动配置。

  OGG是在块级别进行复制。如下图中,Shardgroup 1中每个分片中的一半数据都会复制到一个分片上,另一个半数据会被复制到另一个分片上。这样,如果有一个分片不可用,那么相关操作就会被分到其他两个分片上去执行。这样就可以降低了某个分片不可用而造成的影响。

  
  使用OGG复制,分片组可以存储分片表中每行数据的多个副本;因此,在分片组中提供高可用性,就像Data Guard一样。在分片组中分片表每行数据的副本数称为复制因子(replication factor),并且是可以配置的。
  要提供灾难恢复,可以将分片组复制到一个或多个机房。分片组的每个副本可以具有不同数量的分片、复制因子、数据库版本和硬件平台。但所有的分片组副本必须具有相同数量的块,因为OGG是在块级别进行复制的。
  以上图为例,Shardgroup 2中的数据和Shardgroup 1一样的,但是它们是在不同的机房,并且两个机房都是支持读写操作,从图中也可以很容易看出复制因子是2,因为每行数据都有两个副本。
由于Shardgroup 2仅包含两个分片且复制因子是2,因此分片将被完全复制,并且每个分片都会存储SDB中的所有数据。这意味着可以在单个分片上执行所有的操作,而不用跨分片操作。但是由于只有两个分片,所以如果有一个分片不可用,那么负载就会转移到另一个分片上,这样另一个分片上的负载就会翻倍。

在创建分片之前,需要满足以下条件:

1)注册调度程序(使用GDSCTL创建分片时)
2)安装OGG并至少添加一个有分片选项的安全部署
3)在每个Oracle Home中,复制客户端wallet用于添加GoldenGate部署,并将其放在$ ORACLE_BASE/admin/ ggshd_wallet /中
4)从GoldenGate安装主目录加载PL / SQL包。https://www.cndba.cn/cndba/dave/article/3761

部署代码示例如下:https://www.cndba.cn/cndba/dave/article/3761

GDSCTL>CREATE SHARDCATALOG -database host00:1521:shardcat -chunks 60 -user 'gsmcatuser/gsmcatuser_password' -repl OGG -sharding system -sdb orasdb
GDSCTL>ADD GSM -gsm gsm1 -listener 1571 –catalog shard-dir1:1521:shardcat -localons 3841
GDSCTL>ADD GSM -gsm gsm2 -listener 1571 –catalog shard-dir1:1521:shardcat -localons 3841
GDSCTL>START GSM -gsm gsm1
GDSCTL>START GSM -gsm gsm2
GDSCTL>CONFIGURE -timeout 900
GDSCTL>ADD REGION -region dc1
GDSCTL>ADD REGION -region dc2
GDSCTL>MODIFY GSM -gsm gsm1 -region dc1
GDSCTL>MODIFY GSM -gsm gsm2 -region dc2
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup1 -region dc1 -repfactor 2
GDSCTL>ADD SHARDGROUP -shardgroup shardgroup2 -region dc2 -repfactor 2
GDSCTL>CREATE SHARD -shardgroup shardgroup1 -destination host01 -credential oracle_cred        
 -netparam /home/oracle/netca_dbhome.rsp -gg_service host01:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams01.tmp
 -dbtemplatefile /home/oracle/sharddb01.dbt
 GDSCTL>CREATE SHARD -shardgroup shardgroup1 -destination host02 -credential oracle_cred      
 -netparam /home/oracle/netca_dbhome.rsp -gg_service host02:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams02.tmp
 -dbtemplatefile /home/oracle/sharddb02.dbt 
GDSCTL>CREATE SHARD -shardgroup shardgroup1 -destination host03 -credential oracle_cred      
 -netparam /home/oracle/netca_dbhome.rsp -gg_service host03:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams03.tmp
 -dbtemplatefile /home/oracle/sharddb03.dbt
 GDSCTL>CREATE SHARD -shardgroup shardgroup2  -destination host04 -credential oracle_cred      
-netparam /home/oracle/netca_dbhome.rsp -gg_service host04:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams04.tmp
 -dbtemplatefile /home/oracle/sharddb04.dbt
 GDSCTL>CREATE SHARD -shardgroup shardgroup2  -destination host05 -credential oracle_cred      
-netparam /home/oracle/netca_dbhome.rsp -gg_service host05:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams05.tmp
 -dbtemplatefile /home/oracle/sharddb05.dbt
GDSCTL>DEPLOY

上面的例子使用CREATE SHARD方式来创建新的分片。 还有一个方法来添加新的分片就是ADD SHARD,是CREATE SHARD的替代方法,而且ADD SHARD可以将已安装好的数据库添加到SDB中,而CREATE SHARD不行。https://www.cndba.cn/cndba/dave/article/3761

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2239
    原创
  • 3
    翻译
  • 547
    转载
  • 186
    评论
  • 访问:6666242次
  • 积分:4249
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ