主从复制怎样分担读取压力?
- 主从复制: 主节点接受写入并把变更发送给副本,副本通常承担读取、备份或待命恢复;
- 读扩展: 把允许延迟的查询放到副本,可减少主节点负载,但所有写仍可能受主节点容量限制;
- 拓扑: 副本可以继续向下复制形成树形结构,降低上游连接压力的同时增加传播路径;
- 备份: 从副本执行备份可以减少主节点直接承担的工作,但副本延迟和备份一致性仍需验证;
- 故障接管: 主节点失败后可以选举或提升副本,切换期间写入可能暂停;
- 数据风险: 如果提升的副本尚未收到已确认写入,可能发生数据丢失;
- 成本: 更多副本增加硬件、传输和维护开销,也可能加重主节点复制压力;
多主复制怎样允许多个位置写入?
- 多主复制: 多个节点接受读写并交换变更,在一个写入口失效时其他入口仍可能服务;
- 收益: 可以让写入更接近用户,也能分散部分写负载;
- 冲突: 两个节点并发修改同一数据时必须检测和解决冲突,不能假设任意写入天然兼容;
- 一致性代价: 同步协调增加延迟,异步协调则允许暂时分歧,节点越多通常越难管理;
- 使用前提: 业务能定义冲突规则或承担协调成本,多主才有实际价值;
同步复制何时返回写入成功?
- 同步复制: 主节点等待指定副本达到要求的确认状态,再向客户端确认写入;
- 保证范围: 要说明等待哪些副本,以及确认是收到、写日志还是持久化,不能笼统说所有节点永远同步;
- 收益: 降低故障切换时丢失已确认数据的风险;
- 代价: 写延迟受副本和网络影响,副本不可达时可能牺牲写可用性;
异步复制怎样降低前台写延迟?
- 异步复制: 主节点先确认本地写入,再传播到副本,客户端不等待副本完成;
- 收益: 前台延迟较低,副本短暂落后不一定阻塞主节点写入;
- 代价: 副本可能读到旧值,主节点失效时可能丢失尚未传播的更新;
- 写后读: 如果业务需要立即看到自己的更新,应选择合适的读取路由或版本等待策略;
复制能替代分片或备份吗?
- 与分片区别: 复制保存同一数据的多份副本,分片分散不同数据,二者可以组合;
- 与备份区别: 错误删除也可能被复制,备份还需提供历史恢复点和独立故障域;
- 验证重点: 测量复制延迟并演练提升副本、旧主隔离与重新加入,不能只验证正常时数据相同;