数据库高并发升级方案_第1页
数据库高并发升级方案_第2页
数据库高并发升级方案_第3页
数据库高并发升级方案_第4页
数据库高并发升级方案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXXXXXXXXXXX平台数据库升级方案XXXXXXXXXXXXXXX有限公司2016年11月28日

修订记录版本说明作者批准批准日期V1.0对升级方案进行编制XXXX2016年12月1日1TOC\o"1-5"\h\z\o"CurrentDocument"概述 4\o"CurrentDocument"概述 4\o"CurrentDocument"背景 4\o"CurrentDocument"目标与目的 .4\o"CurrentDocument"可行性分析 4\o"CurrentDocument"参考依据 5\o"CurrentDocument"数据库高并发方案 5\o"CurrentDocument"数据库均衡负载(RAC) 5\o"CurrentDocument"数据库主从部署 8\o"CurrentDocument"数据库垂直分割 9\o"CurrentDocument"数据库水平分割 10\o"CurrentDocument"数据库优化设计 11\o"CurrentDocument"数据库集群 11\o"CurrentDocument"重点业务表分区 11\o"CurrentDocument"任务表历史数据分割 12\o"CurrentDocument"数据库表结构优化 12\o"CurrentDocument"数据访问优化 12\o"CurrentDocument"实施方案 13\o"CurrentDocument"工作量及预算评估 14工作量及预算评估 14其他费用 151.概述背景随着XXXXXX平台及其他子系统业务量增多,且用户已面向各地州市,用户数量增大,现有的二代办公平台及其他子系统在单一环境下的架构体系和数据库架构体系也无法高效的知足如此的场景。当前XXXXXX平台及其子系统通过搭建多台WEB服务器和双机热备份的方式进行部署运行。虽已提高了整体效率,但对于部份的业务处置仍是未解决。部份业务量并发处置多,业务关联多等因素,致使对数据库并发处置的业务量大,读写量大等也无法用双机热备份进行解决。因此,在此背景下提高数据库访问效率,增大访问吞吐量等将成为二代办公平台及其子系统运行顺畅的关键因素。目标与目的目标:依托现有系统服务和设备环境,成立可扩容、高并发、高吞吐量的数据库架构体系。目的:为减缓当前XXXXXX平台机械及其他子系统对数据库访问过大,造成的访问效率低下的问题,提升数据库访问效率和并发效率。对部份业务繁杂的表和访问进行优化设计,减缓因此造成的利用效率低下问题。可行性分析数据库性能分析:按照当前的数据库性能分析,当前硬件设备的提高也无法知足数据库性能的提升,因此应考虑数据库访问控制和数据访问方面进行优化。现有的数据库虽也实现双机热备份,但访问的效率未较大改善,因此应考虑各健全的数据库高并发访问方案。数据库优化分析:当前的数据库采用的ORACLE数据库,同时,现有的均衡负载、读写分离、数据分割技术较为成熟,在对系统进行适当调整和优化的情形下,能保证系统的正常运行。参考依据《OracleRAC核心技术详解》数据库高并发方案数据库均衡负载(RAC)RAC,全称realapplicationclusters,译为“实时应用集群”,是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是支持环境的核心技术。OracleRAC主要支持Oracle9i、10g、11g版本,能够支持24x7有效的,在低本钱上构建高可用性,而且自由部署应用,无需修改代码。在OracleRAC环境下,Oracle集成提供了软件和存储管理软件,为用户降低了应用本钱。当应用规模需要扩充时,用户能够按需扩展系统,以保证系统的性能。RAC是一种并行模式,并非是传统的主备模式。也就是说,RAC集群的所有成员都能够同时接收客户端的请求。RAC具有以下特点:双机并行:RAC是一种充分利用服务器资源的高可用性实现方案,RAC的并行模式实现方式与传统的双机热备实现方式截然不同,图1-1是二者的比较。如图1-1所示,两个节点在传统的双机热备环境中,始终有一台机械作为备用机,只有当主节点出现问题的时候才会切换到备用机上;若是主机一直没有出现问题,那么备用机始终处于空闲状态,这在资源的利用上和本钱方面都是庞大的浪费。但RAC是一种并行模式的架构,也就是说,两个节点的集群节点间是一种并行运行的关系,当一台机械出现问题,请求会自动转发到另一台机械,没有任何一台机械作为备用机一直不被利用,如此就充分利用了服务器资源。同时,传统的双机热备构架在出现问题时,常常需要数分钟的切换时刻,而RAC在出现问题时,针对存在的会话只需要数十秒的时刻就可以够完成失败切换进程,对新会话的创建不会产生影响,在切换时刻上也有比较大的优势。

