集群高可用

Oushu Database 集群上可以配置两个master节点:主节点(master)和备用主节点(standby master)。客户端连接到主节点, 查询只能在主节点上执行。您可以在单独的机器上部署备用主节点, 使群集能够更好得容忍单点故障。如果主节点无法运行, 备用主节点将升级为主节点以支持集群正常运行。

Oushu Database 正常提供服务的同时, 会将主节点上的事务性快照(transactional snapshot)以及基于快照的更新同步到备用主节点上, 使得备用主节点与主节点保持同步。由于主节点不负责存储用户数据, 主节点和备用主节点之间只同步系统元数据表。当这些表在主节点上发生更改后, 将自动同步到备用主节点, 使其保持最新状态。如果主节点发生故障, 管理员可以激活备用主节点。Oushu Database 利用同步的日志信息将集群重建为最后一成功提交事务时的状态。激活的备用主节点将作为 Oushu Database 新的主节点, 为集群提供服务。

如果主节点故障, 管理员可使用命令行工具激活备用主节点。如果在集群启动时已经打开了自动切换功能,备用主节点将在主节点故障时自动升级为主节点。原故障主节点将从集群中删除,由管理员自行处理。(注:切换主节点后,集群中已经没有备用主节点,须由管理员手工添加。)

提示:

  • (重要)当管理员在主节点修改用户权限控制文件 pg_hba.conf 时,必须手动把更新后的该文件同步到备用主节点上,以避免主节点故障时,切换后的新主节点无法识别用户权限而导致的集群服务不可用。
  • 您可以为主节点和备用主节点配置虚拟 IP 地址, 以便当主节点发生更改时, 客户端程序不必切换到其他网络地址。如果主节点故障, 则可以将虚拟 IP 地址分配给实际的主节点。
  • 当客户端使用 jdbc 链接 Oushu Database 时,如果没有配置虚拟 IP 地址,建议同时将主节点地址与备用主节点地址加入到 jdbc 连接的 url 地址中,以便客户端程序在 Oushu Database 集群主节点发生切换时仍保持可用。例如:
String url = "jdbc:postgresql://master:port,standby:port/dbname";