【从0到1,PostgreSQL复制的不同策略详解】开始流式复制时 , 前端可以在启动消息中发送复制参数 。值为true、yes、1或ON的布尔值让后端知道它需要进入物理复制walsender模式 。
WAL发送器是在主服务器上运行的另一个进程 , 负责在生成WAL记录时将其发送到备用服务器 。WAL接收器将WAL记录保存在WAL中 , 就像本地的客户端连接一样 。
一旦WAL记录到达WAL段文件 , 备用服务器就不断地重放WAL , 以使主服务器和备用服务器保持最新同步状态 。
PostgreSQL 复制的要素接下来我们将更深入地了解 PostgreSQL 复制的常用模型(单主复制和多主复制)、类型(物理复制和逻辑复制)以及模式(同步和异步) 。
PostgreSQL 数据库复制模型可扩展性是指向现有节点添加更多资源/硬件 , 以增强数据库存储和处理更多数据的能力 , 可以进行水平和垂直扩展 。PostgreSQL 复制是水平可伸缩性的一个例子 , 它比垂直可伸缩性更难实现 。主要通过单主复制(SMR)和多主复制(MMR)来实现水平扩展 。
单主复制仅允许在单个节点上修改数据 , 并将这些修改复制到一个或多个节点 。副本数据库中的复制表不允许接受任何更改 , 但来自主服务器的更改除外 。
大多数时候 , SMR 足以满足应用程序的需求 , 因为它的配置和管理不那么复杂 , 而且不会发生冲突 。单主复制也是单向的 , 因为复制数据主要在一个方向上流动 , 从主数据库到副本数据库 。
在某些情况下 , 单靠 SMR 可能不够 , 你可能需要实施 MMR 。MMR 允许多个节点充当主节点 。对多个指定主数据库中表行的更改将复制到每个其他主数据库中的对应表 。在这个模型中 , 经常采用冲突解决方案来避免重复主键等问题 。
使用 MMR 有几个优点 , 即:
- 在主机故障的情况下 , 其他主机仍然可以提供更新和插入服务 。
- 主节点分布在几个不同的位置 , 因此所有主节点发生故障的可能性很小 。
- 能够使用主数据库的广域网 (WAN) , 这些主数据库在地理位置上可以靠近客户端组 , 同时保持网络中的数据一致性 。
一些机构和应用程序提供 MMR 解决方案 , 因为 PostgreSQL 本身并不支持 。这些解决方案可能是开源的、免费的或付费的 。如双向复制 (BDR) , 它是异步的并且基于 PostgreSQL 逻辑解码功能 。
由于 BDR 应用程序在其他节点上重放事务 , 如果正在应用的事务与在接收节点上提交的事务之间存在冲突 , 重放操作可能会失败 。
PostgreSQL 复制的类型PostgreSQL 复制有两种类型:逻辑复制和物理复制 。
一个简单的 initdb 逻辑操作 , 将会执行为集群创建基准目录的物理操作 。同样 , 一个简单的逻辑操作(CREATE DATABASE)将执行为在基准目录中创建子目录的物理操作 。
物理复制通常处理文件和目录 。它不知道这些文件和目录代表什么 。物理复制方法用于在另一台机器上维护单个集群的完整数据副本 , 并且在文件系统级别或磁盘级别进行 , 并使用精确的块地址 。
逻辑复制是一种根据复制标识(通常是主键)复制数据实体及其修改的方法 。与物理复制不同 , 它处理数据库、表和 DML 操作 , 并在数据库集群级别完成 。它使用发布和订阅模型 , 一个订阅者可以订阅发布者节点上的一个或多个发布 。
推荐阅读
- 从公司50亿参数AI绘画模型简单了解宅男AI小姐姐的生成模型
- 一根DDR5内存对比两根DDR5内存 到底哪个强?
- 自动驾驶汽车激光雷达如何做到与GPS时间同步?
- 大S|从张兰母子欠债9.8亿看,人的现实在大S身上体现的淋漓尽致
- 豪门|贵妇李天颖的逆袭之路:战悍匪斗小三,从豪门弃妇到百亿富婆
- 同治|10枚少见极品同治通宝,1枚最高卖到100万元
- 翡翠|到底什么才是翡翠的雪花棉
- 不雅照|张隆前妻为什么会有李梦这些私密照?李梦到底输了什么
- |?不是光荣,是可耻,我们不希望再看到烟四代,铁四代!
- 王昱珩|鬼才之眼王昱珩:从未上过班却财富自由,超能力的天才也有烦恼