云服务资讯

刚接触高可用数据库,应该先了解哪些基础配置?

数据库高可用部署并不只是增加一台备用服务器,还涉及数据复制、故障转移、仲裁、连接切换、监控和备份。本文以 PostgreSQL 流复制与 MariaDB Galera Cluster 为例,梳理初学者应优先掌握的基础配置、实施步骤和常见误区。

刚开始做数据库高可用部署时,最容易产生的误解是“主库加一台备库就完成了”。实际上,高可用方案还要回答几个问题:数据怎样复制,主库故障后谁负责接管,应用如何连接新主库,网络分区时怎样避免双主,以及恢复后如何重新加入集群。

建议先从单一数据库类型和明确的故障范围入手,不要一开始就叠加跨地域、多活和复杂中间件。以下配置适合用于理解基础原理,具体参数仍需结合版本、硬件、业务写入量和网络条件调整。

先分清高可用要解决的故障

数据库高可用部署通常针对三类问题:单台服务器宕机、数据库进程异常,以及网络或存储故障。它不等同于备份。备份主要用于误删数据、逻辑错误和历史恢复,高可用则侧重于缩短服务中断时间。

  • 主备复制:一台节点负责写入,其他节点接收复制日志。结构清晰,适合大多数读写分离场景,但切换后需要重新确认主从关系。
  • 多主或同步集群:多个节点都可能接受写入,故障切换更灵活,但冲突处理、网络延迟和脑裂防护更加复杂。
  • 共享存储方案:数据库实例依赖共同存储。切换逻辑相对直接,但共享存储本身会成为重点风险,需要独立设计冗余。

例如,PostgreSQL 常见的物理流复制是一主多备模式;MariaDB Galera Cluster 更偏向多节点同步复制。初学者应先掌握一种模型,再比较其他方案。

需要优先配置的五个基础部分

1. 节点角色与网络

先为每个节点确定固定主机名、管理地址和数据库服务地址,确保节点之间可以稳定解析。数据库复制端口、管理端口和监控端口应分别规划,并通过防火墙只开放给必要的节点或管理网段。

生产环境通常至少准备两个数据节点;如果方案需要选主或仲裁,最好再配置独立的仲裁节点或见证节点。仲裁节点不一定保存业务数据,但应尽量放在与两个数据库节点不同的故障域,避免一处断电导致整个集群失去判断能力。

2. 数据复制与一致性

复制配置决定了故障切换时可能丢失多少已经提交的数据。异步复制响应较快,但主库突然损坏时,备库可能尚未收到最近的日志;同步复制能降低这一风险,却会受到备库延迟和网络质量影响。

以 PostgreSQL 为例,需要配置主库允许复制连接、创建专用复制账户、启用预写日志相关参数,并在备库设置主库连接信息和复制槽。开启同步复制前,应先观察复制延迟,再评估业务是否能够接受写入等待。不要只复制配置文件,必须验证备库是否持续接收并正确回放日志。

3. 故障转移与脑裂防护

故障转移既可以人工执行,也可以由 Patroni 等集群管理组件配合 Consul 或 etcd 完成。自动切换前,必须定义健康检查条件,例如数据库进程状态、复制延迟、磁盘可写性和节点间通信状态,而不能只检查端口是否打开。

脑裂是两个节点都认为自己是主库,进而同时接受写入。防护手段包括仲裁、租约、STONITH(隔离或关停失效节点)以及严格的主库身份校验。没有隔离旧主库的能力时,不建议直接启用完全自动的提升操作。

4. 连接入口与应用重连

应用不应把某一台数据库服务器的固定地址写死。可以使用代理、虚拟 IP、服务发现记录或云平台提供的数据库连接地址作为统一入口。切换发生后,连接池必须能够丢弃失效连接并重新建立连接。

这里要注意:数据库切换成功,不代表正在执行的事务会自动完成。应用仍需处理连接断开、事务回滚和有限次数的重试。涉及支付、库存或订单状态时,重试逻辑还应配合幂等设计,避免同一请求被重复执行。

5. 监控、告警与恢复

至少监控以下指标:主备复制延迟、复制连接状态、数据库连接数、事务提交延迟、磁盘空间、磁盘写入等待、CPU 和内存使用率。告警应区分“即将影响服务”和“已经发生切换”,例如复制中断与节点完全不可达不应使用同一严重级别。

备份也必须纳入数据库高可用部署。建议同时保留全量备份与连续归档日志,并定期在隔离环境中做恢复演练。只有能恢复出可用数据库,备份方案才算真正有效。

刚接触高可用数据库,应该先了解哪些基础配置?

一套适合入门的实施顺序

  1. 选定一种数据库版本,在两台独立主机上完成基础安装,并统一时区、时间同步、字符集和目录规划。
  2. 先做手工主备复制,记录复制延迟、断网后的行为和备库恢复时间。
  3. 增加统一连接入口,测试主库停止、数据库进程退出和单节点网络隔离三种故障。
  4. 再接入集群管理组件或云平台托管能力,明确自动切换的触发条件、回切方式和人工确认点。
  5. 执行恢复演练:模拟误删表、日志损坏和主节点永久下线,分别验证备份恢复与节点重建。
  6. 把切换步骤、账号权限、配置变更和回滚方法写成操作手册,避免只依赖个人经验。

初学者常见的选择误区

选择主要优点需要承担的代价
异步主备写入延迟较低,结构容易理解极端故障下可能丢失尚未复制的数据
同步主备数据一致性更强备库或网络变慢时可能拖慢写入
自动切换减少人工介入时间误判、脑裂和回切控制更复杂
人工切换操作风险更容易审核依赖值班人员,恢复速度通常较慢

常见问题

只有两台数据库服务器,能不能做高可用?

可以实现主备复制,但在网络分区时很难安全判断谁应继续提供写服务。若方案支持,增加独立见证或仲裁节点会更稳妥。

备库能不能直接承担全部查询?

要先确认备库是否允许读取、复制延迟是否可接受,以及查询结果是否要求最新数据。强一致场景不宜盲目把读请求切到备库。

高可用是否可以替代备份?

不能。复制可能把误删、错误更新同步到所有节点,必须用独立备份和日志归档支持历史恢复。

什么时候适合自动故障转移?

当健康检查、仲裁、旧主隔离、应用重连和回切流程都经过演练后,才适合逐步启用自动切换。

总的来说,入门数据库高可用部署应先建立“复制、判断、切换、重连、恢复”这条完整链路。先把单主多备或清晰的同步集群运行稳定,再根据业务的可用性目标扩大到更复杂的架构。