openGauss训练营第二期结营!一百个Q&A和PPT合辑大放送!

核心提示2021年9月11-12日,由openGauss内核项目研发经理、openGauss社区Maintainer、openGauss布道师朱金伟老师领衔,联合openGauss社区、Gauss松鼠会、云和恩墨的专家们组织的第二期“8小时玩转op

2021年9月11-12日,由openGauss内核项目研发经理、openGauss社区Maintainer、openGauss布道师朱金伟老师领衔,联合openGauss社区、Gauss松鼠会、云和恩墨的专家们组织的第二期“8小时玩转openGauss训练营”活动通过线上直播的方式举办,获得圆满成功。本次参与学员超千人,最终有105人完成各项任务,顺利结营!

在为期2天的8小时学习过程中,9位主讲老师为大家带来了最精华、最实用、最高效的openGauss课程,带领学员们快速掌握了openGauss的核心架构及特色功能。学员们学习的热情格外高昂,在直播过程中积极提问,与讲师互动。小编精选了训练营中的100个问答请老师进行回答,并为大家放送,相信可以为大家在学习openGauss的过程中解答诸多疑惑。

Q&A

1、openGauss的主备与Oracle的Golden Gate相比有哪些优越性?

答:openGauss的主备属于物理复制,应该是和Oracle的ADG很像。关于性能,目前并没有一个统一的资料。

目前我个人能看到的是,备机的日志流并行解码、读取和事务回放,保证极大化日志回放吞吐,功能切分服务化、流水线协同,减少串行度。批处理化回放,消除单条回放反复获取/释放锁的并发控制和IO开销。Block级物理并行,去除按表切割并行机制,Locality更好、并行度更高。

在60%负载、70W+tpmc的条件下,openGauss的极致RTO可以实现备机10秒内接管主机业务,这一点在业界是比较优秀的。

2、openGauss有类似于MySQL的MGR或PXC结构的多主模式吗?

答:开源的openGauss数据库目前官方并没有发布MGR和PXC这类多主模式的插件,这些可以在合作伙伴发行的数据库版本中寻找,如MogDB等。

3、openGauss在逻辑复制上有没有增强?物理复制时可以级联复制吗?

答:openGauss提供逻辑解码功能,通过反解xlog的方式生成逻辑日志。目标数据库解析逻辑日志以实时进行数据复制。逻辑复制降低了对目标数据库的形态限制,支持异构数据库、同构异形数据库对数据的同步,支持目标库进行数据同步期间的数据可读写,数据同步时延低。

关于物理复制的主备复制目前是支持级联复制的。

4、一主一备同步方式会不会因为备机故障,导致主机的事务无法继续进行呢?

答:会的,同步复制必然会引起备机故障导致的主机业务挂起的现象。所以,建议开启最大可用模式,来避免这个问题。

5、在Dispatcher线程内,如何协调主机和备机各自的任务,是否是异步处理上述任务,主机和备机同时发出写操作时,是否会发生冲突?

答:备机是只读状态,它的写也是读取主机发送过来的WAL日志进行回放,Dispatcher线程主要是在备机进行并行日志回放时起作用,负责并行回放时的事务管理调度和数据页写入。

主机的写是业务数据的写,备机的写只是WAL日志的回放,不存在冲突。

6、进程在恢复的时候是以页为单位来处理的吗?

答:当开启极致RTO的时候,线程是以页为单位进行恢复的,但此时,备机不能提供数据读取服务,因为极致RTO不支持Hot Standby模式和主备从模式。

7、openGuess的主从架构可以实现自动切换吗?

答:开源的openGauss官方目前并没有发布自动切换的相关组件,这个可以参考合作伙伴的发行版本,如云和恩墨的MogDB等。

8、在实际的应用中,同步复制方法会出现事务提交延迟的现象吗?

答:同步提交的原理默认是当备库写入WAL日志后,主库就可以提交事务,当主库业务量大的时候,理论上是会出现备库事务延迟提交的现象。详见参数“synchronous_commit”,如果参数值设置为“remote_apply”,则主库提交需要等待备库应用完毕才可以,这样就不会出现备库事务延迟提交的问题。

