流复制:可以从实例级复制出一个与主库一摸一样的从库(也称之为备库)
流复制同步方式有同步、异步两种,如果主节点和备节点不是很忙,通常异布模式下备库和主库的延迟时间控制在毫秒级
另一种方式为逻辑复制,也称之为选择性复制,可以做到基于表级别的复制。选择需要逻辑复制的表,而不是复制实例上所有数据库的所有表
物理复制是基于实例级的复制,只能复制整个postgresql实例
WAL日志记录数据库的变化,格式为二进制格式。当主机出现异常断电时,如果WAL文件写入成功,但还没来得及刷新数据文件,当数据库再次启动时会根据WAL日志文件信息进行事务前滚。从而恢复数据库达到一致性状态
尽管流复制和逻辑复制都是基于WAL,但两者有本质不同,流复制是基于WAL物理复制,逻辑复制是基于WAL逻辑分析,将WAL解析成一种清晰、易于理解的格式
流复制是物理复制,其核心原理是主库将预写日志WAL日志流发送给备库,备库接收到WAL日志流后进行重做,因此流复制是基于WAL日志文件的物理复制
逻辑复制核心原理也是基于WAL,逻辑复制会根据预先设置好的规则解析WAL日志,将WAL二进制文件解析成一定格式的逻辑变化信息,比如从WAL中解析指定表发生的DML逻辑变化信息,之后主库将逻辑变化信息发送给备库,备库收到WAL逻辑解析变化信息后再应用日志
流复制只能对postgresql实例级进行复制,而逻辑复制能够对数据库表级进行复制
流复制能对DDL操作进行复制,比如主表新建表、给已有表加减字段时会自动同步到备库,而逻辑复制主库上的DDL操作不会复制到备库
流复制主库可读写,但从库只运行查询不允许写入,而逻辑复制的从库可读写
流复制要求postgresql大版本必须一致,逻辑复制支持跨postgresql大版本
异步流复制:主库上提交事务时不需要等待备库接收W AL日志流并写入到备库WAL日志文件时便返回成功,如果主库异常宕机,主库上已提交的事务可能还没来得及发送给备库,就会造成备库手机丢失,备库丢失的数量和WAL复制延迟有关,WAL复制延迟越大,备库上丢失的数据量越大。而同步流复制相反。
同步流复制主主库上提交事务时需要等待备库接收并WAL日志,当主库至少收到一个备库发回的确认信息时便返回成功。
异步流复制部署主要️两种方式:一种方式是拷贝数据文件方式,另一种方式是通过pg_basebackup命令行工具。
网友评论