PostgreSQL数据库PGCM高级认证考试经验分享

PostgreSQL Certifed Master (PGCM)大师认证资质是开源软件推进联盟中国 PostgreSQL 认证的

最高级别。此认证是对技术、知识和操作技能的最高级别的认可。

详见官网:https://www.pgcm.org


认证简述:

    PGCM考试前提需要通过PGCA(初级)、PGCE(中级)两门考试,均为选择题。考试采取网络远程+现场的方式,可以根据个人情况自由选择。考试全程需要开启笔记本前置摄像头,以便老师可以观察到考试环境是否符合要求、是否作弊等情况。


考试科目:

    ■ PG 数据库安全管控(考试代号:PGCM-E094)

            考点一:数据库配置管理

             考点 二: 数据库安全管理

    ■ PG 数据库优化(考试代号:PGCM-E095)

            考点三:性能优化

    ■ PG 高可用(考试代号:PGCM-E096)

             考点 四:高可用Repmgr

    ■ PG 分布式(考试代号:PGCM-E097)

             考点 五:分布式Citus

    

    一共五个考点, 考点一、二、三操作比较多,涉及的小知识点比较多,因此感觉题量比较大。 考点四、五属于那种很明显的操作、非细节性操作,因此比较简单,同时题量也是最少的。


考试环境:

    每个人有两台机器,分为奇数机和偶数机,除了repmgr高可用集群的搭建需要同时用到两台机器,其他的所有操作均在奇数机完成。机器配置还可以16G内存的,比当初考OCM时候的4G内存强多了,那会儿命令跑多了都怕卡死。


考试时间:

    考试时间相对于OCM相比是比较短的,仅一天时间。但是目前由于首次开放认证,可能大纲覆盖的还不够,题量不是很大。     PGCM 考试没有明确的时间划分,只需要你在指定的时间范围(共8个小时)内将五道大题全部做完即可,时间上个人感觉是完全足够的,完全不紧张。


考试提交:

    考证完成后务必要报告老师完成确认,因为目前还没有像OCM的那种结果采集连通性测试,很可能出现老师那边无法采集到操作结果的情况。切记! 切记! 切记!


操作过程中遇到的问题分享

下面简单说说我在操作过程中遇到的问题

软件版本: PostgreSQL 10.14

分享一:

软件是通过源码安装的,并要求安装到指定位置并配置openssl, openssl个人感觉配置还是比较麻烦的,不过还好考试提供的资源里面包含了官方文档,建议自己去试验下。


分享二:

几个考点中都包含了extension的创建。扩展的安装需要在先前编译好的数据库编译环境下才能正常编译(即postgresql.../contrib目录下),不然无法成功编译安装。提供的扩展中,部分是已经编译好的(存在 .so的库文件),这种直接make install,会自动安装库文件到PGHOME目录,如果重新编译会报错。部分是未编译的,这种就需要自行进行编译安装。


分享三:

  1. 做题一定要看准题目, 在细节题中题目要求用哪个用户操作哪个数据库,会明确提示。

  2. 设置数据库允许非超级用户的最大连接数为100,这题一定要排除掉默认为superuser保留的3个连接。

  3. 修改用户密码加密方式为scram-sha-256,修改完加密方式记得重置所有用到的用户的密码。

  4. 鉴权文件的匹配规则是自上向下开始匹配的,要注意规则的先后顺序,限制条件越多的规则要放在前面。


分享四:

设置磁盘预读这题,第一次使用blockdev,这命令对于我来说,太冷门了。

针对SSD硬盘做参数优化,这题不是很了解,大家上网查查,感觉不是单纯的改俩参数这么简单。


分享五:

  1. 按照2G内存设置合适的shared_buffers值,正常就是建议值2048MB*1/4,要根据当时的实际物理内存看,因为后面这个机器上面需要启动好几个数据库实例,设置太大有可能会影响其他实例运行,如果是16G内存,那是没有问题的。

  2. 设置表级并行度,真的就是只设置这张表的并行度就可以了,不用去看执行计划,因为表中的数据量过少,执行计划始终都是非并行扫描。


分享六:

  1. 高可用repmgr集群感觉配置基本问题都不大,这题需要注意的是一定要配置好pg_hba.conf文件,是两条规则

    host   all                repmgr    192.168.56.0/24   trust

    host   replication   repmgr    192.168.56.0/24   trust

    此外还需要配置好.pgpass文件,尽量避免将密码直接写到配置文件里面,这不是个好习惯,你懂得。

    还有就是在配置repmgr.conf的过程中尽量使用IP地址进行配置,减少出现错误的可能性。


  2. repmgr明确Timeline最后的结果为3,也就是只能切换两次,一次是手动切换,一次是自动切换,每次切换完你可能会发现primary和standby的Timeline不一致,一个是目标值3(new primary),一个是旧值2(old primary),这种情况目前我知道的方法是可以通过重启下standby数据库来强制刷新下就可以了。


分享七:

对于分布式Citus的使用,我的感觉这题就是送分的,操作少简单,唯一要注意的就是,每个分布节点的创建都是在奇数机上面,操作的时候,明确指定PGDATA,避免操作混乱。


分享八:

数据库软件不需要多次安装,可以共用一套已经安装好的软件,本地直接共用PGHOME,远程直接拷贝即可,节约时间,主要是省事。


总结:

考试考点:

  1. 难度应该算适中,整体不难,就是多多注意细节就行了。

  2. 高可用repmgr集群和citus分布式的题比较简单,题量较少。


结果采集:

    结果采集过程中遇到的问题:

    1.  题目中要求禁用postgres用户本地免密登录,但是采分脚本是本地直接登录的。

    2.  repmgr使用主机名配置无法正常采集到结果,需要使用IP配置。

    3.  postgres用户本地登录的采分方式并不使用ssl加密访问。

    以上问题已经和老师进行沟通过,后面会进行bug修复,以后应该不会出现此类问题。


考试建议:

  1. 建议增加repmgr和citus的考试内容,感觉当前的考试内容不足以解决常见的故障问题。

  2. Postgres-XL也是目前用的比较多的分布式软件。

  3. PostgreSQL有个很大的问题就是不支持VIP,即使pgpool-II支持,但是这东西又不太常用,但是可以通过keepalived+lvs简单实现。

  4. SQL优化和数据库优化部分考试内容过于简单,不具更多的实践意义。

    PG目前兼容的数据类型、函数和索引类型是非常多的,尤其是地理位置信息处理等。

  5. 逻辑复制replication和流复制stream replication是平常用的比较多的数据复制方式。

  6. 建议关闭root权限,采用sudo的方式。



请使用浏览器的分享功能分享到微信等