postgresql
PostgreSql早在9.0版本开始支持物理复制,也可称为流复制(Streaming Replication),通过流复制技术,可以从实例级复制出一个与主库一模一样的从库(也可称之为备库);另外一种复制方式为逻辑复制(Logical Replication),也可称之为选择性复制,因为逻辑复制可以做到基于表级别的复制,选择需要逻辑复制的表,而不是复制实例上的所有数据库的所有表,物理复制是基于实例级的复制,只能复制整个PostgreSql实例
一、逻辑复制和物理复制的区别?
流复制是物理复制,其核心原理是主库将预写日志WAL日志流发送给备库,备库接收到WAL日志流后进行重做,因此流复制是基于WAL日志文件的物理复制;逻辑复制核心原理也是基于WAL,逻辑复制会根据预先设置好的规则解析WAL日志,将WAL二进制文件解析成一定格式的逻辑变化信息,比如从WAL中解析指定表上发生的DML逻辑变化信息,之后主库将逻辑变化信息发送给备库,备库收到WAL逻辑解析信息后再应用日志
- 流复制只能对PostgreSql实例级进行复制,而逻辑复制能够对数据库表级进行复制
- 流复制能对DDL操作进行复制,比如主库上新建表、给已有表加减字段时会自动同步到备库,而逻辑复制主库上的DDL操作不会复制到备库
- 流复制主库可读写,但从库只允许查询不允许写入,而逻辑复制的从库可读写
- 流复制要求PostgreSql大版本必须一致,逻辑复制支持跨PostgreSql大版本
二、物理复制
参数 | 用途 |
---|