ITPub博客

首页 > > > Oracle分片级高可用性

Oracle分片级高可用性

作者:zuike2000 时间:2020-04-16 19:10:57 0 删除 编辑

Oracle分片与Oracle数据库复制技术集成在一起,可在分片级别实现高可用性和灾难恢复。
以下主题描述了如何使用Oracle的复制技术来使分片数据库高度可用:


7.1关于分片和复制
Oracle Sharding与Oracle复制和灾难恢复技术Oracle Data Guard和Oracle GoldenGate紧密集成。
复制为读取提供了高可用性,灾难恢复和其他可伸缩性。复制单元可以是一个分片,一个分片的一部分或一组分片。
使用GDSCTL命令语法声明性地指定分片数据库中的复制拓扑。您可以选择两种技术之一(Oracle Data Guard或Oracle GoldenGate)来复制数据。Oracle Sharding会自动部署指定的复制拓扑并启用数据复制。
分片数据库的可用性不受一个或多个分片的中断或变慢的影响。复制用于提供各个分片级的高可用性(Oracle Active Data Guard或Oracle GoldenGate)。创建分片数据库时,将自动配置和部署复制。(可选)您可以将Oracle RAC用于分片级高可用性,并辅以复制,以在发生群集故障时维护分片级数据可用性。如果计划外停机,Oracle分片会自动将数据库连接从分片故障转移到其副本。

父主题: 碎片级别高可用性
7.1.1何时选择Oracle GoldenGate以获得碎片高可用性
什么时候应将Oracle GoldenGate用作Oracle Sharding的高可用性解决方案?
在以下情况下,Oracle GoldenGate应该是您首选的高可用性解决方案:

  • 所有分片都是可读写的。使用Active Data Guard,DR /备份分片是只读的。
  • 部署分片时更具灵活性。每个分片可以位于不同的操作系统或不同的数据库版本上。
  • 甚至在单个分片组中,也有多个数据的可更新副本。例如,对于Oracle GoldenGate,使用4的复制因子,您可以拥有4个可更新数据的读写副本。


也可以看看:
《使用Oracle GoldenGate微服务架构》中的融合中间件中的Oracle GoldenGate Sharding的使用,以获取有关结合使用Oracle GoldenGate和Oracle Sharding的更多信息。
父主题: 关于分片和复制
7.2将Oracle Data Guard与分片数据库一起使用
Oracle Data Guard复制维护一个(或多个)碎片(主)的一个或多个同步副本(备用),以实现高可用性和数据保护。备用数据库可以在本地或远程部署,并且在使用Oracle Active Data Guard时也可以打开以进行只读访问。
使用系统管理的,用户定义的或分片的分割方法,Oracle Data Guard可以用作分片数据库的复制技术。
将Oracle Data Guard与系统管理的分片数据库一起使用
在系统管理的复合分片中,复制的逻辑单元是称为分片组的一组分片。在系统管理的分片中,一个分片组包含存储在分片数据库中的所有数据。数据通过组成该碎片组的各个碎片之间的一致性哈希进行碎片处理。属于一个分片组的分片通常位于同一数据中心中。整个分片组可以完全复制到相同或不同数据中心中的一个或多个分片组。
下图说明了如何将Data Guard复制与系统管理的分片一起使用。在该图中的示例中,有一个主分片组Shardgroup 1,以及两个备用分片组Shardgroup 2和Shardgroup3。分片1由Data Guard主数据库(分片1-3)组成。碎片组2由本地备用数据库(碎片4-6)组成,这些数据库位于同一数据中心中并配置用于同步复制。碎片组3由位于不同数据中心并配置用于异步复制的远程备用数据库(碎片7-9)组成。在此配置中启用了Oracle Active Data Guard,因此每个备用数据库都是只读打开的。
图7-1使用Data Guard复制的系统管理的分片


