• [综合] 在线迁移和离线迁移的对比
    在线迁移:是指在系统不停机的情况下,将服务器或虚拟机上的系统、服务程序等从自建机房(IDC)或云平台等源环境迁移同步至云上,方便实现企业上云、跨云平台迁移、跨账号/区域迁移或部署混合云等业务需求。@离线迁移:(1)离线实例迁移:将系统盘镜像(若需同时迁移实例已挂载的数据盘,则可将系统盘镜像和数据盘镜像)迁入至指定的云服务器。(离线数据迁移)将数据盘镜像迁入至指定的云硬盘。区别:离线迁移需要先将源端服务器的系统盘或数据盘制作成镜像,再将镜像迁移至您指定的云服务器或云硬盘。在线迁移无需制作镜像,直接在源端服务器运行迁移工具,即可将源端服务器迁移至指定的云服务器。在线迁移、离线迁移对比三方面:成本、效率、安全性。成本:大规模数据的迁移需要耗费大量传输资源,就是网络,成本较高,因此数据量太大有时不适合在线传输。效率:效率受网速限制,如通过网络转移1EB的数据大约需要26 年,而用十辆卡车可以将传输时间降至6个月内安全:利用云计算的黑客攻击愈发频繁,尤其像金融等传统客户是不放心数据在线迁移的。在线迁移工具:技术流:Oracle系统迁移(自带)Oracle Golden Gate/ Data Guard(DG),MS Always On……服务流:采用数据复制服务DRS做数据库迁移,此外若客户涉及异构数据库迁移,则也可用数据库应用迁移服务UGO做迁移离线迁移工具:DES数据快递服务、OBS对象存储
  • [综合] Oracle数据库迁移上云和迁移到数仓的工具和流程
    利用华为云云数据库RDS和分布式数据库中间件DDM完成Oracle应用迁移上云,提高访问效率,轻松应对高并发的实时交易场景,若采用工具流:Oracle Golden Gate/Data guard/Always On/数据库自带迁移工具等若采用公有云服务:DRS数据复制服务(偏同构数据库)1、Oracle数据库迁移上云的工具和流程迁移上云的工具5Oracle数据库可以使用OGG迁移上云流程Oracle GoldenGate 数据复制过程如下:利用抽取进程(Extract Process)在源端数据库中读取Online Redo Log或者Archive Log,然后进行解析,只提取其中数据的变化信息,比如DML操作——增、删、改操作将抽取的信息转换为GoldenGate自定义的中间格式存放在队列文件(trail file)中再利用传输进程将队列文件(trail file)通过TCP/IP传送到目标系统。目标端有一个进程叫Server Collector,这个进程接受了从源端传输过来的数据变化信息把信息缓存到GoldenGate 队列文件(trail file)当中,等待目标端的复制进程读取数据。GoldenGate 复制进程(replicat process)从队列文件(trail file)中读取数据变化信息,并创建对应的SQL语句,通过数据库的本地接口执行,提交到目标端数据库,提交成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。2、Oracle迁移至数据仓库(GaussDB)的工具和流程使用DRS的实时同步功能将本地Oracle数据库实时迁移至华为云GaussDB(for openGauss)。通过全量+增量同步,实现源数据库Oracle和目标数据库GaussDB(for openGauss)的数据长期同步。(1)迁移至数据仓库的工具:DRS(2)迁移至数据仓库的流程:创建VPC和安全组创建GaussDB(for openGauss)实例迁移前构造数据迁移数据库(创建DRS实例,将本地Oracle上的test_info数据库迁移到GaussDB(for openGauss)实例中test_database_info数据库中)迁移后进行数据校验PS:补充业务架构和迁移原理(防止考到)1、业务架构图2、迁移原理次实践使用全量+增量同步功能,原理如下:全量同步阶段,先进行结构迁移,例如表、主键、唯一键的迁移。结构迁移完成后,启动增量数据抽取,以确保全量数据同步期间的增量数据完整的抽取到DRS实例。启动全量迁移任务。全量迁移完成后自动进入增量同步,从全量迁移开始抽取的位点开始回放。当增量回放全部完成后,启动比对任务进行一致性检查,支持实时比对。实时比对数据一致时,可以启动业务割接。
  • [交流吐槽] 三大存储及数据库详解
  • [综合] 知识整理
    一、核心业务上云相关(痛点+公有云可应对的方案)核心业务难以上云的痛点:核心业务对运行环境性能要求极为严苛;核心业务在虚拟化环境下运行效能不够稳定;---核心业务数据一般具有敏感性、隐私性;上云业务安全性及安全机制设计不完善;核心业务公有云应对方案:作为一名客户经理我们可以向客户简单赋能并提出相关公有云应对核心业务上云的解决方案:选配ECS高配性能版-若客户的核心业务对于虚拟化环境运行无特殊要求,仅仅是性能要求较高,这是一个可用的选择;若客户担忧公有云隔离性、数据隐秘性问题,可推DEH专属主机服务;若客户核心业务不可兼容虚拟化环境,则可推荐BMS裸金属服务;作为一名客户经理,应从实际和客户角度出发,若客户核心业务不建议异地迁移上云,也可更换思维向其赋能推广公有云灾备类服务; 二、 请比较解释下三大存储业务的不同点(块、对象、文件)SAN存储提供给应用的是一个LUN或者是一个卷,LUN和卷是面向磁盘空间的一种组织方式,上层应用要通过FC或者ISCSI协议访问SAN。SAN存储处理的是管理磁盘的问题,适用于实时读写场景; NAS存储提供给应用的是一个文件系统或者是一个文件夹,上层应用通过NFS和CIFS协议进行访问,利用FTP+TFTP协议进行上传下载,此外,文件系统要维护一个目录树,适用于企业组织内部共享场景,提升办公效率和存储空间利用率(减少同类型数据复存)对象存储更加适合web类应用,基于URL访问地址提供一个海量的桶存储空间,能够存储各种类型的文件对象,对象存储是一个扁平架构,无需维护复杂的文件目录。无需考虑存储空间的限制,一个桶支持近乎无限大的存储空间。(适用于离线、冷数据、归档数据、作为后端存储为客户打造的离线存储系统,性价比高…) 请绘图展现云硬盘EVS形成过程原理并解释优势所在。1、云硬盘的核心技术原理,采用RAID2.0技术,不断将底层disk的空间进行拆分重组,以此达到空间负载均衡的效果。2、空间完全负载均衡的设计可一方面减少高压情况下的高压盘(负载分担),另一方面尽可能减少存储池内空闲盘的存储,提升整体工作利用率;3、此外,在云硬盘故障或物理盘故障后,CK级的重构会相较于传统模式,恢复速度更快。 云硬盘(Elastic Volume Service)是一种为ECS、BMS等计算服务提供持久性块存储的服务,通过数据冗余和缓存加速等多项技术,提供高可用性和持久性,以及稳定的低时延性能。您可以对云硬盘做格式化、创建文件系统等操作,并对数据做持久化存储云硬盘性能的主要指标包括:IOPS:云硬盘每秒进行读写的操作次数。吞吐量:云硬盘每秒成功传送的数据量,即读取和写入的数据量。 IO读写时延:云硬盘连续两次进行读写操作所需要的最小时间间隔。表1 云硬盘类型和性能 四、迁移的整体大流程。迁移流程分为如下几个步骤:信息收集、风险评估(软硬件版本、规格、参数、性能容量、兼容性+迁移风险点等信息收集)迁移方案的指定(确定迁移方式、迁移工具、迁移团队、时间、回退方案等)迁移方式:P2P物理层到物理层:设备新老更替;P2V 上云场景:需要用到虚拟化技术;V2P:回退部署,虚拟化以后效能低;V2V:平台更换。迁移预实施+整体逐步实施(利用迁移方案预实施少量节点,分批次加分层次进行整体迁移)迁移后业务测试+数据检验(对迁移业务进行业务拉起和连通性测试+网络质量+数据完整度等)迁移现场保障+后期维保。(迁移完成后需留场进行业务保障,后续业务在维保期继续关注)项目验收。三大层次迁移工具或服务选择:数据层迁移若采用工具流: 1、利用企业级存储hyperreplication+hyperMetro(复制+双活)+lun拷贝+eRplication等;公有云服务:1、可以使用公有云数据快递DES服务(数据快递服务(Data Express Service,  DES)是面向TB到数百TB级数据上云的传输服务);平台层迁移若采用工具流: Oracle Golden/Data guard/Always On/数据库自带迁移工具等;若采用公有云服务:DRS(偏同构数据库)+UGO(偏异构数据库)应用层迁移工具流:eBackup/Rainbow等服务流:SMS主机迁移服务 五、容器化改造点:选择合适的负载均衡:中小型企业采用nginx或HAproxy,大型网站或重要服务采用LVS;WEB服务器:集群中使用独立安全授权(需要拆除,使用IAM统一进行认证授权管理),服务有状态(进行无状态改造,将会话数据加密后放到Cookies中返回给客户端,通过远程的noSQL存储会话信息。)应用服务器:应用存在长时间请求(增加消息队列,通过消息队列将长任务与用户请求解耦),应用服务器存在集中式管理(进行去中心化)。数据库:使用关系型数据库(如有水平扩展的诉求,需要替换为非关系型数据库)。存储:应用实例依赖于本地存储来持久化数据(如果是日志,建议变成流汇聚到分布式日志系统中;如果必须要使用存储,要使用共享文件系统如NFS)。其他:配置文件与底层耦合或者依赖主机名/IP地址(差异性的配置可以通过环境变量传递,对于依赖IP地址的配置应通过域名替换)。 六、以华为云为例,步骤为:1、登录华为云官网(horizon、keystone)----> 2、先买VPC(neutron-plugin)---->3、再订购ECS(nova-heat)---->4、配置ims+disk(glance-swift-OBS)(cinder-volume-schdule-az(disk)---->5、选网络---->6、付费(ceilometer-horizon) 七、raid0、raid1、raid5、raid10这四种硬盘阵列的特点和区别Raid 0:一块硬盘或者以上就可做raid0优势:数据读取写入最快,最大优势提高硬盘容量,比如3快80G的硬盘做raid0 可用总容量为240G。速度是一样。缺点:无冗余能力,一块硬盘损坏,数据全无。建议:做raid0 可以提供更好的容量以及性能,推荐对数据安全性要求不高的使用。Raid 1:至少2快硬盘可做raid1优势:镜像,数据安全强,2快硬盘做raid一块正常运行,另外一块镜像备份数据,保障数据的安全。一块坏了,另外一块硬盘也有完整的数据,保障运行。缺点:性能提示不明显,做raid1之后硬盘使用率为50%.建议:对数据安全性比较看着,性能没有太高要求的人使用。Raid5:至少需要3块硬盘raid5优势:以上优势,raid5兼顾。任意N-1快硬盘都有完整的数据。缺点:只允许单盘故障,一盘出现故障得尽快处理。有盘坏情况下,raid5 IO/CPU性能狂跌,此时性能烂到无以复加。建议:盘不多,对数据安全性和性能提示都有要求,raid5是个不错选择,鉴于出问题的性能,盘多可考虑riad10Raid10:至少需要4快硬盘。raid10是2快硬盘组成raid1,2组raid1z组成raid0,所以必须需要4块硬盘。优势:兼顾安全性和速度。基础4盘的情况下,raid10允许对柜盘2块故障,随着硬盘数量的提示,容错量也会相对应提升。这是raid5无法做到的。缺点:对盘的数量要求稍高,磁盘使用率为一半。建议:硬盘数量足够的情况,建议riad10.不过raid最重要的指标是可靠性:4盘的raid5,只允许单盘故障,raid10,允许对柜盘2块g故障,可靠性高于raid5,且raid10 可随盘上升提高容错,raid就不行,而且IO和CPU的额外开销还涂增,从可靠性和冗余角度,达到同样的可靠性,raid10写能力高于raid5.特殊情况下:有坏盘,无热备radi5 CPU和IO性能狂跌。因为数据不完整,在某特殊软件下,实现即时重构数据进驻内存,保障业务运行,但此生raid5的性能已经烂到无以复加。raid10 是条带化+镜像,坏盘影响读性能,不影响写性能,而且无需重构。此时的raid10完爆raid5 
  • [综合] 华为云学习心得分享
    迁移整体流程迁移前作信息收集+风险点评估信息收集:软硬件版本、规格、参数、性能容量、兼容性等参数收集;风险评估:对系统软硬件环境进行评估是否适合迁移及迁移风险点。迁移方案制定根据业务实际场景,确定迁移方式、迁移工具、迁移团队、分工界面、迁移时间、回退方案等关键点,形成具体的迁移方案和实施步骤。其中迁移方式可根据实际的迁移场景,分为P2P/P2V/V2P/V2V。迁移预实施+整体逐批逐层实施根据迁移方案预实施少量节点,对于重要业务提前进行应急预案演练,及时发现问题修改方案,确保迁移的顺利性;预实施完成后,分批次(业务系统最后)、分层次(数据层最后)进行系统整体迁移。迁移后业务测试+数据检验对于迁移业务进行业务拉起和连通性测试,对系统网络质量和数据完整度等方面进行验证。迁移现场保障+后期维保迁移完成后需留场进行业务保障,后续业务在维保期继续关注运行状态。项目验收 三大层次迁移工具或服务选择:数据层迁移若采用工具流:可使用HyperReplication/HyperMetro/LUN COPY/ eReplication…若采用公有云服务:可使用DES数据快递服务;平台层(数据库迁移为例)若采用工具流;Oracle Golden Gate/Data guard/Always On/数据库自带迁移工具等若采用公有云服务:DRS数据复制服务(偏同构数据库)+UGO数据库和应用迁移(偏异构数据库-可翻译为GaussDB统一命令)应用层工具流:eBackup/Rainbow等…服务流:SMS主机迁移服务 【单独数据迁移】公有云服务:可以使用公有云数据快递DES服务(数据快递服务(Data Express Service,DES)是面向TB到数百TB级数据上云的传输服务)若涉及到数据库迁移部分,则可采用DRS(数据复制服务)技术层工具流:利用企业级存储hyperreplication+hyperMetro(复制+双活)+lun拷贝等特性利用容灾数据复制工具(如eReplication等) (备份保护容灾类服务)单机备份服务:CSBS(云主机备份)---VBS(云硬盘备份)容灾服务:SDRS(同region,跨AZ的本地容灾)---CBR(可实现同/跨region的异地容灾) 三大存储对比SAN存储提供给应用的是一个LUN或者是一个卷,LUN和卷是面向磁盘空间的一种组织方式,上层应用要通过FC或者ISCSI协议访问SAN。SAN存储处理的是管理磁盘的问题,适用于实时读写场景;NAS存储提供给应用的是一个文件系统或者是一个文件夹,上层应用通过NFS和CIFS协议进行访问,利用FTP+TFTP协议进行上传下载,此外,文件系统要维护一个目录树,适用于企业组织内部共享场景,提升办公效率和存储空间利用率(减少同类型数据复存)对象存储更加适合web类应用,基于URL访问地址提供一个海量的桶存储空间,能够存储各种类型的文件对象,对象存储是一个扁平架构,无需维护复杂的文件目录。无需考虑存储空间的限制,一个桶支持近乎无限大的存储空间。(适用于离线、冷数据、归档数据、作为后端存储为客户打造的离线存储系统,性价比高…)项目价值通过本期项目建设,可以带来如下价值:1)突破传统,战略转型,聚焦公司核心业务发展利用云平台低维护成本、易扩展性、资源部署周期短等优势,面向全业务竞争,把公司投入到传统IT建设与维护的核心资源释放出来,聚售公司主流业务。2)精简IT资源,降低成本利用云平台提高设备资源利用率,降低设备投资成本和维护成本。3)灵活应对业务IT需要,缩短部署周期利用云平台弹性伸缩机制,可随时调整以匹配业务或IT的变化。4)利用云平台的高可靠性,确保核心业务的连续性通过云平台 HA、热迁移功能,有效减少设备故障时间,确保核心业务的连绩性。 VM安全问题HA高可用:偏向于物理承载;有中断时延,分钟级;需要第三方专业HA软件(veritas);100%适用,无限制条件。VM热迁移:偏向于虚拟环境承载;无中断时延;OpenStack自带特性,自动执行;超高限制条件(迁移节点需共享集群,需共享存储池,需确保大二层网络)。 网络两层架构能否分1层,是否可倒置?对TOR交换机强需求:交换性能不错,足够的网口进行接入,价格适中,体积小灵活;对COR交换机强需求:交换和路由性能极强,接口满足TOR交换机基本需求;分层越多,越多冗余链路,越安全,负载均衡和性能调优(一层适用于极小的DC环境);两层交换机功能不一:接入层满足计算层终端流量上下行接入,核心层满足无阻塞传输,实现尽可能快的网络收敛。邻居关系:具备基本通信能力+网络拓扑位置;邻接关系:具备基本通信能力+熟知对方信息。OSPF传输速率低,网络稳定;ISIS传输效率高。DC网络区域使用类ISIS协议,传输效率高。企业网偏OSPF,运营商偏ISIS。 RAID2.0优势所在:Evs的核心技术原理采用Raid0技术不断将底层disk的空间进行拆分重组,以此达到空间负载均衡的效果空间完全负载均衡的设计可一方面减少高压情况下的高压盘(负载分担),另一方面尽可能减少存储池内空闲盘的存储,提升整体工作利用率;此外,在云硬盘故障或物理盘故障后,CK级的重构会相较于传统模式,恢复速度更快。 Namespace:偏上层进程隔离。企业级linux内核的一部分;通过几种类型命名格式,隔离区分;分user namespace/network namespace等。Cgroup:偏资源调用进程隔离。记录:记录并显示容器实例运行状态、告警、监控参数等;控制:容器运行实例进程的杀死、暂停、启用和删除;限制:容器实例计算资源的限制;优先级:多容器实例间可手工调整资源占用优先级。 核心业务难以上云的痛点:核心业务对运行环境性能要求极为严苛;核心业务在虚拟化环境下运行效能不够稳定;---核心业务数据一般具有敏感性、隐私性;上云业务安全性及安全机制设计不完善;核心业务公有云应对方案:作为一名客户经理我们可以向客户简单赋能并提出相关公有云应对核心业务上云的解决方案:选配ECS高配性能版-若客户的核心业务对于虚拟化环境运行无特殊要求,仅仅是性能要求较高,这是一个可用的选择;若客户担忧公有云隔离性、数据隐秘性问题,可推DEH专属主机服务;若客户核心业务不可兼容虚拟化环境,则可推荐BMS裸金属服务;作为一名客户经理,应从实际和客户角度出发,若客户核心业务不建议异地迁移上云,也可更换思维向其赋能推广公有云灾备类服务; 1、单设备:部件故障,热备+冷备。2、多设备:计算设备(物理机HA,虚拟机热迁移),存储设备(组网SAN组网,RAID技术),网络设备(级联组网,堆叠技术)。3、DC容灾:本地容灾(小于10km,FC同步),异地容灾(大于10km,IP异步),两地三中心Horizon,keystone,ceilometer,heat,nova,ironic,cinder,swift,glance,neutron 企业应用容器化改造,一般有以下三种方式:方式一:单体应用整体容器化,应用代码和架构不做任何改动。方式二:将应用中升级频繁,或对弹性伸缩要求高的组件拆分出来,将这部分组件容器化。方式三:将应用做全面的微服务架构改造,再单独容器化。对于中小企业而言,首次做容器化改造,建议选择方式一,主要优点有:业务0修改:应用架构和代码不需要做任何改动。提升部署和升级效率:应用可构建为容器镜像,确保应用环境一致性,提升部署效率。降低资源成本:Docker对系统资源利用率高。相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。 容器化改造点:选择合适的负载均衡:中小型企业采用nginx或HAproxy,大型网站或重要服务采用LVS;WEB服务器:集群中使用独立安全授权(需要拆除,使用IAM统一进行认证授权管理),服务有状态(进行无状态改造,将会话数据加密后放到Cookies中返回给客户端,通过远程的noSQL存储会话信息。)应用服务器:应用存在长时间请求(增加消息队列,通过消息队列将长任务与用户请求解耦),应用服务器存在集中式管理(进行去中心化)。数据库:使用关系型数据库(如有水平扩展的诉求,需要替换为非关系型数据库)。存储:应用实例依赖于本地存储来持久化数据(如果是日志,建议变成流汇聚到分布式日志系统中;如果必须要使用存储,要使用共享文件系统如NFS)。其他:配置文件与底层耦合或者依赖主机名/IP地址(差异性的配置可以通过环境变量传递,对于依赖IP地址的配置应通过域名替换)。 容器化改造方案:应用现状调研(业务现状、技术可行性、外围关联系统)、容器化评估(根据开发、测试、运维、部署等方面进行评估,初步获得容器化改造方案)、容器化设计(按照逐层逐中心思想,从用户交互层开始,再到各个中心服务进行改造方案设计规划)。 结合华为云,给出容器化改造高可用规划的简单说明:分别在2个AZ中部署两套CCE集群,K8S Master采用本地3节点高可用部署;应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例;应用通过VIP访问数据库,数据库自动切换应用不感知。支持多AZ动态容器存储,根据pod所在AZ创建数据卷。
  • [技术干货] 基于华为云鲲鹏弹性云服务器ECS部署openGauss数据库
    前言随着云计算规模越来越大,企业业务数据量呈指数级增长,传统数据库在海量数据存储与管理方面显得力不从心,面临“存不下,算得慢、算不准”的问题。面对挑战,华为云数据库深度融合华为在数据库领域多年的经验,充分结合了企业级场景需求,基于openGauss自研生态推出了企业级分布式关系型数据库GaussDB(for openGauss)。GaussDB(for openGauss)目前支持单分片和分布式两种部署形态,在支撑传统业务的基础上,持续构建竞争力特性,为企业面向数字化转型提供了无限可能。而openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核源自PostgreSQL9.2.4,深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。同时openGauss也是一个开源、免费的数据库平台,鼓励社区贡献、合作。区别:二者并没有直接的关系。通俗来说,GaussDB是openGauss前身,区别是GaussDB走上开源之路,形成openGauss。而在功能特性上,opengauss 支持单节点,gaussdb支持集群。缘起由于我自己对国产的数据库比较感兴趣,且做任何项目基本都需要数据库,特此前来感受一下,为以后自己开发项目使用GuassDB打下一定的基础。本篇文章基于华为云鲲鹏弹性云服务器ECS部署openGauss数据库,通过一系列配置在ecs服务器上下载安装openGauss数据库,然后简单创建数据库和表,然后进行增删改查功能,体验一下openGauss的强大之处。话不多说,直接开造!具体流程操作前提:登录华为云账号 且实名使用手机号注册华为云账号:点击注册点此去完成实名认证,账号类型选"个人",个人认证类型推荐使用"扫码认证"。  创建虚拟私有云VPC创建弹性云服务器ECS 远程登录弹性云服务器ECS下载openGauss镜像并解压创建集群的xml配置文件安装数据库1.创建虚拟私有云VPC什么是虚拟私有云?虚拟私有云(Virtual Private Cloud,以下简称VPC),为弹性云服务器构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云中资源的安全性,简化用户的网络部署。如何访问虚拟私有云?提供了Web化的服务管理平台,即管理控制台和基于HTTPS请求的API(Application Programming Interface)管理方式。如果您需要将云平台上的虚拟私有云集成到第三方系统,用于二次开发,请使用API方式访问虚拟私有云;如果您需要进行其他相关操作,请使用管理控制台方式访问虚拟私有云,可直接登录管理控制台,从主页选择“虚拟私有云”。虚拟私有云VPC为弹性云服务器ECS资源构建出隔离的虚拟私有网络环境。购买弹性云服务器ECS需要绑定VPC。1.1 进入虚拟私有云VPC界面进入到华为云控制台,移动鼠标到左侧菜单栏,进入服务列表里面:“网络” ->“虚拟私有云VPC”界面。1.2 创建虚拟私有云VPC点击右上角“创建虚拟私有云”按钮,进入创建VPC界面。基本信息配置: ①区域:华北-北京四②名称:vpc-opengauss③IPv4网段:192.168.0.0/16默认子网配置:①可用区:可用区1②名称:subnet-opengauss③子网IPv4字段:192.168.0.0/24其他内容使用默认值保持不变。 然后点击“立即创建”按钮。进入到VPC列表界面查看已经创建的VPC。创建成功后,状态显示可用。2. 创建弹性云服务器ECS数据库服务部署在弹性云服务器ECS上面,本次搭建单机数据库,需要购买一台弹性云服务器ECS,规格建议:CPU 4核,内存16GB。2.1 进入弹性云服务器ECS界面进入到华为云控制台,移动鼠标到左侧菜单栏,进入服务列表里面:“计算” ->“弹性云服务器ECS”界面。 点击右上角“购买弹性云服务器”按钮。2.2 选择弹性云服务器ECS规格参数区域和可用区有什么区别?区域指弹性云服务器所在的物理位置,同一区域内可用区间内网互通,不同区域间内网不互通。每个区域包含许多不同的称为“可用区”的位置,即在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。基础配置:①计费模式:按需计费②区域:华北-北京四③可用区:可用区1④CPU架构:鲲鹏计算⑤规格:鲲鹏通用计算增强型 |  kc1.xlarge.4| 4vCPU | 16GB⑥镜像:公共镜像⑦操作系统:openEuler – openEuler 20.03 64bit with ARM(40GB)⑧系统盘:通用型SSD 40G⑨购买量:1 台点击下一步,进入网络配置。网络配置:①网络:Vpc:vpc-opengauss (与创建VPC步骤中保持一致)、Subnet: subnet-opengauss、自动分配IP地址②安全组:使用默认的 default③弹性公网IP:现在购买④线路:全动态BGP⑤公网带宽:按带宽计费⑥带宽大小:2 Mbit/s点击下一步,进入高级配置。高级配置:①云服务器名称:ecs-opengauss②登录凭证:密码③用户名:root④密码:自己设置(记牢后面需要用到)⑤确认密码:自己设置⑥云备份:暂不购买其他选项保持默认,点击下一步,确认配置。确认配置:核对择的配置信息,勾选协议“我已经阅读并同意《镜像免责声明》”确认无误后,点击“立即购买”。(创建ECS需要等待2分钟左右),创建成功如下所示,状态会变为运行中。3. 远程登录弹性云服务器ECS(1) 打开提前搭建好的“Xfce终端”打开Terminal,输入以下命令登录弹性云服务器ECS。注意:请使用你创建成功的弹性云服务器ECS的公网IP来替换root@后面的。LANG=en_us.UTF-8 ssh root@119.3.181.105说明:(1)弹性云服务器ECS的弹性公网IP地址可以通过鼠标移动到云桌面浏览器页面中左侧菜单栏,点击服务列表->“计算”->“弹性云服务器ECS”进入服务器列表,进行查看并复制。(2) 接受秘钥输入“yes”,回车;(3)输入密码:创建ECS时设定的密码(输入密码时,命令行窗口不会显示密码,输完之后直接键入回车)。成功登录弹性云服务器ECS之后如下图所示:或者使用xshell工具直接输入IP和密码进行连接,xshell是windows系统经常使用的ssh连接工具,可自行下载安装,这里不提供下载链接,聪明的你一定会。注意:后续操作请保持Terminal窗口或xshell与弹性云服务器ECS的链接状态,以确保所有操作都执行在弹性云服务器ECS上。实验过程中请勿关闭该Terminal窗口或xshell,否则需要重复此步骤重新建立连接。4. 下载openGauss镜像并解压使用终端登录到弹性云服务器ECS上面,进入到/opt目录下,然后建立目录,ls命令显示一下是否创建成功cd /opt mkdir /opt/gauss ls进入到该目录下,使用wget命令下载openGauss镜像cd /opt/gauss wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/opengauss-install/openGauss-1.1.0-openEuler-64bit-all.tar.gz解压完整镜像:tar -zxvf openGauss-1.1.0-openEuler-64bit-all.tar.gz完成后,再解压OM工具包:tar -zxvf openGauss-1.1.0-openEuler-64bit-om.tar.gz5. 创建集群的xml配置文件5.1 准备稍后xml文件需要的配置信息,需要的是弹性云服务器ECS的名称和IP地址(私网地址)。可以通过hostname命令查询服务器名称,通过ifconfig查询私有IP地址。如下:5.2 创建配置文件进入到gauss目录下创建文件clusterconfig.xml文件,并将上面的配置信息复制粘贴到clusterconfig.xml中(记得按照5.1步骤填写你自己的弹性云服务器ECS的名称和IP地址),按Esc键,然后执行 :wq保存退出。<?xml version="1.0" encoding="UTF-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="mycluster" /> <!-- Need to be modified: Database node name (hostname) --> <PARAM name="nodeNames" value="ecs-opengauss" /> <PARAM name="gaussdbAppPath" value="/opt/install/app" /> <PARAM name="gaussdbLogPath" value="/opt/install/log/omm" /> <PARAM name="tmpMppdbPath" value="/opt/install/tmp" /> <PARAM name="gaussdbToolPath" value="/opt/install/om" /> <PARAM name="corePath" value="/opt/install/corefile" /> <!-- Need to be modified: Node IP addresses --> <PARAM name="backIp1s" value="192.168.0.1"/> </CLUSTER> <DEVICELIST> <DEVICE sn="100001"> <!-- Need to be modified: Database node name (hostname) --> <PARAM name="name" value="ecs-opengauss"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- Need to be modified: Node IP addresses --> <PARAM name="backIp1" value="192.168.0.1"/> <!-- Need to be modified: Node IP addresses --> <PARAM name="sshIp1" value="192.168.0.1"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15400"/> <PARAM name="dataNode1" value="/opt/install/data/dn"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> </DEVICELIST> </ROOT>将数据库节点名称和节点ip一一对应,填写为你自己ECS服务器的私网ip和名称6. 安装数据库安装数据库分为两步,预安装gs_preinstall和安装gs_install。预安装会创建工具、数据、日志文件等目录,并将相关工具写入到对应目录下。安装则会初始化数据目录,将数据库配置文件、数据文件写入。6.1 前置操作:(1) 需要修改当前软件包所在目录的权限,改为755,确保子用户可以访问。chmod -R 755 /opt/gauss/ chmod -R 755 /opt/gauss/script(2) 对于openEuler系统,需要修改系统的performance.sh文件中min_free_kbytes的配置。vi /etc/profile.d/performance.sh进入文件后,直接键盘输入:set nu,可查看行数。:set nu键盘输入“i”,用 # 号注释掉该文件第15行。按下电脑的“ESC”键进入指令模式,执行:wq保存并退出修改。重新设置下min_free_kbytes值:/sbin/sysctl -w vm.min_free_kbytes=767846(3) 执行下面命令安装libaio组件,openGauss数据库依赖系统的该组件。yum install libaio libaio-devel -y6.2 预安装gs_preinstal首先进入解压目录下的script目录里面cd /opt/gauss/script执行预安装命令:./gs_preinstall -U omm -G dbgrp -X /opt/gauss/clusterconfig.xml注意:预安装过程成会有两次交互输入,第一次Are you sure you want to create trust for root (yes/no)? ,请输入yes,并输入设定的弹性云服务器ECS的root密码,第二次Are you sure you want to create the user[omm] and create trust for it (yes/no)? 请输入yes,并输入omm用户密码。命令说明:数据库需要部署在omm子用户下,如果当前操作系统没有omm用户,则会进行创建用户和用户组,并需要输入为新建用户设置的密码。 如果存在omm用户,只需输入omm用户的密码即可。用户密码需要满复杂度要求,长度大于8字符且至少包含字母、数字、特殊字符中三种(需输入两次)。等待安装显示Preinstallation succeeded,即预安装成功。进行下一步安装操作。6.3 安装gs_install安装需要在子用户下进行,即上一步创建的omm用户。切换子用户:su - omm执行安装步骤:gs_install -X /opt/gauss/clusterconfig.xml安装过程中会提示输入数据库的密码并确认(需输入两次),请按照提示操作。输入数据库密码:自己设置的,等待安装完成,成功如下图所示:6.4 安装完成(1)安装完成后,查询数据库集群状态。gs_om -t status --detail如图,cluster_state为Normal,表明集群状态正常。(2) 使用gsql命令登录主机数据库gsql -d postgres -p 15400 -r登陆成功如下图所示登录到数据库客户端,先进行修改密码操作:alter role omm identified by '20000115yang**' replace '20000115yang*';20000115yang* 为安装时候输入的数据库密码,20000115yang**为新设置的密码完成后,便可以在数据库中进行创建表、插入数据等操作。示例:创建数据库并进入到mydb数据库中:create database mydb; \c mydb创建表create table stu(id int, name varchar, age int);查询表以及结构:\d \d stu插入数据,下图显示插入成功insert into stu values(1,'xiaoming', 18); insert into stu values(2,'yunqinanhai', 22);修改数据update stu set age=20 where name='yunqinanhai';删除数据delete from stu where id=1;查询所有数据select * from stu至此,基于华为云鲲鹏弹性云服务器ECS部署openGauss数据库整个流程到此结束,体验过程还是非常的流畅。总结在华为云的鲲鹏弹性云服务器ECS上成功部署了openGauss数据库,并使用openGauss的om工具成功安装openGauss单机数据库,登录到openGauss数据库进行简单的增删改查操作。整个流程下来非常的nice,希望在接下来的学习中,能了解更多的关于GaussDB的知识,并将其用到日常的开发中。下期见!感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。
  • [知识分享] jfinal中如何使用过滤器监控Druid监听SQL执行?
    【摘要】 问题起源最开始我想做的是通过拦截器拦截SQL执行,比如类似与PageHelper这种插件,通过拦截器或过滤器,手动修改SQL语句,以实现某些业务需求,比如执行分页,或者限制访问的数据权限等等。但是查到资料说过滤器不是干这个的,干这个的是数据库中间件干的事情,比如MyCat等。但是经过测试发现,过滤器至少可以监听每一个SQL的执行与返回结果。因此,将这一次探索过程记录下来。 配置过滤器在jf...本文分享自华为云社区《jfinal中使用过滤器监控Druid的SQL执行【五月07】》,作者:KevinQ 。问题起源最开始我想做的是通过拦截器拦截SQL执行,比如类似与PageHelper这种插件,通过拦截器或过滤器,手动修改SQL语句,以实现某些业务需求,比如执行分页,或者限制访问的数据权限等等。但是查到资料说过滤器不是干这个的,干这个的是数据库中间件干的事情,比如MyCat等。但是经过测试发现,过滤器至少可以监听每一个SQL的执行与返回结果。因此,将这一次探索过程记录下来。配置过滤器在jfinal的启动配置类中,有一个函数configPlugin(Plugins me)函数来配置插件,这个函数会在jfinal启动时调用,这个函数的参数是Plugins me,这个参数是一个插件管理器,可以通过这个插件管理器来添加插件。数据库插件Druid就是在该函数内添加的。public void configPlugin(Plugins me) { DruidPlugin druidPlugin = createDruidPlugin_holdoa(); druidPlugin.setPublicKey(p.get("publicKeydebug").trim()); wallFilter = new WallFilter(); wallFilter.setDbType("mysql"); druidPlugin_oa.addFilter(wallFilter); druidPlugin_oa.addFilter(new StatFilter()); me.add(druidPlugin); } 我们参考WallFilter以及StatFilter也创建一个过滤器类:import com.alibaba.druid.filter.FilterEventAdapter; public class DataScopeFilter extends FilterEventAdapter { } 我们发现FilterEventAdapter中的方法大概有这几个:public boolean statement_execute(FilterChain chain, StatementProxy statement, String sql) throws SQLException {...} protected void statementExecuteUpdateBefore(StatementProxy statement, String sql) {...} protected void statementExecuteUpdateAfter(StatementProxy statement, String sql, int updateCount) {...} protected void statementExecuteQueryBefore(StatementProxy statement, String sql) {...} protected void statementExecuteQueryAfter(StatementProxy statement, String sql, ResultSetProxy resultSet) {...} protected void statementExecuteBefore(StatementProxy statement, String sql) {...} protected void statementExecuteAfter(StatementProxy statement, String sql, boolean result) {...}我们复写这几个方法来看一下(排除Update方法,因为我们更关心查询语句)package xxxx.xxxx; import com.alibaba.druid.filter.FilterChain; import com.alibaba.druid.filter.FilterEventAdapter; import com.alibaba.druid.proxy.jdbc.ResultSetProxy; import com.alibaba.druid.proxy.jdbc.StatementProxy; import com.jfinal.kit.LogKit; import java.sql.SQLException; public class DataScopeFilter extends FilterEventAdapter { @Override public boolean statement_execute(FilterChain chain, StatementProxy statement, String sql) throws SQLException { LogKit.info("statement_execute"); return super.statement_execute(chain, statement, sql); } @Override protected void statementExecuteQueryBefore(StatementProxy statement, String sql) { LogKit.info("statementExecuteQueryBefore"); super.statementExecuteQueryBefore(statement, sql); } @Override protected void statementExecuteQueryAfter(StatementProxy statement, String sql, ResultSetProxy resultSet) { LogKit.info("statementExecuteQueryAfter"); super.statementExecuteQueryAfter(statement, sql, resultSet); } @Override protected void statementExecuteBefore(StatementProxy statement, String sql) { LogKit.info("statementExecuteBefore"); super.statementExecuteBefore(statement, sql); } @Override protected void statementExecuteAfter(StatementProxy statement, String sql, boolean result) { LogKit.info("statementExecuteAfter"); super.statementExecuteAfter(statement, sql, result); } @Override public ResultSetProxy statement_executeQuery(FilterChain chain, StatementProxy statement, String sql) throws SQLException { LogKit.info("statement_executeQuery"); return super.statement_executeQuery(chain, statement, sql); } } 然后再config配置类中添加过滤器:druidPlugin.addFilter(new DataScopeFilter());发起其执行顺序为:statement_executeQuery statementExecuteQueryBefore statementExecuteQueryAfter查看父级代码,发现其执行逻辑是,首先执行statement_executeQuery,然后因为调用父级的方法,而父级方法体为:@Override public ResultSetProxy statement_executeQuery(FilterChain chain, StatementProxy statement, String sql) throws SQLException { statementExecuteQueryBefore(statement, sql); try { ResultSetProxy resultSet = super.statement_executeQuery(chain, statement, sql); if (resultSet != null) { statementExecuteQueryAfter(statement, sql, resultSet); resultSetOpenAfter(resultSet); } return resultSet; } catch (SQLException error) { statement_executeErrorAfter(statement, sql, error); throw error; } catch (RuntimeException error) { statement_executeErrorAfter(statement, sql, error); throw error; } catch (Error error) { statement_executeErrorAfter(statement, sql, error); throw error; } }从而进一步触发statementExecuteQueryBefore方法与statementExecuteQueryAfter方法。因此我们,修改statement_executeQuery方法: @Override public ResultSetProxy statement_executeQuery(FilterChain chain, StatementProxy statement, String sql) throws SQLException { statementExecuteQueryBefore(statement, sql); ResultSetProxy result = chain.statement_executeQuery(statement, sql); statementExecuteQueryAfter(statement, sql, result); return result; }如此,便让输出结果为:statementExecuteQueryBefore statement_executeQuery statementExecuteQueryAfter我们可以在Before或者After方法中添加一些逻辑,比如:记录SQL的实际执行人,操作时间,请求执行SQL的接口。sql被声明为final类型发现执行的SQL在Druid中对应的类是:DruidPooledPreparedStatement,其类结构为:public class DruidPooledPreparedStatement extends DruidPooledStatement implements PreparedStatement { private final static Log LOG = LogFactory.getLog(DruidPooledPreparedStatement.class); private final PreparedStatementHolder holder; private final PreparedStatement stmt; private final String sql; .... }这也就以为着,该类一旦创建,SQL设置后就不允许再修改了,因此,我们需要修改SQL的话,就需要在prepared对象生成之前就修改到对应的执行SQL。在调试过程中,发现需要覆盖下面这个方法:@Override public PreparedStatementProxy connection_prepareStatement(FilterChain chain, ConnectionProxy connection, String sql) throws SQLException { // 可以达到修改SQL的目的 sql += " LIMIT 1"; PreparedStatementProxy statement = super.connection_prepareStatement(chain, connection, sql); statementPrepareAfter(statement); return statement; }我们可以在这里添加自定义的SQL修改逻辑,比如添加数据权限等等。
  • [新手课堂] MySQL,MVCC详解,快照读在RC、RR下的区别
    一、什么是MVCC我们在操作数据库的时候总是这四大类 读读 读写 写读 写写,读读肯定是没有任务数据问题的,但对事物有了解的同学就会知道,读写、写写操作很容易就会导致数据不一致。在此之前解决这类问题的常用方式就是加锁,听名字就知道这是个很复杂、很耗性能的操作,所以大神们不满足这个操作,从而在MySQL里面实现了MVCC。MVCC并不是MySQL独有的,它是一个理念,百度百科解释如下Multi-Version Concurrency Control 多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务内存。MVCC里面有一些关键词,理解这些关键词,你就明白了什么是MVCC。MVCC是解决读写、写读导致数据不一致的问题,写写问题还是需要加锁来解决。所以我们可以使用 MVCC + 锁(乐观锁/悲观锁)来解决全部的问题。二、当前读、快照读当前读就是读取最新的数据,为了保证读取的是最新且准确的数据,所以它在读取的时候会加锁,防止其它事物操作。快照读是不加锁的方式,当一个事物要操作数据库的时候,会在这个事物的基础上形成一个快照,其它的操作就读取这个快照。MVCC就是基于快照读来实现的,在MySQL里面的快照读是基于这样几个关键点来实现的• 三个隐藏参数 (DB_ROW_ID 隐藏主键id、DB_ROLL_PTR 回滚指针、DB_TRX_ID 事物id)• undo log 日志• read view三、隐藏字段假如我们有一张表,里面有两个字段,name、age,但实际上我们表里的数据是这样的3-1、隐藏主键6byte,隐含的自增ID(隐藏主键),如果数据表没有主键,InnoDB会自动以DB_ROW_ID产生一个聚簇索引聚簇索引:数据存储和索引是存在一起的,逻辑上和物理上都是一起的,一个表只能有一个聚簇索引。注:理解聚簇索引可以很好的理解MySQL的索引规则,感兴趣的可以看看这个 MySQL索引详解 3-2、事物id记录这条记录最后一次操作的事物id3-3、回滚指针回滚指针,指向这条记录的上一个版本(存储于rollback segment里),用于配合下面的 undo log。四、undo logundo log 日志分为两种• insert undo log 数据库在插入数据的时候产生,只有在当前事物回滚的时候才有用,所以在当前事物结束的时候它就没用了,就会被删除。• update undo log 数据库在更新、删除的时候产生,除了当前事物会使用,在快照读的时候也会使用,所以不能随便删除,只有在快速读或事务回滚不涉及该日志时,对应的日志才会被purge线程统一清除假设我们的隐藏主键是从1、2、3…, 事物主键、回滚指针也是这样生成的 (事实上不是这样的规则),那么我们对上面的表进行操作,将会形成如下的链式结构。插入数据修改张三为李四修改年纪为25注:这里的指针是指向这条数据,而不是里面的 主键。五、Read View什么是读视图呢?数据库的操作都是多个事物同时进行的,有读有写。假如当前有两个事物,A事物读取,B事物正在更新数据。在A事物开始的时候,就形成当前数据库的一个快照,记录并维护系统当前活跃事务的ID。read view 主要是用来做可见性判断的,它会判断每条记录的的数据,这条数据可能是真实的数据,也可能是undo log 中的数据。read view 用一个可见性的算法,来判断当前是读取真实的数据,还是undo log的数据。这里可以简单理解read view 内部维护了一个事物id列表,里面有最大值和最小值,可以判断其它事物的id是否在这个可见范围内。N、其它N-1、快照读在RC和RR下的区别• RC (read-committed)读已提交, 可能会导致 不可重复读、幻读• RR (repeatable-read)可重复读,可能会导致 不可重复读幻读 : 事物A查询数据库查询出来了20条数据,然后事物B删除了2条数据,这时候事物A再去查询发现只有18条了,从而产生了幻觉。我们知道在RR级别下面不会产生幻读,之所以不会产生幻读,是快照读在RC和RR下的生成的策略不一样。RC隔离级别下,是每个快照读都会生成并获取最新的Read View;而在RR隔离级别下,则是同一个事务中的第一个快照读才会创建Read View, 之后的快照读获取的都是同一个Read View。
  • [新手课堂] 好课推荐 | 六大模块,带你快速入门openGauss 数据库
    HCIA-openGauss V1.0 华为认证openGauss数据库工程师在线课程又是什么呢?该课程定位于培养基于openGauss数据库具备专业知识和技能水平的数据库工程师。 通过该课程的学习,您将掌握openGauss数据库基础理论、安装部署、体系结构及关键特性、SQL语法、数据库及对象管理、数据库安全以及了解华为云数据库GaussDB(for openGauss)等能力,能够胜任openGauss数据库工程师岗位。 六大课程模块 全方面构建openGauss数据库能力 小白都能学的免费课程! 学练考一站式体验 越说越令人好奇了呢 赶紧跟着小编一起来看看 有哪些课程内容吧! No.1 “openGauss概述”  数据介绍openGauss简介 openGauss技术指标基本功能介绍No.2 “数据库安装部署” openGauss数据库安装数据库连接和认证工具介绍数据库卸载No.3 “体系结构及关键特性” 体系架构部署方案典型组网关键特性No.4 “数据库及对象管理”  openGauss逻辑结构 存储引擎选择 创建和管理表空间 用户及角色 系统表和系统视图  导入导出数据 高危操作 No.5 “SQL基础” SQL语法入门SQL语法分类操作符和常用函数No.6 “华为云数据库GaussDB(for openGauss)” 云数据库GaussDB(for openGauss)简介GaussDB(for openGauss)企业级特性健全的工具与服务化能力应用场景及案例推荐:HCIA-openGauss V1.0 认证完成openGauss数据库入门课程,如果你对数据库技术感兴趣,强烈推荐你学习并完成HCIA-openGauss V1.0认证,助你技术傍身,职业进阶。HCIA-openGauss V1.0认证简介:华为认证HCIA-openGauss V1.0考试包含openGauss概述、数据库安装部署、体系结构及关键特性、数据库及对象管理、SQL基础、云数据库GaussDB(for openGauss)等内容HCIA-openGauss V1.0认证笔试考试预约网址:https://www.pearsonvue.com.cn/Huawei。
  • [技术干货] 赛迪顾问:中国数据库市场最新研究报告
    近日,知名咨询机构「赛迪顾问」发布了一份关于数据库的重磅报告:现阶段,国家对核心领域关键技术的重视已经到了前所未有的高度,数据库作为IT行业重要的基础软件之一,是组织、存储、管理、分析数据的系统,在信息系统的软件和硬件之间起到承上启下的作用,因此数据库是核心领域的关键技术之一,是信息系统建设的核心基础设施之一。数据库管理系统分类标准比较多,按照数据类型分类,可分为关系型数据库和非关系型数据库;按照部署方式分类,可分为主备集中式和分布式;按照业务类型分类,可分为事务型数据库和分析型数据库。2021年,中国数据库管理系统市场保持快速增长,规模达到223.5亿元。集中式关系型数据库仍然为市场的主流,但是云数据库及分布式数据库也成为众多厂商研发的重点。云计算的快速发展带动了云数据库市场需求,而对于海量数据、高并发的应用场景,则带动了分布式数据库的市场需求。从数据库部署方式来看,现阶段数据库部署方式主要为两种,一种是公有云部署,另一种是本地部署,其中也包括私有云部署。公有云部署因为存在与云产品的捆绑销售,因此以云厂商自身数据库产品为主,而本地部署则不同,数据库厂商基本都能满足要求,竞争较为激烈。2021年,中国数据库市场产品部署方式以公有云部署为主。但在关键应用领域金融、政府、运营商等行业中,本地部署(含私有云)的优势较为明显,达到68.5%,成为客户的首选。从产品技术路线来看,近年来,开源数据库软件技术不断成熟,能够基本满足部分重点行业业务需求,同时其低廉的使用成本能够大幅降低企业快速扩张带来的IT成本。因此,过去几年开源数据库软件在众多行业取得应用,市场占有率不断提升,2021年在中国数据库市场中占有率达到65.0%。MySQL、PostgreSQL、MongoDB和Redis是当前最受欢迎的开源数据库。MySQL数据库凭借其稳定性能、低成本、高可用、成熟生态等优势,装机量领先,达到42.6%。从区域结构来看,2021年,华东、华北和中南三大地区是中国数据库市场发展最为领先的区域,市场份额分别达到26.8%、25.8%和24.8%,但市场增速较西部地区呈现减慢的趋势。随着东数西算工程带来的数据中心在西部地区建设需求,西南、西北地区数据库市场规模呈现高速增长,市场份额进一步提升。从行业结构来看,2021年金融行业信息化建设加速,是销售额占比最高的市场。受益于政府信息化建设及信息技术应用创新在政府市场的率先推广,政府市场成为销售额占比第二。互联网、运营商、能源也是数据库主要市场。另外,交通、制造行业市场的增速也均高于市场平均水平,主要源于这些行业数字化转型的快速展开,带动了市场需求的增加。总体来看,现阶段数据库市场呈现出五大特点:一是国家政策有力推动数据库发展;二是新兴技术不断成熟,数据库市场发生变革;三是企业数量增多,市场竞争加剧;四是开源软件成为推动数据库技术发展的重要动力;五是事务型分布式数据库在金融、运营商等核心应用领域需求较大。报告还针对金融、政府、运营商及能源四个重点行业,从市场规模、市场机遇及典型案例三个维度进行了重点分析。2021年,中国金融行业数据库市场规模快速增长,达到45.2亿元。金融行业对数据安全性要求较高,因此对数据库要求较高。近几年,随着金融信息化不断推进,金融行业对于IT投资不断加大,但数据库市场需要经过一段时间的技术及产品选型,因此会在未来几年释放更大市场空间。政府行业近年来数据库需求较大,且增长率远高于其他行业。2021年中国政府行业数据库市场规模达到41.1亿元。政府市场快速增长,一方面是由于近几年政务信息化的全面开展,另一方面是信息技术应用创新在政府行业的率先推广。政府市场也成为了推动本土数据库厂商快速发展的重要市场。2021年中国运营商行业数据库市场规模达到19.9亿元。运营商行业每年有大量的数据库需求,但在过去一段时间,开源软件MySQL的使用占比较高。随着信息技术应用创新及运营商行业信息化进行,行业内龙头企业加快与本土厂商合作。2021年中国能源行业数据库市场受益于信息化建设及存量更换,市场规模高速增长,达到16.1亿元。能源行业包括电力、石油石化、煤炭、水利等领域。电力和石油石化每年会有大量的数据库需求,且业务要求相对较低,因此本土厂商凭借良好的服务及相对低的成本,获得了一定的市场份额。赛迪顾问选取了包括万里数据库在内的多家本土数据库厂商,从主打产品及架构、技术路线、重点行业、典型项目及优劣势等方面进行了全方位的对比分析。本次报告通过指标体系建立模型后对企业进行科学评估,最后得出“十四五”关键应用领域之数据库技术竞争力四象限图。本次评价模型采用竞争力四象限图模型,从技术先进度和产品安全性两个维度对企业展开评估。对于未来趋势,赛迪顾问预测,在“十四五”时期,中国数据库市场仍将保持高速增长。2022年由于新冠肺炎疫情对地方经济的冲击,政府及央国企会适当缩减相关预算,造成市场增长较缓。但政务信息化及行业信息化仍是重要方向,因此需求会在新冠肺炎疫情受到控制之后逐步释放出来。除此之外,新基建、东数西算等国家级工程也会促进数据库市场规模不断增长。预计到2025年,中国数据库市场规模将达到600.6亿元。行业分布来看,“十四五”期间,金融、政府仍然是数据库最主要的两大市场。政府领域数字政务的推进会带来一定的市场空间,预计到2025年,政府市场规模将达到121.9亿元。金融领域由于业务类型及客户需求的变化,信息化建设会加速推进,预计到2025年市场规模将达到153.7亿元。同时,本报告指出了数据库市场未来五大发展趋势。一是基础软件的安全性愈发受到重点行业用户重视;二是私有云本地化部署会成为关键基础设施领域的主要方式;三是开源软件将继续推动数据库技术发展;四是混合事务分析管理架构将逐步推广;五是本土IT生态建设加速,市场渗透率不断提升。在报告的最后,赛迪顾问对厂商、用户及投资机构提出了一些发展建议。对厂商而言,要重视研发投入,加快产品与新兴技术融合,同时也要不断提高专业化服务水平,重视实施与交付能力的提升;对用户来说,综合考虑集中式数据库与分布式数据库,同时在选择产品时要重视专业化服务能力及成功案例可移植性;对投资机构,要重点关注云数据库及分布式数据库市场。来源“赛迪顾问”
  • [技术干货] OLAP:实现高效BI分析的必备技术
    文中部分内容参考了朱凯老师的《ClickHouse原理解析》。01、BI系统的演进(1)传统BI系统上个世纪,IT技术迅猛发展,主要特征就是线下工作的线上化。各种各样的IT系统(比如ERP、CRM等)在各个行业落地实施。相应的,我们把这类系统称之为联机事务处理(OLTP)系统。但是在企业的运行过程中,不只是有流程审批这些工作,还有很多报表统计、分析决策相关的诉求。但是早期的IT系统的数据各自独立,互相割裂,给分析带来了极大的困难。为了解决这一问题,人们提出了数据仓库的概念,把数据集中在一起,打通隔阂,并通过分层的方式处理数据(关于数据仓库,可以回顾《数据仓库基础知识》,数据仓库的核心思路维度建模,参考文章《维度建模》。)。逐步的,在数仓基础上提供数据分析的系统慢慢发展起来。直到90年代,BI系统的概念提出来,专门指代这类分析系统。相对于OLTP系统,这类BI系统被称为联机分析(OLAP)系统。传统BI系统解决了很多问题,但是存在的瓶颈也是很多的。比如数据的分析效率底下、研发迭代缓慢等,都对应用效果产生了负面影响。(2)现代BI系统最近几年,SaaS模式的兴起,为BI系统带来了新的发展机遇。例如我们熟知的GA、神策分析、友盟分析等,采取的服务模式都是SaaS化。很多中小型公司的BI系统不再依赖于数仓的搭建。而现代BI系统背后的OLAP技术也在不断发展。02、什么是OLAP下面我们详细聊聊OLAP。OLAP即联机分析,又可以称为多维分析,是关系型数据库之父Edgar Frank于1993年提出的概念。它指的是通过多种不同的维度审视数据,进行深层次分析。主要的操作包括下钻、上卷、切片、切块等。参考Excel的数据透视表的功能,大家就好理解这些操作了。数据透视表实现了对原始数据的各种聚合、分解、切片等操作,OLAP也是如此。可以把OLAP理解成对公司数据库建立一个大的透视表,通过这个透视表进行各种维度的分析,这就是OLAP。说白了,OLAP是用于我们进行分析的引擎。在很多公司的数据架构中,OLAP作为顶层分析应用层与数据存储层的中间处理层。其核心解决的是和数据分析相关的需求。常见的OLAP架构可以分为三类:(1)ROLAP第一种架构称为ROLAP(Relational OLAP),即关系型OLAP。顾名思义,是直接使用关系模型进行构建的。因此,多维分析的操作是可以直接转换成SQL进行查询的。这种架构对数据的实时处理能力要求很高。像ClickHouse、Impala、Presto都是典型的RLOAP代表。(2)MOLAP第二种架构称为MOLAP(Multidimensional OLAP),即多维型OLAP。MOLAP的出现是为了缓解ROLAP的性能问题。其核心思路是对数据预先聚合处理,以存储空间换查询时间的减少。典型的MOLAP包括Kylin、Druid等。容易想到,如果维度较多,需要存储的数据量级会有指数级地上涨。一张千万级别的数据表,可能膨胀到需要存储亿级别的体量。另外,由于需要进行预计算,MOLAP的数据会有一定的滞后性,不能实时进行数据分析。并且由于只保留了聚合后的结果数据,无法查询明细数据。(3)HOLAP第三类架构称为HOLAP(Hybrid OLAP),即混合架构OLAP。这种架构可以理解成ROLAP和MOLAP的集成。03、OLAP实现技术的演进前面我们也陆续介绍了OLAP相关的一些技术。下面我们简单聊聊OLAP技术的演进过程。(1)传统关系型数据库阶段第一个阶段称为传统的关系型数据库阶段。在这个阶段中,OLAP主要是以Oracle、MySQL等关系型数据库实现。在ROLAP架构下,直接使用这些数据库作为存储和计算的载体;在MOLAP架构下,则借助物化视图的形式实现数据立方体。该阶段中,无论是ROLAP还是MOLAP,当数据体量大、维度数目多的时候,都存在严重的性能问题,甚至存在根本查不出结果的情况。(2)大数据技术阶段第二个极端可以称为大数据阶段。在这个阶段,主要依赖Hive等大数据技术进行实现。以ROLAP为例,传统的关系型数据库被Hive和SparkSQL这类新型技术所取代。相比传统的数据库而言,面向海量数据的处理性能明显提升了很多。但是在提供实时的在线查询服务时,仍然需要几十秒甚至数分钟才能返回。(3)最新阶段最近几年,一款新的OLAP解决方案ClickHouse走进了大家的视野。其优越的查询计算性能让人惊叹。头条、阿里、腾讯等大厂也纷纷进行使用。ClickHouse是由来自俄罗斯的Yandex公司研发的(Yandex类似于中国的百度,是俄罗斯的本土搜索引擎,占据俄国47%的搜索市场),是一款开源软件。其他一些常见的OLAP技术方案对比如下,供参考。不同的技术,也都存在各自的优点和缺点。在目前阶段,没有哪种OLAP技术是万能的灵丹妙药,可以解决所有问题。大家在技术选型时,需要结合自己的业务数据特点,进行选择。来源:ITPUB
  • [Hive] DBService数据库omm用户密码找不到怎么办
    DBService数据库omm用户密码找不到怎么办,登录到DBServer主节点上并切换到omm用户,source环境变量后,用默认密码登录数据库,提示密码错误。
  • [二次开发] hive元数据库连接
    (1)在hive配置中查到元数据密码,但是是加密状态的,请问怎么获取或者解密密码?(2)元数据库显示的连接地址是浮动IP,想在本地用客户端的方式连接数据库可不可行?(3)如果找不到解密的方法,能不能通过授权的方式创建新的连接账号连接数据库?
  • [技术干货] 【重磅】2022华为云云原生数据库白皮书亮相!
    随着信息技术的飞速发展以及智能终端的不断普及,全球数据量呈现爆发式增长,数据库作为支撑数据处理的核心技术需要不断创新变革。云原生数据库能够充分结合云基础设施的优势能力和特点构建数据处理和管理能力,使得企业数据管理模式迈入新台阶,高效、经济、安全成为云原生数据库受到热捧的重要原因。本报告首先阐述了云原生数据库的发展趋势与现状,之后从云原生数据库应用场景、技术架构、关键技术以及不同场景下的生产实践详细地介绍了云原生数据库的技术模式,最后通过结合当前应用现状及问题,指明了未来云原生数据库的技术方向,力求梳理云原生数据库全流程概念及方法。了解报告详情,请点击文末附件《华为云云原生数据库白皮书-电子版》,欢迎大家下载~
  • [专题汇总] 华为数据库技术干货及问题汇总【省心省时一贴看完!!!】
    本文整理了包括了大部分华为云数据库使用过程中所遇到的问题贴,全部都是已经有解决方案的问题,以及干货汇总。其中也有一些伙伴对于华为数据库的一种设想以及后续发展的疑问。希望可以给小伙伴在数据库的使用过程中带来一定的帮助 。一,问题贴汇总1.有了华为数据库后请问现在还有必要学习oracle吗https://bbs.huaweicloud.com/forum/thread-124985-1-1.html2.如何将大批量gaussdb数据迁移到hivehttps://bbs.huaweicloud.com/forum/thread-126745-1-1.html3.图数据库---华为云何时才能使用https://bbs.huaweicloud.com/forum/thread-186341-1-1.html4.MySQL本地数据库迁移----DRS测试遇到问题https://bbs.huaweicloud.com/forum/thread-52103-1-1.html5.共享数据库,独立 Schema,为什么在出现故障,数据恢复比较困难,什么情况下恢复数据库将牵涉到其他租户的数据https://bbs.huaweicloud.com/forum/thread-184547-1-1.html6.opengauss数据库中MOT服务器优化配置https://bbs.huaweicloud.com/forum/thread-175436-1-1.html7.数据库做实验遇到小问题 请教下(命令行)https://bbs.huaweicloud.com/forum/thread-71028-1-1.html8.GaussDB100数据库迁移https://bbs.huaweicloud.com/forum/thread-105120-1-1.html9.TiDB, OceanBase 和PolarDB都纷纷扛起分布式HTAP的大旗,华为有何应对?https://bbs.huaweicloud.com/forum/thread-132766-1-1.html10.云数据库有没有什么课程或者活动之类的?https://bbs.huaweicloud.com/forum/thread-72811-1-1.html11.请问GaussDB T 如何使用连接池连接数据库?https://bbs.huaweicloud.com/forum/thread-87617-1-1.html12.Gauss DB 中文字段排序问题https://bbs.huaweicloud.com/forum/thread-190367-1-1.html13.OpenGauss数据库源代码下载https://bbs.huaweicloud.com/forum/thread-110469-1-1.html14.GaussDB(for Redis)测试时发现的两个bughttps://bbs.huaweicloud.com/forum/thread-94543-1-1.html15.能问下openGaussDB公测什么时候完毕,什么时候能上线使用https://bbs.huaweicloud.com/forum/thread-92304-1-1.html二、干货汇总1.关系型数据库主流应用场景https://bbs.huaweicloud.com/forum/thread-191821-1-1.html2.关系型数据库架构介绍https://bbs.huaweicloud.com/forum/thread-191827-1-1.html3.传统数据库vs云数据库https://bbs.huaweicloud.com/forum/thread-191829-1-1.html4.arm架构服务器安装SQL SERVERhttps://bbs.huaweicloud.com/forum/thread-190132-1-1.html5.华为云GaussDB(for Redis)揭秘第19期:GaussDB(for Redis)全面对比Codishttps://bbs.huaweicloud.com/forum/thread-192577-1-1.html6.华为云GaussDB(for Influx)揭密第八期:GaussDB(for Influx)与开源企业版性能对比https://bbs.huaweicloud.com/forum/thread-187406-1-1.html7.EF Core 实体类型https://bbs.huaweicloud.com/forum/thread-186712-1-1.html8.redis 主从复制https://bbs.huaweicloud.com/forum/thread-188358-1-1.html9.案例:创建OBS外表后,将数据导入外表报错Failed to open file region_maphttps://bbs.huaweicloud.com/forum/thread-187249-1-1.html10.华为云GaussDB(for Influx)揭密第六期——数据分级存储https://bbs.huaweicloud.com/forum/thread-185627-1-1.html