
一、甲骨文
([一) Oracle体系结构
Oracle Server包括两个部分:和实例,它们彼此独立。该由数据文件,控制文件和日志文件组成。该实例由内存池和后台进程组成。原理图如下:

一个Oracle Server可以创建多个,并且不同的彼此独立。每个都有自己完整的相关文件集,例如:密码文件,参数文件,数据文件,控制文件和日志文件
由一系列物理文件(例如二维表文件)组成。用户无法直接读取的内容,必须通过Oracle实例读取它们。一个实例只能连接到一个,但是一个可以由多个实例连接。
每个功能组件的描述如下:
1、用户连接过程
用户连接过程是用户与Oracle实例之间的桥梁。包括:用户流程,服务流程和PGA
当用户请求连接到Oracle Server时,由Oracle Server创建的用户进程。
用于处理用户和Oracle Server之间的连接。
PGA:由服务器进程分配,并在当前用户会话的内存区域中使用。不同的用户具有不同的PGA。 PGA包含服务器进程数据和控制信息的存储区。包括堆栈空间,会话信息和专用SQL区域。
2、 SGA(系统全局区域)
SGA与Oracle性能密切相关。在实例启动时分配它,在实例关闭时释放它。它主要包括以下数据结构:
oracle执行SQL语句的区域。在执行数据更新或数据查询时,用户执行的SQL语句不会直接修改磁盘上的数据文件,而是先将数据文件复制到缓冲区高速缓存中,然后修改或查询高速缓存中的副本。此外,缓冲区高速缓存中还将存在频繁访问的数据块。
用于短期存储重做日志。
用于缓存所有经常执行的代码和经常访问的对象定义。共享池中有以下三种数据结构:
库缓存:存储最近执行的代码
数据字典缓存:存储最近使用的对象定义
PL / SQL缓冲区(PL / SQL缓冲区):用于存储过程,函数,打包过程,打包函数,对象类型定义和触发器。
服务器共享进程。
仅当应用程序需要运行中的Java存储程序时,才需要Java池。
3、背景流程
背景流程主要用于管理,并且是Oracle实例与Oracle之间的链接。它们分为核心流程和非核心流程。
1)核心流程:
服务器进程连接到Oracle之后,数据缓冲区中“脏缓冲区”的数据块将通过写入过程(DBWn)写入数据文件;
检查点(CKPT)检查点过程主要用于更新数据文件头,更新控制文件并触发DBWn写入过程。
当后台进程执行失败时,它负责清理缓存和空闲资源,这是Oracle的自动维护机制。
目的如下:
当实例崩溃时,它用于自动恢复实例。
清除无效的临时段排序,回收和碎片整理,合并可用空间,释放临时段并保持闪回时间点。
它用于记录更改以及更改之前的原始状态。满足以下条件时,将激活LGWR:
提交说明
日志缓冲区超过1/3
每三秒钟
每次执行DBWn之前
2)非核心流程
是可选的后台进程。当处于ArchiveLog模式时,重做日志将自动存档,并保存的所有修改记录。
SGA(系统全局区域)和后台进程形成实例。
4、存储结构
从物理结构和逻辑结构上都可以理解存储结构。
1)物理结构
物理结构:是操作系统中的文件集合,即:磁盘上的物理文件,主要由数据文件,控制文件,重做日志文件,归档日志文件,参数文件组成以及密码文件。
数据文件,重做日志文件,控制文件,跟踪文件和警告文件属于文件
数据文件是数据存储仓库,仅在使用数据时才将数据传输到内存中。
重做日志文件包含对所做的更改的记录,如果Oracle发生故障,该记录可以恢复数据。
控制文件包含维护和验证完整性所必需的信息。例如,控制文件用于标识数据文件和重做日志文件,而至少需要一个控制文件。
实例中运行的每个后台进程都连接了一个跟踪文件。跟踪文件记录有关后台进程遇到的重大事件的信息。
是一个特殊的跟踪文件。每个都有一个跟踪文件,可同时记录消息和错误。
参数文件,密码文件和归档文件是非文件。

