何剑敏 Oracle ACS华南区售后团队,首席技术工程师

曾供职于中国联通信息计费部、卓望数码,系统支撑部首席DBA,负责中国移动全网梦网业务和移动应用商城数据库维护。后供职于IBM,负责米其林项目和澳洲电信(Telstra)项目数据库管理。现供职于Oracle ACS华南区售后团队,首席技术工程师。多年从事第一线的数据库运维工作,有丰富项目经验、维护经验和调优经验,专注于数据库的整体运维。

编辑说明:感谢何剑敏撰写了关于Sharding的相关文章,并授权我们分享给大家。根据我们的理解对他的文章顺序做了调整整合,以便于大家理解阅读。

1 Oracle 12.2的重磅特性及发布时间

2016年2月,Oracle出了12.2的beta2版本,并且在4月更新了相关文档,如Concepts,Administrator’s Guide,Global Data Services Concepts and Administration Guide等等。这个版本的文档,比之前2015年10月底文档要好很多,许多概念,演示demo,操作步骤都得到了很好的说明。据信Oracle 12.2将于6.1正式发布。在12.2中Sharding特性受到了广泛的关注,本文着重讲述这一特性的使用和构建。

2 三言两语说透Oracle的Sharding技术

爱因斯坦说过,如果你不能用简单的语言解释某个东西,你就不是真正的理解这个东西。通过这几天的实验和学习,我尽量用简单的语言来给大家描述下什么是Oracle的sharding。

Sharding,中文名叫数据分片,是对数据进行横向扩展的一种方式。数据量增加,我可以通过加一台机器,来扩展其容纳能力和处理能力。

Sharding其实需要解决三个问题:一、数据的路由,二、数据的分片,三、分片的元数据信息保存。

1.数据路由是数据库告诉应用程序,你让我查的数据目前在哪个分片上,这条路怎么走过去。
2.数据分片就是实际数据的存放地点,往往每个分片就是一台单独的服务器(含存储)。
3.由于分片的数据实际是被切割放在不同的机器上,那么需要有个集中的地点存放数据分片的信息,即分片元数据的信息。

应用问路由怎么走,路由去查询元数据得知需要的数据在哪个分片上,最终应用访问到该分片上。

最著名的sharding database就是mongoDB了。mongoDB的sharding功能的架构也是为了解决上面的三个问题,MongoDB有路由服务器(Router)解决路由问题,分片服务器(Shard)存储实际数据(可能还有副本和仲裁),以及配置服务器(Config Server)存放分片元数据。

》》延伸阅读:数据库高可用和分区解决方案-MongoDB 篇

那么,对应在Oracle12.2的 Sharding DB 上,就是GDS框架(GSM,shard directors),shard node,和shardcat数据库。

所以,到这里你就可以比较清楚的了解了oracle 12.2的sharding功能其实就是3个模块。顺便说一下,MonogoDB支持多个副本和仲裁,oracle的adg也同样支持一主多备,由FSFO进行管理。

》》关注Oracle公众号回复"Shard"可以获得: Oracle 12.2 Sharded Database Management.pdf

3 小荷谈Sharding体验

下面,再谈一下我个人对sharding架构的一些看法。

  • Shardcat是非常重要的一个模块,上面不仅仅有分片的元数据信息,还有duplicated table的master table信息,另外,当进行cross shard query的时候,他还起着coordinator database的作用。所以建议对这个部分搭建RAC+adg架构,避免shardcat的单点故障。

  • shard node,单个shard node的失效,将导致整个表的不可用。所以我们也要对shard node建立高可用的副本,这里可以用ADG或者OGG的技术。

  • 既然做sharding,又要在做HA,那么就变成了堆机器,堆存储的方式了。我们假设在一个10个shard node的环境,需要多少台机器:一个shardcate,做rac+adg,那么最少就是3台;10个shard node,如果都有adg,那么最少就是20台。那么当前这个环境,就至少要23台机器了。

  • Sharding架构极其考验对应用的熟悉程度,需要配合应用进行合理的分区和分片。另外,如sharding key必须建索引,sharding的方式可以有一致性hash,让数据均匀分布,也还是可以是range或者list分区,或者hash-range,hash-list的子分区。分片和分区方式需要结合业务,有些场景需要相关数据都在一个分区,避免cross shard join,有些场景需要均匀分片,禁止集中分片,导致热块数据都在一个分片上(如序列增长,做range分区,热点数据将会都在一个分片上)。

  • 事实表和维度表,似乎可以很好的利用sharding功能。维度表做duplicated table,而事实表做sharded table。

