原文:http://www.talkwithtrend.com/Article/178339

数据库建设过程中,高可用是每一个企业数据中心数据库建设过程中至关重要的一个关注点,直接关系到业务连续性和稳定性。要想将这个工作做好,我们必须从其底层原理、机制、架构等方面进行深入了解,深入分析,深入对比才能知道我们应该如何去实践。下面的几个关键点,不仅仅是每一个DBA应该琢磨的事情,同时也是搞企业IT架构规划和建设的人必须了解和知道的事情。

下面总结了一些Oracle与DB2在数据库高可用技术上的相同与差异的一些典型问题和困惑,帮助大家更好地去理解这两者之间的差异。

具体如下:

  1. 数据库对象配置的差异。
  2. 数据库高可用的配置。
  3. 数据库存储机制的差异。
  4. 数据库容灾技术的差异。
  5. 数据库锁机制的差异。

一、关于数据库对象概念等方面的差异?

观点一、
DB2类似管理容器的概念,是一个实例下可以有多个数据库,各库互相独立。Oracle是一个实例只能运行一个数据库,一个数据库在群集环境下可运行于多个实例下,类似运行机的概念。

观点二、
DB2的instance和database是一对多的关系,即一个实例下面可以有多个数据库;ORACLE的instance和database是一对一的关系。

二、关于数据库仲裁机制及原理差异?

ORACLE仲裁算法:

有两个非常重要的规则:1. 保障隔离后的集群子集中节点数目最多的子集存活。2. 当隔离后的集群子集获得的仲裁票数相等时,保障实例号小者存活。

mysql galera 的仲裁机制:

当集群出现故障的时候,galera cluster会启动特别的仲裁算法来选举一个节点作为主节点,集群里成员的数量决定了quorum仲裁的投票数(最好是单数),当一个节点出现故障不再属于集群的时候,galera就会启动一次仲裁选举。默认设置是5秒。galera有独立的进程叫做garbd来做仲裁者Arbitrator
galera仲裁者是集群的一员,参与投票,但不真正参与复制。
galera仲裁者的设立出于以下两个目的:
1、偶数节点时,仲裁者作为一个节点使集群成为奇数,从而避免脑裂
2、它可以请求一个连续的应用状态快照,可用来做备份
尽管仲裁者不存数据,它必须能够流经所有的复制流,所以把仲裁者放在一个和其他节点网络连接差的网络环境里会导致整个cluster的性能变差。仲裁者倒了并不会影响cluster的操作,可以在任何时间挂一个新的节点上去

db2 purescale的仲裁机制:

采用的是NODE QUORUM + TieBreaker的方式进行仲裁,对于集群节点<=2的情况下,宕掉一个节点,只要仲裁盘状态正常也是可以正常工作的。

三、如何看待各个关系数据库对存储利用的原理和机制?

观点一(oracle)、
ASM有自动条带化和镜像的能力,减轻管理负担,而且存储的操作不必每次再和系统管理员约时间创建lv了!性能没觉得比裸设备好太多,主要是可用性以及和集群的兼容性。

观点二(db2)、
1.文件系统的话在aix上是基于jfs或jfs2来管理的,性能受到文件系统本身的块化结构所限制。2.裸设备影射的话就交由存储来管理,性能主要由存储缓存和通讯接口比如说光纤接口,交换机,还有服务器接口限制.还有一个非常重要的地方就是oracle ASM的failure group机制做的非常好,保障了灵活的高可用机制。db2结合GPFS也是一个非常好的解决方案,但是GPFS毕竟是文件系统映射之后提供给db2的容器,性能上还是不如ASM直接。个人理解。

观点三(oracle)、
Asm实现了的主机层面文件系统,裸设备等存储资源的自动管理和优化工作,降低了dba对lvm的管理和性能调优的成本。直接的lvm管理就是需要dba定制化的对fs,lv,VG等对象的设计和对最底层存储的磁盘阵列的设计。

四、数据库容灾中的数据复制原理?

oracle:
oracle的dataguard同步方式有两种,一种是同步,一种异步。下面先来说下DG的原理:
当用户在主库提交数据的时候,会在sga的redo缓冲区中首先记录redo信息,在提及操作的时候lgwr会将redo数据写入redo数据文件中,那么这个时候lns进程会实时的将redo数据从主库的redo缓冲区传送到备库,在备库使用rfs接受数据,传入standby logfile中,进而应用redo数据(sql apply)。在应用完成后rfs将信息返回主库进程,告知该redo条目已经在备库应用完毕,lgwr收到lns的确认消息,从而提示提交成功。
在最高可用性中,如果主库收不到备库应用的确认消息,那么会通过net_timeout值超时,继续完成本次操作,那么lns进程将不会在获得sga中的重做数据,只有当下次日志switch的时候才主动去尝试获得lns数据,如果期间还是没有和备库完成通信,当超过net_timeout参数的时候会继续停止,主机事务也继续完成,但当存在于最大保护模式下,那么必须等到备库应用redo的确认消息,那么就会停止数据库的运行操作。

db2:
非purescale环境的DB2 HADR有四种复制模式SYNC,NEARSYNC,ASYNC,SUPERSYNC; oracle支持三个模式最高性能,最高保护,最高可用性,可以归纳为两种模式SYNC,ASYNC,我觉得DB2在这一块划分的更细些。两种数据库的复制原理来讲都是基于capture log--->TCP传输---->REDO log这样一个过程。
最佳参照文章:
https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1010baosf/