“图7-1具有Data Guard复制的系统管理的分片”的描述
shardgroup作为复制的逻辑单元的概念向用户隐藏了复制的实现细节。使用Data Guard,复制在分片(数据库)级别完成。上图中的分片数据库由三组复制的分片组成:{1,4,7},{2,5,8}和{3,6,9}。每组复制的碎片都作为启用了快速启动故障转移(FSFO)的Data Guard Broker配置进行管理。
要部署复制,请指定分片组的属性(区域,角色等),然后向其添加分片。Oracle分片会自动配置Data Guard,并为每组复制的分片启动FSFO观察器。它还提供了只读工作负载,基于角色的全局服务和复制滞后以及基于位置的路由的负载平衡。
运行以下GDSCTL命令以部署上图所示的示例配置。
CREATE SHARDCATALOG –database host00:1521:shardcat –region dc1,dc2 ADD GSM -gsm gsm1 -listener 1571 –catalog host00:1521:shardcat –region dc1 ADD GSM -gsm gsm2 -listener 1571 –catalog host00:1521:shardcat –region dc2 START GSM -gsm gsm1 START GSM -gsm gsm2 ADD SHARDGROUP -shardgroup shardgroup1 -region dc1 -deploy_as primary ADD SHARDGROUP -shardgroup shardgroup2 -region dc1 -deploy_as active_standby ADD SHARDGROUP -shardgroup shardgroup3 -region dc2 -deploy_as active_standby CREATE SHARD -shardgroup shardgroup1 -destination host01 -credential oracle_cred CREATE SHARD -shardgroup shardgroup1 -destination host02 -credential oracle_cred CREATE SHARD -shardgroup shardgroup1 -destination host03 -credential oracle_cred ... CREATE SHARD -shardgroup shardgroup3 -destination host09 -credential oracle_cred DEPLOY
将Oracle Data Guard与用户定义的分片数据库一起使用
使用用户定义的分片,逻辑(和物理)复制单元就是一个分片。碎片不会合并到碎片组中。每个分片及其副本组成一个分片空间,该空间对应于单个Data Guard Broker配置。可以为每个分片空间分别配置复制。碎片空间可以具有不同数量的备用数据库,这些备用数据库可以位于不同的数据中心中。下图显示了使用Data Guard复制进行用户定义的分片的示例。
图7-2使用Data Guard复制的用户定义分片


“图7-2使用Data Guard复制的用户定义分片”的描述
运行以下GDSCTL命令,以使用上图所示的Data Guard复制部署示例用户定义的分片数据库。
CREATE SHARDCATALOG -sharding user –database host00:1521:cat –region dc1,dc2,dc3 ADD GSM -gsm gsm1 -listener 1571 –catalog host00:1521:cat –region dc1 ADD GSM -gsm gsm2 -listener 1571 –catalog host00:1521:cat –region dc2 ADD GSM -gsm gsm3 -listener 1571 –catalog host00:1521:cat –region dc3 START GSM -gsm gsm1 START GSM -gsm gsm2 START GSM -gsm gsm3 ADD SHARDSPACE -shardspace shardspace_a ADD SHARDSPACE -shardspace shardspace_b ADD SHARDSPACE -shardspace shardspace_c CREATE SHARD -shardspace shardspace_a –region dc1 -deploy_as primary -destination host01 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp CREATE SHARD -shardspace shardspace_a –region dc1 -deploy_as standby -destination host04 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp CREATE SHARD -shardspace shardspace_a –region dc2 -deploy_as standby -destination host06 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp CREATE SHARD -shardspace shardspace_a –region dc3 -deploy_as standby -destination host08 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp CREATE SHARD -shardspace shardspace_b –region dc1 -deploy_as primary -destination host08 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rs ... CREATE SHARD -shardspace shardspace_c –region dc3 -deploy_as standby -destination host10 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp DEPLOY
将Oracle Data Guard与复合分片数据库一起使用
在复合分片中,类似于用户定义的分片,分片的数据库由多个分片空间组成。但是,每个分片空间(而不是复制的分片)都包含复制的分片组。
图7-3使用Data Guard复制的复合分片


“图7-3具有Data Guard复制的复合分片”的描述
运行以下GDSCTL命令以部署上图中所示的示例配置。
CREATE SHARDCATALOG -sharding composite –database host00:1521:cat –region dc1,dc2,dc3 ADD GSM -gsm gsm1 -listener 1571 –catalog host00:1521:cat –region dc1 ADD GSM -gsm gsm2 -listener 1571 –catalog host00:1521:cat –region dc2 ADD GSM -gsm gsm3 -listener 1571 –catalog host00:1521:cat –region dc3 START GSM -gsm gsm1 START GSM -gsm gsm2 START GSM -gsm gsm3 ADD SHARDSPACE -shardspace shardspace_a ADD SHARDSPACE -shardspace shardspace_b ADD SHARDGROUP -shardgroup shardgroup_a1 –shardspace shardspace_a -region dc1 -deploy_as primary ADD SHARDGROUP -shardgroup shardgroup_a2 –shardspace shardspace_a -region dc1 -deploy_as active_standby ADD SHARDGROUP -shardgroup shardgroup_a3 –shardspace shardspace_a -region dc3 -deploy_as active_standby ADD SHARDGROUP -shardgroup shardgroup_b1 –shardspace shardspace_b -region dc1 -deploy_as primary ADD SHARDGROUP -shardgroup shardgroup_b2 –shardspace shardspace_b -region dc1 -deploy_as active_standby ADD SHARDGROUP -shardgroup shardgroup_b3 –shardspace shardspace_b -region dc2 -deploy_as active_standby CREATE SHARD -shardgroup shardgroup_a1 -destination host01 –credential orcl_cred ... CREATE SHARD -shardgroup shardgroup_b3 -destination host09 -credential orcl_cred DEPLOY
父主题: 碎片级别高可用性
7.3将Oracle GoldenGate与分片数据库一起使用
Oracle GoldenGate用于所有分片都可写的细粒度的主动-主动复制,每个分片可以部分复制到分片组内的其他分片。
在Oracle GoldenGate中,复制是在块级别处理的。例如,在下图中的Shardgroup 1中,存储在每个分片中的数据的一半被复制到一个分片,另一半被复制到另一个分片。如果任何分片变得不可用,则其工作量将在分片组中的其他两个分片之间分配。多个故障转移目标减轻了分片故障的影响,因为没有单个分片必须处理发生故障的分片中的所有工作负载。
图7-4具有Golden Gate复制的系统管理的分片