实例参数文件。启动oracle实例时,SGA结构将根据此参数文件设置内存,并且后台进程将相应地启动。
用户通过提交用户名/密码来建立会话,Oracle会根据数据字典中存储的用户定义来验证用户名和密码。
是重做日志文件的脱机副本,对于从介质故障中恢复可能是必需的。
2)逻辑结构
用于存储对象的逻辑空间是信息存储的最大逻辑单元,并且是一系列数据文件的集合。一个可以由多个表空间组成,每个表空间包括多个段。
是中对象占用的空间。细分是地区的集合
这是一次大的数据存储空间,该区域是块的集合
在创建时指定了ORACLE的最基本存储单元,并将其映射到磁盘块。
3)从逻辑空间到物理空间的映射

(二) Oracle RDBMS的运行过程
1.用户在访问Oracle Server之前提交了一个请求(包括db_name,密码,instance_name,用户名和其他信息);
2. Oracle Server收到请求并通过密码文件验证后,将分配SGA内存池,启动后台进程,并同时创建和启动实例;
3.启动实例后,用户进程和服务器进程建立连接;
4.服务器进程和Oracle实例建立Sesscion,然后接收用户请求并执行相关操作;
([三)编写SQL语句的执行过程
1.用户执行SQL语句后,服务器进程将SQL语句发送到实例,然后将SQL语句加载到缓冲区中。
2.服务器进程通知Oracle将与SQL语句相关的数据块的副本加载到缓冲区中。
3.在缓存区中执行SQL语句,修改数据文件的副本,并形成“脏缓冲区”
4. CKPT检测到“脏缓冲区”并调用DBWn写入过程,
5.在运行DBWn之前,先运行LGWR,并将数据文件的原始状态和的更改记录到重做日志文件中
6.运行DBWn并将“脏缓冲区的内容写入数据文件”
7.使用CKPT同时修改控制文件和数据文件头
8. SMON回收了不必要的空闲资源
9.将结果返回给用户
([四) Oracle的高可用性架构
1. Oracle RAC(实际应用集群)
RAC是Oracle的集群解决方案,包括计算层和存储层。如下图所示:

1)存储层共享存储
Oracle RAC的核心是共享磁盘子系统。群集中的所有节点都必须能够访问所有数据文件,重做日志文件,控制文件和参数文件。因此,这些文件必须存储在共享存储中。常用的共享存储方法为OCFS,OCFS 2、 RAW,NFS,ASM等。说明如下:
OCFS(Oracle群集文件系统)和OCFS2都是文件系统。像NFS一样,它们为群集环境中的共享存储提供文件系统。
RAW原始设备也是一种存储方法。将共享存储映射到RAW设备。当Oracle存储数据时,选择RAW设备存储。但是与文件系统相比,RAW不直观,不易于管理且数量有限。它已被OCFS取代。
ASM是存储解决方案,而不是集群解决方案。使用ASM时,还需要使用OCFS / OCFS2或RAW。
2)计算层
计算层至少需要两台服务器,并且每台服务器上都安装了集群软件和Oracle RAC组件。从逻辑结构的角度来看,每个节点都有一个独立的实例,可以访问同一。节点通过集群软件的通信层进行通信,并使用缓存合并技术实现集群中节点的缓存的高速同步,从而集群中的每个实例都保留相同的缓存。以便最小化磁盘I / O。因此,RAC具有以下特征:
每个节点实例都有自己的SGA;
每个节点实例都有自己的后台进程
每个节点的强度都有自己的重做日志
每个节点实例都有其自己的撤消表空间
所有节点共享一个数据文件和控制文件
2、 Data Guard
在Data Gurad环境中,至少有两个,一个主(Primary Database)处于打开状态,另一个备用(Standby Database)处于备用状态。
备用库分为物理库和逻辑库。物理库与主库完全相同。 REDO应用程序用于维护与主库的数据一致性,并支持只读服务。逻辑库使用SQL应用程序执行与备用上的主库相同的SQL语句,以维护主库的数据一致,因此文件的物理结构(甚至是数据的逻辑结构)可以是与主库不一致。逻辑库支持读写服务。
Data Guard适用于多机房解决方案。在实际部署中,主部署在主机房中,而备用部署在其他机房中。
二、 MySQL
([一) MySQL体系结构

1、连接器(连接器)
MySQL提供的接口(例如java,.net,php和其他语言)可以使用此组件来操纵SQL语句并实现与SQL的交互。

2、管理服务和实用程序(管理服务和实用程序)
提供MySQL的集成管理,例如备份(Backup),恢复(Recovery),安全管理(Security)等。
3、连接池组件(连接池)
负责监视从客户端到MySQL Server的各种请求,接收请求以及将请求转发到目标模块。每个成功连接到MySQL Server的客户端请求都将被创建或分配一个线程,该线程负责客户端与MySQL Server之间的通信,接收客户端发送的命令并传输服务器的结果信息。
4、 SQL接口(SQL接口)
接收用户SQL命令(例如DML,DDL和存储过程),并将最终结果返回给用户。
5、查询解析器组件(解析器)
首先分析SQL命令语法的合法性,然后尝试将SQL命令分解为数据结构。如果分解失败,则SQL语句不合理。
6、 Optimizer组件(Optimizer)
按照标准过程优化和分析SQL命令。
7、缓存和缓冲区(缓存和缓冲区)
缓存和缓冲组件
8、 MySQL存储引擎
MySQL属于关系,关系的存储形式为表。表的创建,数据存储,检索和更新都由MySQL存储引擎完成。
由于MySQL的开源特性,允许第三方基于MySQL框架开发适合其业务需求的存储引擎。因此,MySQL支持多种类型的存储引擎,可以分为官方存储引擎和第三方存储引擎。
当前,MySQL的存储引擎包括MyISAM,InnoDB,NDB,存档,联合,内存,合并,伙伴,社区,自定义等。其中,更常用的存储引擎包括InnoDB,MyISAM和Momery。
9、物理文件(文件系统)
实际上存储MySQL文件和一些日志文件的系统,例如Linux,Unix,Windows等。
(二)查询流程图

([三) MySQL的高可用性架构
由于MySQL的开源特性,其高可用性架构非常灵活。当前,通常使用以下类型:
1、主从复制模式
这是MySQL本身提供的高度可用的解决方案。数据同步方法使用MySQL复制技术。为了获得更高的可用性,在实际的应用环境中,有必要配合不断升级的高可用性集群软件来实现自动故障转移,否则需要进行手动切换。

2、 MHA(主高可用性)
MHA是一种相对成熟的高可用性解决方案。该软件包括两部分:MHA管理器(管理节点)和MHA节点(数据节点)。构建MHA时,群集必须至少具有三个服务器,一个主服务器和两个从属服务器(即一个主服务器,一个备用主服务器和另一个从属服务器)。
MHA Manager可以部署在单独的计算机上以管理多个主从集群,也可以部署在一个从节点上,并且MHA节点在每台MySQL服务器上运行。
运行时,MHA Manager将定期检测群集中的主节点。当主服务器发生故障时,它将自动将具有最新数据的从服务器升级到新的主服务器,然后将所有其他从服务器重定向到新的主服务器。整个故障转移过程对应用程序是完全透明的。整个切换过程如下:
保存崩溃的主机中的binlog事件;
标识具有最新更新的从站;
将差分继电器日志应用于其他从站;
应用从主保存的二进制日志事件(binlog事件);
将奴隶提升为新主人;
让其他从服务器连接到新的主服务器进行复制;
3、 MGR(MySQL组复制)
MGR是MySQL官方推荐的另一种高度可用的体系结构。复制组之间的数据同步基于Paxos协议。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-313924-1.html
还说什么别轻举妄动
中国几十年前就打过3--4次好不好
并不是什么耻辱