前言
昨天一个好友和我说了一下我公众号的缺点,非常感谢他提出的意见。一直以来我都在写日常工作中遇到的一些问题,他觉得有些文章写得太深了,对初学者来说不太好,而且还没有系统,他希望我推出一个从新手入门逐步到大神的系列。也符合我的公众号名字:“励志成为PostgreSQL大神”,所以今天我要做一个总结,发布第一版 RoadMap,以后每2个月在此基础上更新一版,毕竟 IT日新月异,需要跟上主流趋势。

安装PostgreSQL
不管学习什么软件,先从安装开始。安装要学习的主要有以下知识点:
yum、apt软件包安装方式 源码编译安装 管理PostgreSQL服务(systemd、pg_ctlcluster、pg_ctl) 在Docker环境下安装PostgreSQL 安装pgAdmin 安装过程中的Troubleshooting
当然安装不仅仅只有这一点,但是对于初学者入门学到这里就ok了。至于图形界面和二进制包安装,使用场景比较少。后期的安装还包括集群软件安装、配置流复制、逻辑复制、与其他软件集成安装等等。这些我们暂时不列到这里。这些安装会列到高可用部分。
配置和使用PostgreSQL
安装完成软件之后,就是配置和使用PostgreSQL软件了。这里主要学习数据库的参数配置和一些文件配置。参数配置包含以下几类参数:
进程设置 内存参数设置 日志设置 检查点和BGWRITER VACUUM/AUTOVACUUM 复制参数设置 优化器和执行计划 其他配置参数
文件配置主要包括:
pg_hba.conf pg_ident.conf
对于初学者来说,一些参数较为冷门不容易理解。不过这里将要学习的是比较常见的参数,总共40多个参数。
管理PostgreSQL数据库
安装和配置成功之后,就可以学习管理数据库了。主要有以下知识点:
数据库的体系结构 表空间和数据类型 数据导入导出 安装插件 MVCC机制 事务管理 表膨胀原理及如何解决表膨胀。 VACUUM机制和优化。 分区表 锁的类型及如何处理锁问题。 事务回卷 并行查询 压缩 全文检索 临时表
数据库管理就是我们日常运维的一些日常性工作,这里强烈要求掌握好。
备份与恢复
学完安装、配置、管理之后,就可以上手备份与恢复了,这一块备份软件有很多,之前我介绍过了Barman。
备份恢复的基本概念,PITR(时间点恢复)的基本概念。 备份恢复工具:pg_dump,pg_dumpall,pg_restore,pg_basebackup 第三方备份工具:barman,pgbackrest,pg_probackup,WAL-G 数据库闪回:pg_dirtyread 日志挖掘 底层恢复工具:pg_dumpfile
这一块稍微涉及一点底层原理,需要了解数据库的物理结构。
性能优化
优化主要是索引相关,还有SQL的优化。
各种索引的原理和机制(B树,哈希,GiST,SP-GiST,GIN,BRIN) 参数优化 SQL优化及改写 统计信息和直方图 pg_hint_plan绑定执行计划
安全
学习有关安全方面的配置。
身份验证模型,角色,pg_hba.conf,SSL设置。 对象权限 高级主题:行级安全性、数据加密 数据库审计 SQL注入
数据库迁移和升级
数据库迁移包含同构迁移和异构迁移,而我们现在基本上都是搞异构迁移,从Oracle迁移到PostgreSQL,以后有其他数据库迁移到PG,这里知识点也会逐步更新。
PostgreSQL 13新特性 使用Ora2PG迁移Oracle到PostgreSQL数据库 使用DataX迁移Oracle到PostgreSQL数据库 使用 pg_upgrade升级 使用逻辑复制进行升级 使用debezium和Kafka实现零宕机迁移
数据库架构系列
数据库架构主要包括高可用组件、连接池、监控方案、负载均衡和服务发现等。
流复制和逻辑复制 高可用性:Patroni、Repmgr、Pg_auto_failover、PAF、Stolon 分布式:Citus 连接池:Pgbouncer、Pgpool-II,Odyssey,Pgagroal 监控方案:Prometheus、Zabbix、Pganalyze、Pgwatch2、PoWA等等 应用负载均衡和服务发现:Haproxy、Keepalived、Consul、Etcd 云原生和容器化:Kubernetes、Docker
深入数据库内核系列
主要是日本作家Hironobu SUZUKI的
The Internals of PostgreSQL
源码阅读
故障处理
最后是故障处理的技术能力,这块需要一定的沉淀。
操作系统检查(top、vmstat、netstat、sar、iotop) PostgreSQL系统视图(pg_stat_activity、pg_stat_statements) PostgreSQL工具(pgcenter) SQL性能分析(执行计划阅读) 日志分析(pgBadger) 第三方AWR/ASH报告 外部跟踪gdb、starce、Perf和火焰图、ebpf、cort dumps
尾声