4 从安装部署到体验

(一)安装介质:

1. 你需要12.2的database的安装介质(两个zip压缩包)来安装db软件,用于shardcat数据库,和shard node主机上的数据库。
2. 你还需要12.2的gsm安装介质(一个压缩包)来安装GDS框架和gsm服务。这是安装在shardcat主机上的。
3. 你还需要12.2.的client安装介质(一个压缩包)来装scheagent,这是安装在shard node主机上的。安装schagent是为了在shardcat主机上发起命令,在远程的shard node上,通过agent调起来netca和dbca来安装监听和数据库。另外,如果shard node有active dataguard,agent也会自动帮你配好dataguard,配好broker和FSFO。

(二)HIGH LEVEL安装步骤:

1.Oracle Sharding Prerequisites
2.Setting Up the Oracle Sharding Host Environment Scripts
3.Installing Oracle Database
4.Installing the Shard Director Software
5.Creating the Shard Catalog Database
6.Setting Up the Oracle Sharding Management and Routing Tier
7.Deploying and Managing a System-Managed SDB

(三)详细安装步骤:

1.Oracle Sharding Prerequisites

12.2企业版 non-cdb
使用文件系统而非ASM (12.2 Beta要求,正式发行后,可能会改)
主机hosts文件写上本机和各个shard node的IP解析
机器必须全新,不能残留之前有安装过oracle的信息。

2.Setting Up the Oracle Sharding Host Environment Scripts

目的是因为shardcat和gds都安装在一个主机上,同一个oracle用户,不同ORACLE_HOME,所以建立环境变量的脚本,会比较容易在database环境和gsm环境之间切换。
admin guide上是用shardcat.sh,shard-director1.sh脚本,但是我的可能更简单实用,直接定义成alias。(这种方法其实是跟ORACLE BASE学的。老DBA应该都听说过这个网站。)
##修改环境变量,在环境变量中设置2个alias别名

3.Installing Oracle Database

安装db软件,解开2个压缩包,加载一下上面建好的db_env环境变量,开始跑runInstaller,选择software only,没啥好说的。注意ORACLE_HOME的路径和环境变量中定义的DB的ORACLE_HOME一致。
在shardcat主机和shard node主机,都需要安装好db软件。

4.Installing the Shard Director Software

安装gds框架和gsm服务,解开gsm的压缩包,加载一下上面建好的gsm_env环境变量开始跑runInstaller,注意选择不同与DB的ORACLE_HOME,注意ORACLE_HOME的路径和环境变量中定义的gsm的ORACLE_HOME一致。
本文中gds安装在和shardcat同一个主机上。即shardcat和shard Director在同一主机。(其实,如果有需要,也可以不同主机的)

4.b. Installer schagent in all shard node(admin guide文档没写这步骤,本人免费赠送)

选择client安装包,解压缩后,运行runInstaller,在每个shard node上建立agent

5.Creating the Shard Catalog Database

运行dbca开始建立数据库实例,这个实例是放分片数据的元数据的。我们把这个实例名叫shardcat。
安装好后,再建立listener。以便可以连接这个数据库。

6.Setting Up the Oracle Sharding Management and Routing Tier

7.Deploying and Managing a System-Managed SDB
我们开始部署,以最简单的System-Managed SDB为例。
另外,admin guide中介绍的是4台主机做shard node,其中每2台互为dataguard主备。我们这边为了节约空间和资源,不搞dataguard了,只建立primary库。因此只要2台主机做shard node。

此时,就开始部署shard了。在shard node上的agent会自动的调用netca和dbca,创建listener和database,2个shard node的操作是并行进行的。(如果是有datauard,那么是先建立一对主备,再建立另一对主备。)你可以在分别是两个shard node上ps -ef|grep ora_ 看到已经有sh1和sh2的实例了。

等deploy完,我们可以检查一下shard的情况了:

建立service:


(四)建立应用用户,利用应用用户建立sharded table和duplicated table:


利用应用用户登录,创建sharded table和duplicated table