9、多站点间有没有同一个实例多写的场景?

答:开源的openGauss目前是单机版本,支持的是单机主备部署,备机只能提供读特性。

目前开源的openGauss官方还没有发布多站点多写这个组件。

10、主备同步复制环境中,如果无法联系到备库,主库会怎么处理以保证数据的一致性?

答:主备同步复制环境中,如果备机连接丢失,主机事务也会挂起,如果使用了最大可用模式,则会默认改为异步模式。

无论是同步复制还是异步复制,由于备机已经故障,所以不存在主备数据的一致性这个说法了。但当备机恢复后,备机的第一次数据同步,会告诉主机自己所需的起始LSN位置,同步所有差异的WAL日志,最终保持同步。

11、多站点做到多写双活会不会有竞争力?

答:是的,多站点双活在某些业务应用场景下肯定是有一定竞争力优势的,但对于高负载业务场景,考虑到数据的一致性和数据同步的性能问题,往往集群节点也不会太多。

12、可不可以通过shard方式做到全局双活多写数据库?

答:可以,openGauss来源于PG-XC项目,这个项目就是使用shard方式实现的分布式数据库,实现多写多副本,后来应用到了华为云的GaussDB,这个您可以参考一下华为云GaussDB的文档介绍。

13、openGauss支持级联备吗?备机会回放还未提交的事务日志吗?

答:openGauss支持级联备机,未提交的事务日志,备机不回放。

14、openGauss的主备集群的读写分离和负载均衡是什么组件在负责?

答:开源的openGauss官方还没有发布相应的读写分离组件和负载均衡组件,但作为开源数据库,类似Keepalived+HAProxy这样的组合您可以尝试。另外,请关注openGauss社区合作伙伴发行的数据库版本,可能有相应的产品组件。

15、openGauss的主备HA,是自身组件还是外加插件实现的?

答:openGauss的主备复制是自身组件实现的功能。

16、WalReceiver消息队列的异常处理时怎么考虑的?

答:Walreceiver出现异常之后,会自动退出,然后重新连接主机继续日志同步,若出现故障场景,Walreceiver一直无法正常从主机同步数据,则需要触发备机重建。

17、数据回放是指的是从日志里恢复数据吗?inode个数是强制要求么?

答:是的,数据回放可以理解为读取WAL日志进行数据恢复;数据库安装对文件系统的inode个数并没有强制要求。

18、openGuass是否有事务槽的概念,如果有事务槽,如果准备切换后事务槽是否也可以自动切换?

答:ustore有事务槽这个概念,astore没有这个概念。openGauss是单机,切换后一切事务都是从头开始,没有什么切换的说法。

19、openEuler和CentOS推荐优先选哪个?

答:通常情况下,建议使用openEuler,openGauss在openEuler操作系统的测试和验证更加充分,而且openGauss支持openEuler的ARM版本,可以充分发挥NUMA特性。

20、对于大事务有没有类似于在MySQL中,大事务阻塞DDL操作,会出现复制延迟的概念?

答:出现大事务,数据库的xlog日志会同步到备机,但是在备机上并不能马上看到该事务信息,需等到主机事务提交日志并在备机回放后可见。

21、openGuass有没有引入复制槽机制,如果没有,那么怎么防止异步复制中的大事务可能使主从断开的问题?

答:openGauss引入了复制槽机制。

22删

23、openGause有什么好的备份工具吗?

答:openGauss的物理备份工具有:gs_basebackup、gs_probackup等;

openGauss的逻辑备份工具有:gs_dump、gs_dumpall等。

24、安装主机备机,实际做的时候需要两台机器吗?

答:不是必须的,但主备安装部署建议至少2台机器,如果是同一台机器,则无法使用OM工具进行主备部署,需要手动配置主备参数。

25、openGauss的HA是否类似Oracle的ADG,可以自由计划性切换switchover和故障切换failover?

