背景
数据库是信息化的基石,支撑着整个业务系统,发挥着非常重要的作用,被喻为“IT的心脏”。因此,让数据库安全、稳定、高效地运行已经成为IT管理者必须要面对的问题。数据库在底层架构层面需要满足以下几点建设要求:安全和可靠:不能因为服务器的软硬件故障导致数据丢失和业务中断;
容灾:多数据中心间的数据同步,某一个数据中心出现故障后,可以在另一个数据中心快速拉起业务;
读写分离(报表分离):把接口程序、报表程序、集成平台数据抽取、大数据运算等高消耗的查询语句分离到备机执行,从而避免对主服务器的性能消耗以及造成的阻塞和死锁;
负载均衡:需要多台服务器同时负载并发请求,降低单台服务器的压力,提升系统整体性能;
弹性扩展:通过增加服务器的方式应对数据量或者访问量增加带来的性能瓶颈。
Moebius(莫比斯)
Moebius数据库多活集群是格瑞趋势为SQL Server数据库研发的能够同时满足可用性、数据安全、容灾、读写分离、负载均衡的一站式多活集群。集群的名字取自Moebius环,寓意无限扩展。
Moebius采用“share nothing”架构,每个节点的SQL Server服务独立安装,使用每个服务器自己存储介质内的数据库文件。不基于共享存储设备,也不基于磁盘镜像等功能,通过SQL Server的日志同步技术实现各节点中数据的一致性。在主节点写入数据时会产生日志,Moebius捕获并传输日志到其他节点,并通过REDO技术把日志转换成数据。因此每个节点的SQL Server服务都是启动的,数据都是“活”的。Moebius有实时和准实时两种同步方式,不同的节点可以使用不同的同步方式。
Moebius 通过“网络心跳”及“仲裁机制”实现故障监控,当侦测到某节点发生故障并经过仲裁后,将此节点剥离出集群,如果故障节点是主节点,则会进行自动故障转移,重新选择健康的节点作为主节点。节点故障恢复后会自动从主节点同步差异数据,同步完成后加入到集群中。
Moebius的调度引擎支持连接级和SQL语句级两种调度方式,通过规则的配置,在不改动或者少改动应用程序的前提下,透明的实现读写分离、负载均衡。
功能亮点
故障切换
-
多节点仲裁、文件夹仲裁、共享盘仲裁三种仲裁方式确保故障切换稳定准确;
-
每个节点都是活动的,故障切换时,辅助节点不需要经历挂载磁盘、启动实例、初始化数据库等步骤,在10秒内可完成切换;
-
可以和告警系统对接,故障切换时及时通知系统运维人员。
数据同步
-
充分利用SQL Server特性,只同步日志,不同步数据,同步数据量小,同步速度更快;
-
实时和准实时两种同步方式,准实时同步方式支持恶劣网络条件下的断点续传;
-
同步过程中数据压缩,带宽消耗更小;
-
节点多活,可以随时在辅助节点上执行查询语句验证数据同步。
读写分离&负载均衡
-
在集群中通过配置规则的方式实现读写分离和负载均衡,不用或者少量修改应用程序;
-
规则支持正则表达式编程,可以从数据库名称、客户端主机名、登录名等多种维度进行配置;
-
多台服务器负载均衡,同时负载并发请求,提升整体性能。
软件价值
高可用:服务器出现故障时,快速切换到正常节点,确保系统持续运行;
高数据安全:有多份一致的数据,确保数据足够安全;
高用户体验:通过读写分离和负载均衡,提升系统性能,大幅减少阻塞、死锁等问题,给业务系统带来高效的用户体验;
高扩展性:当现有服务器资源不够时,可根据需要随时添加服务器节点,增加处理能力;
低系统总体拥有成本(TCO):
-
-
集群不强制需要存储设备,可以用性价比更高的SSD盘,节省存储设备的开销;
-
可以充分利用原有服务器组建集群,避免资源浪费;
-
可以用多个廉价PC服务器代替单一的昂贵服务器,节省硬件成本;
-
不需要再购买双机、备份、容灾等其它软件。
-
常见问题
虚拟化\超融合平台下还有做Moebius的必要吗?
虚拟化或者超融合虽然能够保障可用性和数据安全,但本质上提供的是一个单数据库服务器。如果有在SQL Server层面的容灾或者读写分离、负载均衡的需求,就是有必要的。
Moebius兼容虚拟化\超融合平台吗?
兼容,Moebius的节点可以是物理机,也可以是虚拟机,或者是两者的组合。
做了Moebius后还有必要做存储双活吗?
如果存储设备只是为了数据库服务器提供的,那么是没有必要再做双活的,因为Moebius的数据就是多份的,既能保障数据安全,又可以随时验证数据的一致性。可以让每个Moebius节点各接一个独立的存储设备,这样既节省了双活模块的成本,又提升了磁盘空间的利用率。