标准答案

  1. 物理副本按 WAL 重放整个实例的物理变化,适合热备、只读副本和故障切换,但不能只选择某几张表,通常还受版本和平台边界约束。
  2. 逻辑复制按发布/订阅传输表级行变更,可以选择对象并连接不同实例版本,但 DDL、序列、初始同步、冲突和大对象要单独设计。
  3. 复制延迟至少要拆成发送、接收、写入和重放,并观察业务可见性;副本进程在线不等于查询已经追平。
  4. 物理副本切换要处理时间线、应用读写角色和连接重建;逻辑复制切换还要处理双写、位点、序列和重复消费。
  5. 演练要验证主库故障、网络分区、应用重连、读写路由、数据校验和回切,不是只执行一次 promote 或创建订阅。

题目解析

物理复制更接近“复制整个数据库实例的状态”,适合高可用和灾备;逻辑复制更接近“传播业务表变更”,适合迁移、拆分和选择性同步。选择应从目标出发,而不是只比较延迟。

复制本身只负责传播,不负责仲裁谁是主、发生脑裂时谁能写,也不负责应用是否正确切换。高可用方案必须把数据库、代理、服务发现和应用重试放在同一故障演练里。

逻辑复制尤其要关注 DDL 和序列:表数据能同步不代表新字段、默认值、主键生成和约束会自动同步。

常见误区

  • 误区:把逻辑复制当成完整备份。改正:备份需要独立的全量/基础备份和恢复验证。
  • 误区:副本连接正常就认为已经追平。改正:检查接收、写入、重放 LSN 和业务延迟。
  • 误区:只做数据库 promote,不做应用切换演练。改正:连接池、读写角色、DNS/代理、幂等和回切都需要验证。

作者信息