至此,一个Oracle Sharding Database环境就搭建完毕了。欢迎大家体验这一新技术带来的数据库扩展性。原文链接指向原作者网站地址。

文章转自数据和云公众号, 原文链接

从原理到实践:Oracle 12.2 Sharding技术揭秘相关推荐

  1. 主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到: 21 原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principa

    主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到:21 原文出处: 中科春哥    一.PCA简介 1. 相关背景 主成分分析(Principal Co ...

  2. oracle 12.2 启用分片,关于Oracle Sharding,你想知道的都在这里

    编辑手记:随着Oracle12.2的发布,Sharding技术也逐渐变得越来越强大,关于Sharding,你所关心的问题的答案,可能都在这里. 注:本文来自Oracle FAQ文档翻译 相关阅读:什么 ...

  3. 图解Spark原理及实践----大数据技术栈12

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Spark! 来自:ITPUB Spark 已经成为广告.报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到 ...

  4. 赠书5本包邮:数据思维实践、Cloud Native分布式架构原理与实践

    为了回馈我们默默关注的粉丝朋友们,数据和云(ID:OraNews)联合北京大学出版社为大家推出了此次活动,这次推荐两本书,<Cloud Native分布式架构原理与实践>.<数据思维 ...

  5. 《新一代SDN——VMware NSX 网络原理与实践》——2.4 与VMware NSX相关的认证

    本节书摘来自异步社区<新一代SDN--VMware NSX 网络原理与实践>一书中的第2章,第2.4节,作者:范恂毅 , 张晓和著,更多章节内容可以访问云栖社区"异步社区&quo ...

  6. 蚂蚁京东新浪10位架构师424页佳作深入分布式缓存从原理到实践

    前言 最近刷到了一句耐人寻味的话,"解决雪崩问题的最好办法是不发生雪崩". 不论是在硅谷互联网公司里还是在国内的互联网平台上,曾多次遇到过海量规模的交易瞬间吞噬平台的悲惨故事. 核 ...

  7. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  8. 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

    学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一 ...

  9. 深入理解FFM原理与实践

    原文:http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html 深入理解FFM原理与实践 del2 ...

最新文章

  1. linux更改文件夹权限_Linux 一些重点知识,整理的很全面,有必要收藏
  2. Android系统中设置TextView等的行间距
  3. python写管理系统-基于Python实现用户管理系统
  4. 想要一篇高分SCI,这些临床统计的诀窍你要知道
  5. javascrip中setTimeout和setInterval
  6. mac中安装使用podman,替换docker
  7. oracle数据库之间数据同步
  8. Python爬取当当网图书数据
  9. 奥克兰计算机科学专业世界排名,2020年新西兰计算机科学专业大学排名
  10. HRT:使用Huge Pages进行低延迟优化
  11. 给大家推荐一首好听的流行音乐
  12. 格式化D盘显示有一个应用程序正在运行,无法格式化
  13. 华为 10G PON 5800 三方光猫兼容 案例
  14. 微信小程序初体验(上)- 腾讯ISUX社交用户体验设计成员出品
  15. 另类的唯品会和得物比价
  16. VS2022打开项目之后提示:找不到 .NETFramework,Version=v4.0 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。
  17. 个人客户网上银行开户
  18. 数据结构-串、数组、广义表
  19. 织梦(dedecms)仿站教程第一讲-准备工作
  20. DataPipeline携手世界五百强地产企业,提升数据流动性释放新动能

热门文章

  1. 如何识别图片中的表格数据(opencv 和pyteressact)
  2. 轻轻松松学习SpringBoot2:第九篇: Spring Boot 日志
  3. [解决]Yosemite 中 Patch 破解程序不能用的问题
  4. 专访 | 涨姿势了!数据分析在航空业可以这么玩
  5. 如何下载高德电子地图
  6. 信息学奥赛一本通 1343:【例4-2】牛的旅行 | 洛谷 P1522 [USACO2.4] 牛的旅行 Cow Tours
  7. Android M系统无响应一直卡住黑屏
  8. WordPress收费下载资源插件 vip会员功能/收费下载/收费查看/联盟推广+前端用户中心 支付宝/财付通/贝宝/网银/微信[更新至v9.0.2]
  9. TensorFlow中张量的约减(Reduce)方向
  10. python实现分数的加减乘除