原文: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/

转载于:https://www.cnblogs.com/liujiacai/p/9313018.html

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

  1. 数据库mysql工序_网易杭研总结:数据库高可用技术之道(4)

    数据库作为IT系统中最关键的服务之一,其可用性一直是系统设计中的重点考虑因素.同时,由于数据库有数据有状态的天性,数据库高可用有其天然的复杂性和难点,云原生架构下尤其如此,是一个值得深入探讨的课题.本 ...

  2. 数据库高可用(HA)技术有哪些?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 数据库高可用是一个复杂的系统工程,本文主要介绍了几种数据库高可用的基本技术 ...

  3. 数据库高可用架构 转载

    数据库高可用架构对于我们这些应用端开发的人来说是一个比较陌生的领域,是在具体的数据库产品之上搭建的环境,需要像DBA这样对数据库产品有足够的了解才能有所涉及,虽然不能深入其中,但可以通过一些经典的高可 ...

  4. 美团数据库高可用架构的演进与设想

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

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

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

  6. mysql datahost ha_mysql MySQL数据库高可用HA实现

    起因:在工作中常常要用到mysql,平常只是对数据库crud,并没有认真的了解过她,sql语句也只是会一些最基本的,和常用的,一些不常用的都要去网上百度,即决定学习一下mysql,来了解她,虽然开发很 ...

  7. 数据库高可用实战案例-------架构优化之清爽一夏

    说到高可用,看官们会想到很多方案,也许是自亲身经历过系统从单机变成高可用的痛苦过程,也许有的看官只是在自己的虚机上搭建过测试的玩具.今天本篇用我自己的真实经历给大家讲述,不管怎么样实战和测试玩耍还是很 ...

  8. centos7双机搭建_Centos7 Mysql 双机热备实现数据库高可用

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

  9. 郭忆:网易数据库高可用架构最新进展!

    [IT168 专稿]本文根据郭忆老师在2018年5月12日[第九届中国数据库技术大会(DTCC)]现场演讲内容整理而成. 讲师简介: 郭忆--七年云端数据库开发经验,主导了网易私有云关系数据库服务的建 ...

最新文章

  1. raptor算法流程图例题_raptor程序设计例题参考答案
  2. MSDN中关于变体数据类型
  3. call(),apply()和bind()的详解使用:
  4. JAVA 的wait(), notify()与synchronized同步机制
  5. javascript function
  6. Android中使用ContentProvider进行跨进程方法调用
  7. Andriod --- JetPack (一):初识 JetPack
  8. vue-cli webpack配置分析 - chenBright - SegmentFault 思否
  9. python点击按钮改变图片_单击tkinter按钮时更改图片
  10. redis分布式锁的这些坑,我怀疑你是假的开发
  11. GNS3 Windows安装
  12. Python2.7.3 Tkinter Entry(文本框) 说明
  13. jmp软件(jMP软件正交设计交互作用)
  14. 互联网信息安全与加密技术
  15. iphone通用设置里显示UDID(tweak)
  16. 快播将关闭QVOD服务器 清理低俗和盗版内容
  17. 2021年美容师(初级)报名考试及美容师(初级)模拟考试题
  18. navicat premium导入表格时出现无法打开文件
  19. java 微信多线程推送_Java实现 微信小程序 + 消息推送
  20. [创业-39]:中小公司的组织架构与公司管理

热门文章

  1. dos下打包整个java工程
  2. android的log.d不显示结果
  3. 电脑桌面的东西突然不显示了
  4. Java一致性Hash算法的实现
  5. Spring Boot Redis 入门
  6. 2019年Vue学习路线图
  7. 一篇文章带你详解 TCP/IP 协议(下)
  8. 什么是 CAS 机制?
  9. 每个开发阶段对应的最流行的Java工具
  10. 客户/服务器模型:编程思想