技术开发 频道

Oracle基于Android编译过程及SQL高可用

  BDB数据库内核的主从复制(BDB HA)工作原理

  Oracle Berkeley DB 11gR2 5.2版本(下文简称BDB 5.2)在SQL接口层引入一个关于高可用(HA)的新功能,即可以通过PRAGMA配置和启动在多个节点上运行SQL数据库集群的实例,从而通过scale-out的办法将数据库读操作能力扩展到多机上。这一机制的内部原理是使用底层BDB数据库内核的主从复制(即replication)机制。

        BDB HA提供主从节点复制,以在分布式系统中提供高可用性和水平读扩展性。每个BDB HA组由单个master节点和多replica节点组成,并提供自动容错切换,其中master提供读写服务,replica节点上提供读服务。Replica为了和master保持数据一致,它会从master或者其他(和master同步的)replica上获得事务日志,并将数据库事务在本地数据库“重演”(replay)。因此,不论master还是replica,所有节点都保留一份当前HA组master上的数据文件和日志。下图1解释BDB的主从复制工作原理。

BDB 5.2新特性简介:SQL 的高可用功能

  ▲BDB HA 工作原理

  任何HA组有且只能有一个master。启动一个新的HA组前,先显式指派某个节点为master。此后,后续加入的节点都是replica节点。运行过程中,当master被关或者网络不可连接时,该HA组剩余节点将投票选举出新的master,此后,旧master再次加入该HA组时,只能以只读replica的方式进入。

  在一个由n个节点构成的HA组中,通过选举产生master,最简单的方式是任何一个参与者投票给它认为拥有最多最新数据的节点,此时,获得半数以上(n/2+1)投票的节点将成为新的master。如果一个HA组无法选举出一个master,该HA组将只能提供读(即查询)服务,不能做数据写操作(如增、删、改)。

  感兴趣的同学可以去了解一下分布式消息一致性和投票算法,如paxos,请参见参考文档。

       SQL层的主从复制(SQL HA)的工作原理

  BDB SQL接口在5.2版本之前仅支持单节点的扩展性,通过SQL语句管理和操作数据库。在BDB 5.2版本中,BDB SQL引入多机扩展的功能(即HA,又叫主从复制的高可用),提供分布式多机环境下的SQL数据库集群功能。因此SQL HA为数据库提供更强大的读操作能力和更高的数据库服务可用性(即高可用)。

  BDB 底层HA机制中,每个节点都是拥有唯一主机名和端口组合的BDB环境(可以看成是一个关系型数据库实例),而一个BDB环境可以有多个数据库(可以看成是关系型数据库的二维表)。而在SQL HA中,每个节点是拥有唯一主机名和端口组合的BDB数据库,每个数据库拥有各自的BDB环境。与BDB 底层HA机制略有不同的是,SQL HA里的复制粒度是单个数据库表(BDB里面称之为数据库),这个粒度比前者更细。如下图2所示:

 SQL层的主从复制的工作原理
▲BDB SQL HA架构示意图

0
相关文章