答:openGauss的主备可以使用gs_ctl命令调用switchover和failover实现主备角色切换。

26、openGuass在逻辑复制上有没有增强?物理复制时可以级联复制吗?这个安装的脚本在哪里下载?

答:openGauss提供逻辑解码功能,通过反解xlog的方式生成逻辑日志。目标数据库解析逻辑日志以实时进行数据复制。逻辑复制降低了对目标数据库的形态限制,支持异构数据库、同构异形数据库对数据的同步,支持目标库进行数据同步期间的数据可读写,数据同步时延低。

关于物理复制的主备复制目前是支持级联复制的。

安装脚本可以参考墨天轮,对单机安装的脚本稍微进行一下修改就可以了。

27、高可用中,主备通信异常时,备节点如何自动从同步变为异步?什么情况下算异常,并且删除与目标待删节点的SSH互信。然后才在待删除节点上执行gs_uninstall和gs_postuninstall脚本,并且一定要配置-L参数仅卸载本节点的数据库即可。

32、数据库expansion的时候是在线做还是离线做?

答:expansion可以在线做扩容。

33、主备库正常使用中,如果需修改备库的同步日志目录时,主备库需做什么操作?

答:A. 开启最大高可用;B. 停掉备库;C. 更改xlog目录;D. 启动备库;E. 关闭最大高可用。

34、openGauss有类似RAC这种可以多个节点读写的高可用架构吗?

答:开源的openGauss官方目前并没有发布类似Oracle RAC这种多实例架构,类似的架构openGauss它更倾向于PG-XC这种基于shard-nothing架构的分布式数据库。面对如今海量数据,超高并发等诸多场景,openGauss将目光也转向了分布式解决方案,与ShardingSphere一起构建全栈开源分布式解决方案,该方案运用ShardingSphere-Proxy强劲的分布式能力,通过Kubernetes管理集群,Prometheus监控集群状态,从而构建全栈开源的分布式解决方案。目前openGauss分布式解决方案正处于众测阶段,欢迎广大开发者参与其中,集思广益,共同打造强劲的分布式解决方案。

35、分离环境的source环境变量文件,如果误删了,有什么操作可以恢复?

答:正在运行的数据库如果被误删掉了,只能尝试操作系统层面的恢复,而且完全恢复的几率并不高。作为DBA,还是要做好备份。

36、WDR主要组件WDR Reporter的Summary和Detail级别诊断报告,分析性能数据方面有什么区别?

答:Summary更加多的是一个概述信息,比如发现最近写IO较高,有可能负载产生了变化,可以在对比异常和正常的Summary报告,其中有数据的写入量的信息,如果发现确实是有写入的差异,再可以比较Detail的报告,即可以定位是不是有SQL信息发生了改变,两者多是结合的关系。

37、备库是否有快照数据库功能?是否可以切回备库状态?

答:当前WDR Snapshot仅在主机上面触发,然后同用户表一样,会同步至备机,相当于主机和备机数据是一样的,但备机本身不会自动触发WDR Snapshot。

38、WDR和Oracle的AWR有什么异同?

答:本身都是性能诊断报告,而且内部的信息会有一些交集;因为我们还有分布式的版本,所以最大的区别在于我们是分为Cluster和Node级别的报告,Cluster相当于是集群级别的报告,Node是具体的结点级别的报告。

39、instance_time里value值的单位是什么?

答:单位是微秒。

40、WDR的报告基于什么级别体现性能,比如数据库、实例?

答:当前的报告体现的是实例级别的性能,并未区分数据库来单独体现。

41、WDR报表的性能基线、重要数据来源是什么?

答:WDR当前没有baseline的功能,默认是保存8天内的数据,当前基线的选择我们一般是通过观察历史数据的曲线,比如:P80/P95、TPS、QPS选择相当较优性能的时间段。

42、insert操作会不会触发表信息收集?

答:会的,比如:pg_stat相当的表以及dbe_perf.statement等都会有insert相关的信息收集。

43、出现了性能问题,有固定的排查的顺序吗?

