作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL(本章节)
Redis
Etcd
我们前面介绍了MySQL的主从原理及相关部署配置,今天我们来介绍PostgreSQL的主从原理,他们在一定程度上比较相似。
我们前面在介绍PostgreSQL的存储引擎的时候,介绍过PG写数据的时候会会先写到WAL (Write-Ahead Logging)事务日志,然后再落盘到数据库里面。其实PG的主从也是基于WAL事务日志的,以下是其详细介绍:
PostgreSQL 支持多种复制方式,核心区别在于同步方式和数据延迟:
1. 主库(Master)的操作
2. 从库(Slave)的操作
3. 同步与异步机制
三、逻辑复制的工作流程
四、同MySQL主从对比
对比方面 | PostgreSQL | MySQL |
|---|---|---|
日志类型 | 物理日志 - WAL 记录数据页的物理变化 | 逻辑日志 - binlog 记录行的逻辑变更(SQL语句或行变化) |
复制级别 | 块级别 - 数据页的字节变化 | 行级别 - 具体哪些行的数据被修改 |
同步单元 | WAL 记录流 | binlog 事件 |
复制过程 | WAL Sender → 流式传输 → WAL Receiver → 重放 | binlog dump → 传输 → I/O线程写relay log → SQL线程重放 |
数据一致性 | 强一致性 - 主从数据块完全一致 | 最终一致性 - 可能存在微小延迟 |
性能影响 | 对主库影响较小(WAL是核心组件) | 对主库有一定性能开销(额外的binlog记录) |
跨版本兼容 | 要求主从版本严格一致 | 支持不同版本间复制(有一定限制) |
拓扑灵活性 | 相对简单,主要是一主多从 | 支持复杂拓扑(链式、双主、多源复制) |