“图7-4具有Golden Gate复制的系统管理的分片”的描述
使用Oracle GoldenGate复制,一个分片组可以在一个分片表中包含每一行的多个副本。因此,在分片组内提供了高可用性,并且不需要像Data Guard复制那样具有分片组的本地副本。在分片组中每行被复制的次数称为其复制因子,并且是可配置的参数。
为了提供灾难恢复,可以将一个碎片组复制到一个或多个数据中心。碎片组的每个副本可以具有不同数量的碎片,复制因子,数据库版本和硬件平台。但是,所有分片组副本必须具有相同数量的块,因为复制是在块级别完成的。
上图中的Shardgroup 2包含与Shardgroup 1相同的数据,但位于不同的数据中心。两个数据中心中的分片都是可写的。默认复制因子2用于两个分片组。
请注意,由于分片组2仅包含两个分片,并且复制因子为2,因此这些分片将被完全复制,并且每个分片都包含存储在分片数据库中的所有数据。这意味着路由到这些分片的任何查询都可以执行,而无需遍历分片。此分片组中只有一个故障转移目标。如果一个分片掉落,则另一个分片上的负载会加倍。
Oracle分片旨在最大程度地减少对不同分片对同一行执行的冲突更新的数量。这是通过为每个哈希值范围指定一个主块并将大部分对相应数据的请求路由到该块而实现的。
有时,由于状态转换(例如块移动或拆分或碎片上升或下降)而无法避免更新冲突。用户还可以有意地允许冲突,以最小化事务等待时间。对于此类情况,Oracle GoldenGate提供了自动冲突检测和解决方案,该冲突和解决方案可以处理各种冲突,包括插入-删除冲突。
在创建任何分片之前,需要满足一些先决条件:

  • 向调度程序注册(使用GDSCTL时create shard)
  • 准备站点安全性钱包或客户端和服务器证书。
  • 安装Oracle GoldenGate并添加至少一个带分片选项的安全部署,然后启动GoldenGate服务和服务器。
  • 在每个Oracle主目录中,复制用于添加GoldenGate部署的客户端钱包的副本,并将其放在$ ORACLE_BASE / admin / ggshd_wallet /中。
  • 从GoldenGate安装主页加载PL / SQL软件包。如果要使用GDSCTL创建分片CREATE SHARD,则此步骤仅适用于分片目录。如果您使用的是GDSCTL ADD SHARD,则它将应用于分片目录和所有分片。

运行以下GDSCTL命令以部署上图所示的示例配置。
CREATE SHARDCATALOG -database host00:1521:shardcat -chunks 60 -user 'gsmcatuser/gsmcatuser_password' -repl OGG -sharding system -sdb orasdb ADD GSM -gsm gsm1 -listener 1571 –catalog shard-dir1:1521:shardcat -localons 3841 ADD GSM -gsm gsm2 -listener 1571 –catalog shard-dir1:1521:shardcat -localons 3841 START GSM -gsm gsm1 START GSM -gsm gsm2 CONFIGURE -timeout 900 ADD REGION -region dc1 ADD REGION -region dc2 MODIFY GSM -gsm gsm1 -region dc1 MODIFY GSM -gsm gsm2 -region dc2 ADD SHARDGROUP -shardgroup shardgroup1 -region dc1 -repfactor 2 ADD SHARDGROUP -shardgroup shardgroup2 -region dc2 -repfactor 2 CREATE SHARD -shardgroup shardgroup1 -destination host01 -credential oracle_cred -netparam /home/oracle/netca_dbhome.rsp -gg_service host01:9900/deployment_name -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams01.tmp -dbtemplatefile /home/oracle/sharddb01.dbt 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 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 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 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 DEPLOY
请注意,以上示例用于CREATE SHARD在部署期间创建新的分片。ADD SHARD是的替代方法CREATE SHARD,并且该ADD SHARD方法假定存在准备将其转换为数据库分片的纯净板岩数据库实例。
注意:
与使用Data Guard或Active Data Guard进行分片复制不同,您不能手动部署Oracle GoldenGate,必须使用以下DEPLOY命令完成。
Oracle GoldenGate不支持将PDB作为分片。
也可以看看:
《使用Oracle GoldenGate微服务架构》中的融合中间件中的Oracle GoldenGate Sharding的使用,以获取有关结合使用Oracle GoldenGate和Oracle Sharding的更多信息

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    404
  • 访问量
    2070