Postgresql 第十一章 流复制

  • 类型:一主多从类型的复制

    主(master)从(slave),在PostgreSQL中通常分别被称为主(primary)备(standby)

    • 当客户端要向数据库写入时,它必须将请求发送给领导者,领导者会将新数据写入其本地存储。其他副本被称为追随者(followers)
  • 实现:基于日志传输实现的

    这是一种通用的复制技术:主库不断发送WAL数据,而每个备库接受WAL数据,并立即重放日志。

  • 流复制的工作原理:

    • 流复制是如何启动的
    • 数据是如何在主备之间传递的
    • 主库如何管理多个备库
    • 主库如何检测到备库的失效

1、流复制的启动

  • 三种进程【协同工作】

    • 主库上的**walsender(WAL发送器)**进程:将WAL数据发送到备库

    • 备库上的walreceiver(WAL接收器):接收主库发来的数据

    • 备库上的startup进程:重放主库发来的数据

      walsenderwalreceiver 之间使用单条TCP连接进行通信

      连接的状态:

      • 启动(start-up) —— 从启动walsender到握手结束。如图11.1(5)-(6)。
      • 追赶(catch-up) —— 处于追赶期间,如图11.1(7)。
      • 流复制(streaming)—— 正在运行流复制。如图11.1(8)。
      • 备份(backup)—— 处于向pg_basebackup等备份工具发送整个数据库集簇文件的过程中。
    img

2、如何实施流复制

  • 任务:
    • 日志传输: 主库会在写入日志记录时,将WAL数据发送到连接的备库
    • 数据库同步:主库与多个备库通信,从而同步整个数据库集簇
  • 主从间的通信
    • (上图)
  • 发生故障的行为【两种方法】
    • 使用多个备库来提高系统可用性
    • 从同步模式切换到异步模式

3、管理多个备库

  • 同步优先级与同步状态
    • 同步优先级:较小的值表示较高的优先级
    • 同步状态
      • 同步(Sync)状态的备库,是所有正在工作中的备库中,具有最高优先级的同步备库的状态(异步模式除外)。
      • 潜在(Potential) 状态的备库,是所有工作备库(异步备库除外)中,优先级等于或低于2的闲置同步备库。如果同步备库失效,潜在备库中有着最高优先级的那个将替换为同步备库。
      • 异步(Async) 状态的备库是固定的。主库以与潜在备库相同的方式处理异步备库,只是它们的sync_state永远不会是syncpotential
  • 主库仅等待来自同步备库的ACK响应。换句话说,主库仅确保同步备库写入并刷新WAL数据。因此在流复制中,只有同步备库的状态是与主库始终一致且同步的。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值