答:我们内部也在讨论一个性能定位的三板斧,待时机成熟可能会对外公布。当前可以参考分享附件的PPT内容,里面的思维导图可以为大家提供一个思路以及相关的指标信息。

44、有些指标信息的采集,是不是需要提前在数据库的配置文件里面设置才会被采集?

答:是的,不同的指标相应的GUC也不同,当前主要的KPI内核都是默认会开启的。

45、openGauss的ASP和Oracle ASH有什么差异?

答:基本功能类似,实现上都是采集秒级的活跃会话,先存储至内存,然后以一定的采样率刷新至磁盘;功能上均是为了分析和处理分钟级的性能抖动问题,只不过Oracle可能在ASH周边报告上面比我们更加完善。

46、AI诊断后,有问题处理报告指导问题处理嘛?

答:会有根因分析,对与某些根因,还有与其对应的建议,也就是这里所说的“指导问题处理”。目前版本是不支持这些功能的,相关高级特性目前处于内测状态,预计我们会在年底左右给大家开源功能更丰富的DBMind,敬请期待。

47、AI控制是独立的进程吗?是否实时生效?

答:DBMind是独立的进程,可以脱离数据库独立部署,管理多个数据库实例。是实时诊断和生效的。

48、AI跟MindSpore框架是怎么结合的?

答:为了避免较重的算法框架,目前我们尽量避免深度学习。因为数据库自治场景和我们熟知的计算机视觉等有本质不同,后者非常容易获取到大量数据,非常适合用深度学习,而前者这些数据不好获得,同时要考虑到预测风险很多,必须采用更轻量化的算法等多模型的思路,不是一套暴力学习的模型可以适配的。

49、openGuass AI索引优化都支持哪些索引?

答:常规的B tree索引都支持。如果有不支持的索引类型,会有提示。

50、AI模型中是否有基于Graph的model,是如何和相关业务相结合的?

答:有涉及,不过该模型处于预研状态,目前还没有发布。

51、openGuass的自动化运维优化和Oracle 21C的自动化运维优化有什么技术上的优势?和Oracle目前宣称的自治数据库有什么优劣势呢?

答:优劣不易对比,因为实现思路和策略并不相同,甚至对功能的理解上都存在差异。但是有一点是共同的,就是为了让数据库更容易用,更好用。目前Oracle和我们的优劣点还没铺开,需要后面迭代几个版本后方便对比。

52、运维人员可以自定义AI策略吗?

答:有,需要有一些python经验,后面会更加便于自行配置。

53、同一个数据库里面是否支持多种存储引擎,例如同时支持行存、列存、内存引擎?

答:同一个数据库里可以同时存在不同的存储引擎,例如可以同时有内存表和磁盘表,但当前内存表和磁盘表还不支持跨引擎事务,未来会支持。

54、有没有考虑多服务器/节点内存池并联/Federate从而水平扩充形成超大内存表?

答:当前MOT还不支持多服务器内存池,但基于RDMA的远程内存池正在做研究,除了远程内存池之外,也在研究通过持久化内存扩大内存容量的技术。

55、内存表是不是只适用大内存?最少需要多少内存空间才适用?

答:因为MOT的设计是面向多路多核服务器的,单机能力越强大越能体会到MOT设计的优势,建议使用高配置的服务器,不建议配置数据库内存低于8GB。

56、MOT是否支持行、列引擎?

答:MOT当前只支持行存,openGauss还支持列存。

57、MOT是替代磁盘引擎的模块吗?

答:MOT的设计目的不是替代磁盘引擎,MOT适合需要极高吞吐极低时延的OLTP/OLAP场景,但由于全量数据在内存中,对内存容量要求较高,因此需要根据用户的实际需求选择使用磁盘引擎还是内存引擎。

58、MOT持久化对存储速率最低要求?MOT支持主备HA吗?

答:MOT对存储速率没有特殊要求,但存储速率过低会导致redo log写入很慢,影响吞吐,MOT支持和openGauss一样的主备、级联。