哭败切换▲图1-1双机热备与哭败切换▲图1-1双机热备与RAC并行模式对比共享存储双机热备共享存储RAC高可用性:RAC是Oracle数据库高可用性解决方案。高可用性包括两部份的内容:第一是在这种解决方案下要确保数据不丢失,这是最基础的也是必需要保证的;第二是确保不断机,使Oracle数据库一直维持在正常的运行状态,避免停机给客户带来的损失,这是讨论最多的内容。停机一般分为两类,计划停机和非计划停机。所谓计划停机是有计划地安排节点或系统的停机,一般在Oracle升级、系统保护或硬件保护的情形下会出现。非计划停机就是在非人为计划的情形下突然停机,这种情形一般是在Oraclebug、系统故障、硬件故障或人为操作失败的时候出现。在没有较高花费的情形下,想实现系统100%的不断机几乎是不可能的。表1-1列出了特定百分比高可用性比率运行停机的时刻,详细记录了每种高可用性比率每一年、每一个月、每周能够出现最大的停机时刻。囊1-1悻京百分比岬r用性比率运物机劄时间莽年停瑚何母周承间必天1皿天Mr卜阡Wd期实熟7翌天LJ时刮1M则乳球7.楠小时1灿湖引泓L-E供5网小射50.4^#n牯孔垮神30k盼香外W($啊3一网倒10L*|>分■棘Z如凡个?}既4玷仲L(H分牌网一鳄必(54^}睇丽5秒&&凝如55?个9}4”秒2.!^通常情形下,以每一个月停机时刻来计算对应的可用性比率。按照系统的重要性情形,应该为系统设定合理的可用性比率。集群最大的优势在于它的高可用性,通过利用RAC能够在必然程度上避免因为硬件或软件故障引发的数据丢失和非计划停机,并在必然程度上减少或排除计划停机时刻。这是很多客户选择RAC的最直接原因。RAC中包括了超级多的高可用特性,主要包括如下几点:•实现节点间的负载均衡。•实现失败切换的功能。•通过Service组件来控制客户端的访问路径。•集群软件能够自动化管理各个资源,而且有按时的节点状态检测机制,能自动对一些失败的进程和心跳检测失败的节点进行重启,使其从头恢复到正常的运行状态。在Oracle11gR2版本中,Clusterware取得了改善,提供了更高的可用性。例如,大量新的基于代理的监控系统用于监控所有的资源。这些代理利用更少的资源执行更频繁的检查,即更快速的失败扫描和更短的恢复时刻。在Oracle监听的例子中,平均失败扫描时刻从5分钟减少到30秒,同时,检查距离从每10分钟减少到1分钟。另外,Clusterware的“Out-of-PlaceUpgrade"等特性也减少了软件保护需要的停机时刻。易伸缩性:RAC为需要从头计划的应用提供了易扩展性。为了在系统初始阶段维持较低的本钱,避免造成没必要要的浪费,集群能够依照标准硬件配置,选择适当的服务器资源、存储资源来搭建数据库环境。当系统需要更多的处置能力或需要增加存储时,通过添加另一台服务器或存储设备到集群中,能够在不断机的情形下取得水平的扩展。在一个集群中,Clusterware和RAC支持多达100个集群节点。当某个集群的处置能力多余,另一个集群的处置能力不够时,能够从处置能力多余的集群移动一个节点处处置能力不够的集群中。如此能够充分利用服务器资源,节约本钱。11gR2版本中推出了网格即插即用(GridPlugandPlay,GPnP),能够实现节点的快速添加。低本钱:通过量台普通的PC服务器组成一个集群,能够提高集群的处置能力,如此要比采用一台高性能的服务器的本钱低很多。若是想提高系统的处置能力,给集群添加节点比为高性能服务器添加硬件要容易患多。另外,利用集群还能动态地移除节点,加倍充分地利用管理者掌握的所有服务器资源,从服务器整体利用上降低了服务器的采购本钱。愈来愈多的企业愿意将集群解决方案应用到他们的系统中,以降低本钱,提高系统的可用性。高吞吐量:RAC是由多台服务器组成的逻辑主体,比单台数据库服务器能接收更多的客户端请求。这在要求高吞吐量的系统中,能够取得超级明显的表现。在RAC的架构中,多个实例散布在多个服务器上,能同时打开同一个数据库,而每一个实例能够接收相等数量的客户端请求,如此,随着服务器的增加,吞吐量也在不断地增加。数据库主从部署主从复制:几乎所有的主流数据库都支持复制,这是进行数据库简单扩展的大体手腕。Oracle的主从复制可采用DataGuarc技术DataGuard是Oracle数据库自带的数据同步功能,大体原理是将日记文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日记文件,从而使目标数据库与源数据库维持同步。DataGuard提供了三种日记传输(RedoTransport)方式,别离是ARCH传输、LGWR同步传输和LGWR异步传输。在上述三种日记传输方式的基础上,提供了三种数据保护模式,即最大性能(MaximumPerformanceMode)、最大保护(MaximumProtectionMode)和最大可用(MaximumAvailabilityMode),

