【12.2新特性】Oracle Sharding分片级别的高可用实现

编辑手记:Oracle Sharding是从12c推出的通过分区技术实现的一种数据库架构,在12.2中这项技术也越来越成熟。release 2中新特性包含:分片的自动部署,智能路由和全生命周期管理等,同时,通过与DG技术的集成,将实现分片级别的高可用。

推荐阅读:

关于Oracle Sharding,你想知道的都在这里

Oracle 12.2新特性掌上手册 - 第四卷 Sharding 的增强

Oracle Sharding与Oracle数据库复制技术(Data Guard)集成,可在碎片级别实现高可用性和灾难恢复

Oracle Sharding与Oracle Data Guard紧密集成。 Data Guard复制维护一个或多个分片(主要)的同步副本(standbys),以实现高可用性和数据保护。Standbys可以在本地或远程部署,并且在使用Oracle Active Data Guard时也可以打开只读访问。

1、关于分片和复制

Oracle Sharding与Oracle Data Guard紧密集成。复制技术为读取提供高可用性,灾难恢复和增强的可扩展性。

分片数据库(SDB)中的复制拓扑使用GDSCTL命令语法声明性地指定。 Oracle Sharding自动部署指定的复制拓扑并启用数据复制。

SDB的可用性不受一个或多个分片的中断或性能影响。 复制技术用于提供单独的分片级高可用性(Oracle Active Data Guard)。 创建SDB时,会自动配置和部署复制。 或者也可以使用Oracle RAC进行碎片级高可用性(由复制补充),以在集群中断的情况下维护分片级数据可用性。 如果出现计划外中断,Oracle Sharding会自动从分片到其副本的数据库连接失败。

2、Oracle Data Guard与SDB集成的实现

Oracle Data Guard复制维护一个或多个分片(主要)的同步副本(standbys),以实现高可用性和数据保护。 Standbys可以在本地或远程部署,并且在使用Oracle Active Data Guard时也可以打开只读访问。

Oracle Data Guard可以用作SDB的复制技术,使用系统管理的或复合的分片方法。

将Oracle Data Guard与系统管理的SDB配合使用

在系统管理和复合分片中,逻辑复制单元是称为分片组的一组分片。在系统管理的分片中,分片包含存储在SDB中的所有数据。数据通过构成分片组的碎片之间的一致哈希进行分片。属于分片组的碎片通常位于同一个数据中心。整个分组可以完全复制到相同或不同数据中心中的一个或多个分组。

下图说明了Data Guard复制如何与系统管理的分片一起使用。在图中的示例中,有一个主分片组,Shardgroup 1和两个备用分片组,Shardgroup 2和Shardgroup 3. Shardgroup 1由Data Guard主数据库(分片1-3)组成。 Shardgroup 2由位于同一数据中心并配置为同步复制的本地备用数据库(分片4-6)组成。 Shardgroup 3由位于不同数据中心的远程Standbys(分片7-9)组成,并配置为异步复制。在此配置中启用Oracle Active Data Guard,因此每个待机都是只读的。

shardgroup以逻辑复制单元呈现,其实现细节对于用户是透明的。 使用Data Guard,在分片(数据库)级别进行复制。 上图中的SDB由三组复制的分片组成:{1,4,7},{2,5,8}和{3,6,9}。 每组复制的分片都作为启用快速启动故障切换(FSFO)的Data Guard Broker配置进行管理。

要部署复制,需要指定shardgroups(region,role等)的属性,并将碎片添加进去。 Oracle Sharding自动配置Data Guard并为每组复制的分片启动FSFO观察器。 它还提供只读工作负载,基于角色的全局服务和复制滞后以及基于位置的路由的负载平衡。

运行以下GDSCTL命令来部署上图所示的示例配置。

使用Oracle Data Guard与复合SDB

在复合分片中,SDB由多个分片组成。 但是,每个shardspace,而不是复制的碎片,包含复制的碎片组。

运行以下GDSCTL命令部署上图所示的示例配置。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

优化Webpack构建性能的几点建议

1443
来自专栏程序猿成长计划

RabbitMQ发布订阅实战-实现延时重试队列

RabbitMQ是一款使用Erlang开发的开源消息队列。本文假设读者对RabbitMQ是什么已经有了基本的了解,如果你还不知道它是什么以及可以用来做什么,建议...

5564
来自专栏张戈的专栏

MySQL主从、字典死锁、连接数的Python监控脚本

最近,公司的系统在天津增加了不少异地容灾,其中就有异地双主 MySQL。由于容灾环境一般只会在出现较大的网络故障或故障演习的时候用到,所以,容灾系统的可用性就只...

3407
来自专栏会跳舞的机器人

ZooKeeper典型应用场景一览(转)

ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得Z...

531
来自专栏影子

springMVC项目国际化(i18n)实现方法

3239
来自专栏携程技术中心

RN沙龙 | 携程是如何做React Native优化的

赵辛贵,携程无线开发高级技术经理,目前主要负责React Native框架在携程内部的使用推广和性能优化 React Native(下文简称RN)开源已经一年...

4189
来自专栏北京马哥教育

Python黑科技 | 一步一步教你如何搭建自己的视频聚合站

? 前言 作为一个炉石传说玩家,经常有事没事开着直播网站看看大神们的精彩表演。不过因为各个平台互相挖人的关系,导致关注的一些主播分散到了各个直播平台,来回切...

3417
来自专栏架构师小秘圈

为什么分布式一定要有一致性方案?

1402
来自专栏大魏分享(微信公众号:david-share)

大白话说前端应用 | 从开发角度看应用架构10

在正式做架构分析之前,我们需要明确两个概念:web server和web container的区别。

1103
来自专栏专知

AI知识搜索利器:基于ElasticSearch构建专知实时高性能搜索系统

【导读】今天向大家介绍下ElasticSearch在专知搜索中的使用。ElasticSearch是一个基于Lucene的搜索服务器,是当前流行的企业级搜索引擎。...

2934

扫描关注云+社区