59、跨磁盘和内存的事务,用二阶段提交?

答:当前还不支持跨磁盘表和内存表的事务。

60、MOT和Oracle的In-Memory有什么特别之处吗?

答:有很多不同,MOT主要面向独立运行的高性能OLTP场景,In-Memory Option主要是配合Oracle磁盘库做加速。

61、进程复位后,MOT的内存是否要重新恢复?还是直接可用?

答:进程复位后需要从checkpoint和redo log中恢复数据才能正常运行。

62、MTU值会影响什么?

答:MTU值设置与通信网路接口有关。openGauss服务器MTU值设置:对于X86,MTU值推荐1500;对于ARM,MTU值推荐8192。

63删

64、fdw支持哪些国产库?

答:mysql_fdw支持连接MySQL数据库,oracle_fdw支持连接Oracle数据库。

65、安装插件需要先在编译openGauss-server的时候介绍-enable-xxx-fdw插件,但安装非编译的openGauss-server怎么安装插件呢?

答:单独编译插件之后,手工将相应的so库文件拷贝到openGauss的lib文件夹下,还有插件相关的sql文件和control文件拷贝到相应的extension目录下即可。

66、openGauss的客户端可以使用哪些软件?

答:DataStudio、pgAdmin、DBeaver、pgweb等。

67、PG里的extension能用到openGauss吗?

答:PG的插件一般不能直接用到openGauss,需要适配。

68、openGauss的用户和schema是什么关系?和Oracle的schema和用户关系类似吗?

答:是的,openGauss的用户和schema关系跟oracle里类似,openGauss每个用户还有一个public模式可以使用。

69、关于权限,有没有具体的表或者其他的文件来查询用户的具体权限?

答:不同对象的权限是存储在对应系统表的ACL字段里,如下所示:

pg_database.dataclpg_namespace.nspaclpg_class.relaclpg_attribute.attaclpg_proc.proaclpg_type.typaclpg_language.lanaclpg_tablespace.spcacl70、openGauss对Oracle语法的兼容达到了什么程度?例如Oracle的函数、存储过程中用到自定义type、自定义聚集函数、批处理语句、游标等,向openGauss迁移的时候还需要再做逻辑修改嘛?

答:PPT里有介绍openGauss对函数的两种风格:Oracle风格和PG风格

71、openGauss的gs_dumpall和gs_dump命令都属于冷备份吗?

答:是的。

72、请问openGauss的热备份支持程度?

答:支持hot_standby备库可读以及级联备份。

73、gs_dump开并行,这个能保证一致性备份吗?

答:gs_dump当前版本还不支持并行。

74、COPY导入导出需要指定字符集吗?

答:一般情况不需要指定,通常建议服务器及客户端都采用UTF8编码,数据库客户端字符集如果不一致可以设置client_encoding参数。

75、openGauss的gs_dumpall、gs_dump备份需要停库吗?

答:不需要停库。

76、openGauss支持类似Oracle的全局索引吗?

答:分区表支持全局索引和本地索引。

77、openGauss中能实现类似Oracle自动内存管理吗?只需要设置max_process_memory值,其他如shared_buffers、work_mem会根据数据库运行情况自动调整。

答:目前没有自动内存管理机制。

78、openGauss中有没有类似Oracle数据库中的profile,是怎么限制用户访问数据库时的资源使用的?

答:无法限制用户的资源使用。

79、单机和集群wal_level都是建议logical吗?对热备份有什么影响?

答:logical只针对在有逻辑复制需求的情况下设置,对热备份没有影响。

80、WAL日志如何解析成SQL,类似于Oracle Logmnr?

答:云和恩墨提供了mog_xlogdump工具。

81、WDR报告或者哪里能够看到类似Memory Advisory和其他参数的Advisory?

答:暂时还看不到,持续完善中。

82、复制槽的设置和什么有关?

答:max_replication_slots限制最大复制槽的数量,enable_slot_log控制集群内复制槽是否保持一致。

