Moebius数据库多活集群
背景
数据库是信息化的基石,支撑着整个业务系统,发挥着非常重要的作用,被喻为“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节点各接一个独立的存储设备,这样既节省了双活模块的成本,又提升了磁盘空间的利用率。
Moebius数据库多活集群的更多相关文章
- 11g RAC 集群数据库不能跟随集群启动
1.查看集群资源详细情况 [oracle@rac01-+ASM1 ~]$ crsctl stat res -p 2.修改集群资源ora.rac.db的auto_start属性改为always [ora ...
- 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
上篇博文中,我们介绍了做互联网级监控系统的必备-Influxdb的关键特性.数据读写.应用场景: 互联网级监控系统必备-时序数据库之Influxdb 本文中,我们介绍Influxdb数据库集群的搭建, ...
- MySQL数据库高可用集群搭建-PXC集群部署
Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上. PXC原理描述: 分布式 ...
- elasticSearch数据库、skywalking集群部署
Centos6上面安装elasticsearc数据库的集群 安装的是6.3.2版本,安装之前首先要先安装jdk1.8版本 安装之前首先需要关闭防火墙 Centos6 sudo service ipta ...
- centos7下部署mariadb+galera数据库高可用集群
[root@node1 ~]# cat /etc/yum.repos.d/mariadb.repo # MariaDB 10.1 CentOS repository list - created 20 ...
- nosql数据库之Redis集群
Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 ...
- SQL Server 负载均衡集群方案之Moebius
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...
- Moebius集群:SQL Server一站式数据平台
一.Moebius集群的架构及原理 1.无共享磁盘架构 Moebius集群采用无共享磁盘架构设计,各个机器可以不连接一个共享的设备,数据可以存储在每个机器自己的存储介质中.这样每个机器就不需要硬件上的 ...
- Deinstall卸载RAC之Oracle软件及数据库+GI集群软件
Deinstall卸载Oracle软件及数据库+GI集群软件 1. 本篇文档应用场景: 需要安装新的ORACLE RAC产品,系统没有重装,需要对原环境中的RAC进行卸载: #本篇文档,在AIX 6. ...
- ABP 框架 数据库底层迁移 Mysql 集群
技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...
随机推荐
- win10 wampserver升级 php7.0至 php7.2
1.去官网下载php7.2 下载地址: https://windows.php.net/download#php-7.0 2.下载安装 visual c++ 2017 或 visual c++ 20 ...
- js两个数组对象合并去重
- Unity学习笔记——坐标转换(3)
通过Transform.Translate移动物体 6个重载: public void Translate(float x, float y, float z, [De ...
- vue iview前端直接上传OSS
1. 首先安装oss npm install ali-oss --save 2. // template部分 <Upload ref="upload" type=" ...
- Java使用Redis实现分布式锁
1.概述 此处使用Redis的setNx命令和expire命令和del命令来实现分布式锁. 首先我们要知道, 我们的redis执行命令是队列方式的,并不存在多个命令同时运行,所有命令都是串行的访问.那 ...
- Win10 下Cisco AnyConnect Secure Mobility Client问题(转)
原文地址:http://blog.sina.com.cn/s/blog_66b9ff210102vup0.html 从WIN8升级到WIN10 ,Cisco AnyConnect ...
- windows 查看 tcp 连接表
netstat -ant|find /I "192.168.1.1" netstat -na -p tcp| findstr 80 | find "ESTABLISH&q ...
- [Unity移动端]Mono与IL2Cpp
参考链接: https://blog.csdn.net/linxinfa/article/details/87358809 https://blog.csdn.net/Aison_/article/d ...
- class3
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> #d ...
- fetch请求方式
Fetch请求的方式 1:GET 请求 // 未传参数 const getData = async () => { const res = await fetch('http://www.xxx ...