可用性是数据库的重要指标之一,高可用集群是保障数据不丢失、服务可用的主要措施之一。下面将从部署维度阐晰金仓数据库KingbaseES如何打造高可用集群。
高可用架构基础
实践中,通常让多个数据库服务器协同工作来实现数据库的高可用。例如,当一个服务器节点失效时,另一个服务器去替代工作,以此来达到不中断对望服务或只中断很短的时间;或者是多个数据库同时提供服务(多活),用户可以访问任意一台数据库,当有数据库故障时,访问其他数据库即可。
但与无状态的应用服务HA不一样的是,数据库记录了数据,想要在多台数据库之间切换,需要进行数据同步,所有数据同步是数据库高可用方案的基础。
(一)各种高可用架构简介
从解决数据同步的角度来看,金仓数据库高可用方案目前包含以下几种:
共享存储:更改存储文件格式,使得多台设备可以对文件系统同时挂起,在多个数据库同时操作存储时,解决并发写的问题,同时,在单个数据库写时发生故障例如断电时,解决脏数据的清理。或者,使用类似SAN存储,一台数据库故障时,通过HA等工具把存储挂载到另一台设备。
WAL同步方案:数据库总是日志先行,保证了WAL的多台数据库一致性,就能侧面保证数据库集群数据一致性,通过这个机制,可以搭建主从数据库,当主数据库失效时,把从数据库提升为主库,继续对外提供服务。
基于触发器的同步方案:使用触发器记录数据变化,然后同步到另一台数据库上。
基于语句复制的中间件:应用连接到中间件,不直连数据库,中间件把数据库的变更