其中最大保护模式和最大可用模式要求日记传输必需用LGWR同步传输方式,最大性能模式下可用任何一种日记传输方式。读写分离:读写分离是架构散布式系统的一个重要思想。很多系统整体处置能力并非能同业务的增加维持同步,因此必将会带来瓶颈,单纯的升级硬件并非能一劳永逸。针对业务类型特点,需要从架构模式上进行一系列的调整,比如业务模块的分割,数据库的拆分等等。/格读* 分寓后,可以把查珂援ft■色缺于诙著环/格读* 分寓后,可以把查珂援ft■色缺于诙著环itORACLZIIMj韦生产坪境IBM虫知HL.・」牌数据库垂直分割主从部署数据库中,当写操作占了主数据库的CPU消耗的50%以上的时候,咱们再增加从服务器的意义就不是专门大了,因为所有的从服务器的写操作也将占到CPU消耗的50%以上,一台从服务器提供出来查询的资源超级有限。数据库就需要从头架构了,咱们需要采用数据库垂直分区技术啦。最简单的垂直分区方式是将原来的数据库中独立的业务进行分拆(被分拆出来的部份与其它部份不需要进行Join连接查询操作),比如WEB站点的BLOG和论坛,是相对独立的,与其它的数据的关联性不是很强,这时能够将原来的数据库拆分为一个BLog库,一个论坛库,和剩余的表所组成的库。这三个库再各行其是主从数据库方式部署,如此整个数据库的压力就分担啦。另外查询扩展性也是采用数据库分区最主要的原因之一。将一个大的数据库分成多个小的数据库能够提高查询的性能,因为每一个数据库分区拥有自己的一小部份数据。假设您想扫描1亿条记录,对一个单一分区的数据库来讲,该扫描操作需要数据库管理器独立扫描一亿条记录,若是您将数据库系统做成50个分区,并将这1亿条记录平均分派到这50个分区上,那么每一个数据库分区的数据库管理器将只扫描200万记录。数据库水平分割在数据库的垂直分区以后,假设咱们的BLOG库又再次无法承担写操作的时候,咱们又该怎么办呢?数据库垂直分区这种扩展方式又无能为力了,咱们需要的是水平分区。水平分区意味着咱们能够将同一个数据库表中的记录通过特定的算法进行分离,别离保留在不同的数据库表中,从而能够部署在不同的数据库服务器上。很多的大规模的站点大体上都是主从复制+垂直分区+水平分区如此的架构。水平分区并非依赖什么特定的技术,完尽是逻辑层面的计划,需要的是经验和业务的细分。如何分区呢?对于大型的WEB站点来讲,必需分区,而且对于分区咱们没有选择的余地,对于那些频繁访问致使站点接近崩溃的热点数据,咱们必需分区。在对数据分区的时候,咱们必需要存在一个分区索引字段,比如USER_ID,它必需和所有的记录都存在关系,是分区数据库中的核心表的主键,在其它表中作为外键,而且在利用主键的时候,该主键不能是自增加的,必需是业务主键才能够。余数分区:咱们能够将User_ID%10后的值为依据存入到不同的分区数据库中,该算法简单高效,可是在分区数据库个数有变更的时候,整个系统的数据需要从头散布。范围分区:咱们能够将User_ID的范围进行分区,比如1-100000范围为一个分区数据库,100001-200000范围为一个分区数据库,该算法在分区数据库个数有变更的时候,系统超级有利于扩展,可是容易致使不同分区之间的压力不同,比如老用户所在的分区数据库的压力专门大,可是新用户的分区数据库的压力偏小。映射关系分区:将对分区索引字段的每一个可能的结果创建一个分区映射关系,那个映射关系超级庞大,需要将它们写入数据库中。比如当应用程序需要明白User_id为10的用户的BLOG内容在那个分区时,它必需查询数据库获取答案,固然,咱们能够利用缓存来提高性能。这种方式详细保留了每一个记录的分区对应关系,所以各个分区有超级强的可伸缩性,能够灵活的控制,而且将数据库从一个分区迁移到另一个分区也很简单,也能够使各个分区通过灵活的动态调节来维持压力的散布平衡。数据库优化设计数据库集群数据库集群高可用的方案主要有三种:RAC、DataGuard、MAA。其中:RAC在多个Oracle服务器组成一个共享的Cache,而这些Oracle服务器共享一个基于网络的存储。那个系统能够容忍单机/或是多机失败。不过系统内部的多个节点需要高速网络互连,大体上也就是要全数东西放在在一个机房内,或说一个数据中心内。DataGuard那个方案就适合多机房的。某机房一个production的数据库,另外其他机房部署standby的数据库。Standby数据库分物理的和逻辑的。物理的standby数据库主要用于production失败后做切换。而逻辑的standby数据库则在平时能够分担production数据库的读负载。MAA(MaximumAvailabilityArchitecture)其实不是独立的第三种,而是前面两种的结合,来提供最高的可用性。重点业务表分区当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上寄存到多个表空间(物理文件上),如此查询数据时,不至于每次都扫描整张表。表分区的类型及操作方式主要包括范围分区、列表分区、散列分区等,其中:范围分区将数据基于范围映射到每一个分区,那个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常常利用的,而且分区键常常采用日期。列表分区的特点是某列的值只有几个,基于如此的特点咱们能够采用列表分区,比如地域。散列分区是在列值上利用散列算法,以肯定将行放入哪个分区中。当列的值没有适合的条件时,建议利用散列分区。散列分区为通过指定分区编号来均匀散布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。任务表历史数据分割现有的任务表SA_TASK任务繁重,数据冗余,大体上的流程操作都在该表,二代办公开发平台(x5)以对此也进行了升级优化,就是将任务表已完结的历史数据单独寄存,缩小任务表的数据量,提高查询的效率。正在办理的任务数据寄存与SA_TASK表中,办理办结后则清除并寄存于SA_TASK_HISTORY(历史表)中。如此SA_TASK中只有正在办理的数据,将大大降低数据冗余的情形,同时提高SA_TASK表的读写能力。而查询经办文件时可查询SA_TASK_HISTORY(历史表),与频繁操作的SA_TASK区分开更易读取。数据库表结构优化随着省厅的业务量增大,最初的结构设计和调整使数据库表结构变得冗余,存在部份非表主要的属性,同时业务表结构过大,单条数据的字节数已超过1万多字节,因此在查询进程中也会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论