记得几个月前参加了首次openGauss的OGCA认证学习,在浏览墨天轮网站时发现了8小时玩转openGauss训练营(第二期),立刻进行了报名,经过2个下午的培训学习,对OpenGauss有了更广泛的了解,收获很多。通过今天课程,复习了openGauss的体系架构,主备HA集群部署,switch over和fail over,同时了解到一些新的知识,例如WDR报告结构、openGauss的AI特性、内存优化表,日常运行中如何通过WDR报告来发现行性能瓶颈,发生性能问题时用哪些方法来排除解决。
以下是我在学习过程中印象比较深刻的部分:
一、存储引擎方面:
openGauss存储引擎是可插拔、自组装的,支持多个存储引擎来满足不同场景的业务诉求,目前支持行存储引擎、列存储引擎和内存引擎。
(1)行存储引擎。主要面向OLTP(Online Transaction Processing,在线交易处理)场景设计,例如订货发货,银行交易系统。
(2)列存储引擎。主要面向OLAP(Online Analytical Processing,联机分析处理)场景设计,例如数据统计报表分析。
(3)内存引擎。主要面向极致性能场景设计,例如银行风控场景。
二、部署方式:
openGauss支持单机、双击、一主多备和支持两地三中心的部署方式。
三、SQL命令的处理流程:
SQL命令的处理流程大致分为四个部分:SQL解析、查询优化、查询执行、存储引擎。
(1)在SQL解析方面:包括词法分析、语法分析和语义分析。
在查询执行方面:其逻辑控制主要是围绕着关系运算来实现的,包含以下几个算子:扫描算子、控制算子、物化算子、连接算子。
(2)最后通过数据的读取/处理,分配事务,产生日志,进行主备的复制,最终落地到存储引擎中。
由于我本身是从事Oracle运维,RAC、DG、OGG接触的比较多,对opengauss、主备HA搭建、主备HA日常管理的学习后,理解了opengauss主备HA同步和异步HA的原理及主备过程中各线程之间的交互流程,并结合HA同步、异步的比较,更是把两者之间的优缺点,适配环境有了充分的了解。
同步复制(默认备机日志落盘后主机提交事务,强同步模式,有性能损耗,可靠性高)
异步复制(主机日志落盘后即可提交事务,性能高,可靠性差)
switchover && failover
• Switchover:主机运行正常,因为维护等需求进行switchover操作,switchover之后主 机降备,备机升主并开始接管业务,这些操作需要主机和备机之间交互才能完成。
• Failover:主机故障后,备机需要进行failover操作,failover后备机升主,开始接管业务;
failover的过程是备机独立完成的,不需要和主机进行交互。
failover切换流程
角色切换操作
1. switchover切换分为主机降备和备机升主两个步骤,failover就是备机升主。
2. 主机降备的流程和停止数据库以及数据库进程异常退出处理流程相类似。和停止数据库流程相类 似的地方是降备需要退出除postmaster以外的其他线程,和数据库线程异常退出处理流程相类似的 地方是降备需要重置共享内存。
3. 备机升主只需要数据库恢复线程退出,立刻就会进入主机模式。
4. 主机降备完成需要保证主机上产生的所有事务日志都传输到了所有备机。
在本次学习之后也再一次认识到了国产数据库的强大,从以往的Oracle强大到现在也有国产数据库能独当一面,契合当前的生态环境,不再是需要一面专精的人还是多方面全面了解的,在后面我会继续学习国产数据库,也希望国产数据库能越做越大。也希望在不久的将来自己在工作中能越来越多的用到我们自己的国产数据库。