五、关于数据库锁机制?

观点一、
Oracle是通过SCN实现多版本并发控制,并且是基于页面粒度。
Db2,旧的版本似乎是有读一致性锁存在,而且是靠Locklist来实现锁的管理。后期版本似乎是有MVCC的。
Oracle:
1 写redo。
2 写undo。
3 修改数据。

这个时候,读请求实际是可以从undo中读取历史版本的。

观点二、
ORACLE的并发机制使用的是不同类型的锁来控制.
有数据方面的锁比如TM,TX
也有内存方面的锁 比如 LATCH,MUTEX,LOCK
另外TM,TX不是真实的锁, 里面还有个叫锁模式的才是真的锁,NULL,X,S
TM,TX及其他的是排队机制的结构体.
不过通俗地,大家都把TM,TX都叫成锁了.我就不在纠正了.
因此ORACLE锁不是负担,没有相应的管理成本! 在这一点上MS SQLSERVER不如ORACLE

民生银行牛总的文章引用:
https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512niuxzh/

(转)Oracle与DB2在数据库高可用技术上的相同与差异探讨的更多相关文章

  1. 转://Oracle 高可用技术与云基础架构

    众所周知Oracle云基础架构已经在越来越多的行业里应用.大家了解云基础架构是如何演进的嘛?可能有人会说Oracle高可用技术是组成云架构的基础,那它们的关系是怎么样的?大家又了解Oracle高可用技 ...

  2. MySQL MGR+ Consul之数据库高可用方案

    背景说明:     基于目前存在很多MySQL数据库单点故障,传统的MHA,PXC等方案用VIP或者DNS切换的方式可以实现.基于数据库的数据强一致性考虑,采用MGR集群,采用consul服务注册发现 ...

  3. 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进

    本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...

  4. 基于Consul的数据库高可用架构【转】

    几个月没有更新博客了,已经长草了,特意来除草.本次主要分享如何利用consul来实现redis以及mysql的高可用.以前的公司mysql是单机单实例,高可用MHA加vip就能搞定,新公司mysql是 ...

  5. Centos7 Mysql 双机热备实现数据库高可用

    mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器. 双机热备的条件是双机mysql版本必须一致. 服务器分 ...

  6. (转)mysql数据库高可用高扩展性架构方案实施

    http://shanhu.blog.51cto.com/1293405/1212605-----mysql数据库高可用高扩展性架构方案实施

  7. Mysql双机热备实现数据库高可用

    mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器. 双机热备的条件是双机mysql版本必须一致. 服务器分 ...

  8. 巨杉Tech|SequoiaDB 巨杉数据库高可用容灾测试

    数据库的高可用是指最大程度地为用户提供服务,避免服务器宕机等故障带来的服务中断.数据库的高可用性不仅仅体现在数据库能否持续提供服务,而且也体现在能否保证数据的一致性. SequoiaDB 巨杉数据库作 ...

  9. 分享MYSQL中的各种高可用技术(源自姜承尧大牛)

    分享MYSQL中的各种高可用技术(源自姜承尧大牛) 图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各 ...

随机推荐

  1. UVa 1395 Slim Span (最小生成树)

    题意:给定n个结点的图,求最大边的权值减去最小边的权值最小的生成树. 析:这个和最小生成树差不多,从小到大枚举左端点,对于每一个左端点,再枚举右端点,不断更新最小值.挺简单的一个题. #include ...

  2. kalilinux、parrotsecos没有声音

    Kali Linux系统默认状态下,root用户是无法使用声卡的,也就没有声音.启用的方法如下: (1)在终端执行命令:systemctl --user enable pulseaudio (2)在/ ...

  3. [转]细说 ASP.NET Cache 及其高级用法

    本文转自:http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html 阅读目录 开始 Cache的基本用途 Cache的定义 Cach ...

  4. DRBD+Heartbeat实现自动切换

    1>HeartBeat介绍 Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项 ...

  5. AndroidStudio-Unable to save settings Failed to save settings. Please restart Android Studio

    Unable to save settings Failed to save settings. Please restart Android Studio 解决方法: 删除工程的.idea 然后在 ...

  6. 个人介绍&我的GitHub注册经历&初步使用

    (1)个人介绍 我叫刘雨恬,目前是南通大学计科院网络工程141班的一名大二的学生,学号1413042004.由于学习软件工程的需要,我注册了cnblogs的这个博客账号,方便以后的学习交流.在兴趣爱好 ...

  7. 搬家至独立博客 https://www.imzjy.com/blog/

    欢迎访问 https://www.imzjy.com/blog/

  8. 通过代码去执行testNG用例

    背景 用testNG去编写的测试用例,通过@Test去执行用例,一般本地都是通过IDE去执行相应的方法,持续集成的话,都是通过maven来执行或指定testNG.xml执行,但是如果想通过接口/界面去 ...

  9. ASP.NET 生成缩略图片类分享

    /// <summary> /// 生成图片缩略图 指定文件路径生成 /// </summary> public static void SaveImage(String fu ...

  10. js虚拟数字小键盘

    效果图 页面代码: @Html.TextBoxFor(m=>Model.FBP[i].RealNumb,new{onclick="showKeyboard('txtRealNumbOp ...