83、openGauss不是单机数据库吗?sync_config_strategy这个参数有什么意义?

答:可以是主备集群的,sync_config_strategy针对主库和备库之间参数是否要同步。

84、enable_wdr_snapshot打开后,如果不想每小时采集一次,怎么调整采集的时间间隔?

答:参数wdr_snapshot_interval控制。

85、为什么会把wal_keep_segments和checkpoint_segments都设置为1024,一般来说不应该wal_keep_segments更大,检查点checkpoint应该更小一些吗?

答:这两个参数之间没有明确的关联关系,一个是wal保留的最少数量,一个是checkpoint触发条件。

86、Switchover和MySQL Failover机制一样吗?

答:Switchover是主备角色切换,且数据不丢失;Failover更多的考虑的是主库故障,将备库提升为主库,有丢失的可能性。

87、监控工具postresql_exporter和opengauss_exporter的区别,它们的特点是什么?

答:opengauss_exporter是对postresql_exporter代码逻辑重构,并增加了支持集群监控,多实例监控,多数据库监控,监控缓存等特性。

88、参数怎么区分数据库是否需要重启才生效?

答:pg_settings视图中有context字段,也可以看官方文档。

89、不做分区表可以做分区索引吗?

答:不可以。

90、openguess_exporter对数据库有多大侵入性?

答:只会去数据库执行查询SQL。

91、加密方式只能是MD5?

答:opengauss_exporter可以同时支持MD5和SHA256。

92、监控组件如Prometheus+Grafana安装是和数据库一起安装,还是需要单独安装?

答:需要单独安装。

93、如果备库没挂,但是备库写入很慢影响了主库效率,这时候可以自动忽略备库吗?

答:不可忽略,已经测试中遇到会影响性能的情况。

94、备库端是两个线程吗?

答:备库端涉及:接收日志到缓存一个,从缓存刷出磁盘一个,读磁盘一个,分发redo一个,分发执行者并行8。

95、备库WAL应用线程并行怎么保证一致性?

答:最快速模式下,是无法保证的,因此禁读,正常情况下,是表级别并行。

96、目前openGauss主备集群支持读写分离、负载迁移吗?如果支持,具体是什么组件在负责?备库支持临时转换成可读可写的快照库吗?若备库支持可读写转换,可否从读写状态再切回正常的只读复制状态?

答:读写分离通过ShardingSphere,pgpool均可支持,不支持快照库,也不支持从读写状态再切回只读复制状态。

97、openGuess的高可用是在主备库同步基础上搭建的吗?后期会有类似Oracle RAC架构的吗?

答:是主备同步,共享存储类目前没看到相关规划。

98、高可用类似MySQL复制?有办法拥有VIP么?

答:高可用如在MogHA中,是类似MHA的处理,通过VIP保证切换和访问。

99、如何配成多主模式?

答:不支持多主模式。

100、高可用的安全性怎么保证?

答:高可用通过WAL复制的高安全级别比方on,remote write等保证。

PPT资源

为了能让学员们随时复习所学知识,也为了弥补没能参与这次训练营活动的朋友们的遗憾,小编已把各位老师的培训课件整理在墨天轮上,快点去get这宝贵的学习资料吧!

喜报

本期活动吸引到939人报名,在线观看直播人数达1666人,活动总浏览量近9000人次,最终有105名学员圆满完成了训练营所有的学习任务——2日学习打卡、提交学习心得、通过结营考试。他们将获得由主办方联合颁发的训练营结营证书、由openGauss社区赞助的纪念卫衣一件,以及由Gauss松鼠会赞助的精美雨伞或大号鼠标垫一个!在此随附结营学员名单,对这105位同学表示祝贺!

结营学员名单证书和礼品都已经准备出发啦!没有得到奖品的小伙伴是不是很失落呀?没关系!第三期“8小时玩转openGauss训练营”活动也进入策划筹备中啦!具体举办时间请注意墨天轮和本百家号的最新消息哟~期待下一个获证拿奖的就是你!

 
友情链接
鄂ICP备19019357号-22