暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

PostgreSQL | 列了一份入门到大神的Roadmap,需要保持足够专注



前言

昨天一个好友和我说了一下我公众号的缺点,非常感谢他提出的意见。一直以来我都在写日常工作中遇到的一些问题,他觉得有些文章写得太深了,对初学者来说不太好,而且还没有系统,他希望我推出一个从新手入门逐步到大神的系列。也符合我的公众号名字:“励志成为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

尾声

1.0版本暂时先列到这里,目前我写过相关内容占比大概20%不到。接下来要围绕这个体系来写了,如果大家有什么想法都可以留言。这个roadmap将会2个月更新一次。




文章转载自励志成为PostgreSQL大神,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论