西安交通大学第二附属医院 西安市 710004
摘要:(1)加评论和补充解释,简明、确切地记述文献重要内容地短文,避免使用第一人称,应使用第三人称,摘要不分段,字数以200~300字为宜。(2)第一个关键词为该文所属相应栏目名称,第二个关键词为该文研究成果名称,第三个关键词为得到该文研究成果所采用的方法名称,第四个关键词为作为该文主要研究对象的事物名称,第五个及以后的关键词为作者认为有利于文献检索的其他名词。
关键词:MySQL,负载均衡、备份。
1、MySql 数据库的优势
如今很多大型网站已经选择MySQL数据库来存储数据。MySQL数据库的使用以及非常广泛,尤其是在Web应用方面。由于MySQL数据库发展势头迅猛,Sun公司于2008年收购了MySQL数据库。这笔交易的收购价格高达10亿美元。这足以说明MySQL数据库的价值。MySQL数据库有很多的优势除了总所周知的,MySQL是开放源代码的数据库、MySQL的跨平台性、功能强大且使用方便之外,下面总结了其中几个在于基础理论之上的核心优势:
MySQL基本原理和概念之上的核心优势分析
2、备份容灾基础及优势
备份的方法有很多,命令行上通过mysqldump进行全备份,开启二进制文件进行实时的增量备份,为防止物理上的不可抗性灾难,对于重要的备份数据,有必要通过上传到异地的服务器来确保数据的安全性。
为提高mysql数据库的并发负载能力,有必要对处理大数据量的数据库系统进行主从复制,读写分离等相对复杂的工作。
3、数据存储的方式和优势分析
分布式数据方案提供功能如下:
(1)提供分库规则和路由规则(RouteRule简称RR),将上面的说明中提到的三中切分规则直接内嵌入本系统,具体的嵌入方式在接下来的内容中进行详细的说明和论述;
(2)引入集群(Group)的概念,保证数据的高可用性;
(3)引入负载均衡策略(LoadBalancePolicy简称LB);
(4)引入集群节点可用性探测机制,对单点机器的可用性进行定时的侦测,以保证LB策略的正确实施,以确保系统的高度稳定性;
(5)引入读/写分离,提高数据的查询速度;
仅仅是分库分表的数据层设计也是不够完善的,当某个节点上的DB服务器出现了宕机的情况的时候,会是什么样的呢?是的,我们采用了数据库切分方案,也就是说有N台机器组成了一个完整的DB ,如果有一台机器宕机的话,也仅仅是一个DB的N分之一的数据不能访问而已,这是我们能接受的,起码比切分之前的情况好很多了,总不至于整个DB都不能访问。一般的应用中,这样的机器故障导致的数据无法访问是可以接受的,假设我们的系统是一个高并发的电子商务网站呢?单节点机器宕机带来的经济损失是非常严重的。也就是说,现在我们这样的方案还是存在问题的,容错性能是经不起考验的。当然了,问题总是有解决方案的。我们引入集群的概念,在此我称之为Group,也就是每一个分库的节点我们引入多台机器,每台机器保存的数据是一样的,一般情况下这多台机器分摊负载,当出现宕机情况,负载均衡器将分配负载给这台宕机的机器。这样一来,
就解决了容错性的问题。所以我们引入了集群的概念,并将其内嵌入我们的框架中,成为框架的一部分。
如上图所示,整个数据层有Group1,Group2,Group3三个集群组成,这三个集群就是数据水平切分的结果,当然这三个集群也就组成了一个包含完整数据的DB。每一个Group包括1个Master(当然Master也可以是多个)和 N个Slave,这些Master和Slave的数据是一致的。比如Group1中的一个slave发生了宕机现象,那么还有两个slave是可以用的,这样的模型总是不会造成某部分数据不能访问的问题,除非整个 Group里的机器全部宕掉,但是考虑到这样的事情发生的概率非常小。
我们的负载均衡器的主要研究放向也就是负载分发策略,通常情况下负载均衡包括随机负载均衡和加权负载均衡 。 随机负载均衡很好理解,就是从N个Slave中随机选取一个Slave。这样的随机负载均衡是不考虑机器性能的,它默认为每台机器的性能是一样的。假如真实的情况是这样的,这样做也是无可厚非的。假如实际情况并非如此呢?每个Slave的机器物理性能和配置不一样的情况,再使用随机的不考虑性能的负载均衡,是非常不科学的,这样一来会给机器性能差的机器带来不必要的高负载,甚至带来宕机的危险, 同时高性能的数据库服务器也不能充分发挥其物理性能。基于此考虑从,我们引入了加权负载均衡,也就是在我们的系统内部通过一定的接口,可以给每台DB服务器分配一个权值,然后再运行时LB根据权值在集群中的比重,分配一定比例的负载给该DB服务器。当然这样的概念的引入,无疑增大了系统的复杂性和可维护性。有得必有失,我们也没有办法逃过的。
有了分库,有了集群,有了负载均衡器,是不是就万事大吉了呢? 事情远没有我们想象的那么简单。虽然有了这些东西,基本上能保证我们的数据层可以承受很大的压力 ,但是这样的设计并不能完全规避数据库宕机的危害。假如Group1中的slave2 宕机了,那么系统的LB并不能得知,这样的话其实是很危险的,因为LB不知道,它还会以为slave2为可用状态,所以还是会给slave2分配负载。这样一来,问题就出来了,客户端很自然的就会发生数据操作失败的错误或者异常。这样是非常不友好的!怎样解决这样的问题呢? 我们引入集群节点的可用性探测机制 ,或者是可用性的数据推送机制 。这两种机制有什么不同呢?首先说探测机制吧,顾名思义,探测即使,就是我的数据层客户端,不定时对集群中各个数据库进行可用性的尝试,实现原理就是尝试性链接,或者数据库端口的尝试性访问,都可以做到,当然也可以用JDBC尝试性链接,利用Java的Exception机制进行可用性的判断,具体的会在后面的文字中提到。那数据推送机制又是什么呢?其实这个就要放在现实的应用场景中来讨论这个问题了,一般情况下应用的DB 数据库宕机的话我相信DBA肯定是知道的,这个时候DBA手动的将数据库的当前状态通过程序的方式推送到客户端,也就是分布式数据层的应用端,这个时候在更新一个本地的DB状态的列表。并告知LB,这个数据库节点不能使用,请不要给它分配负载。一个是主动的监听机制,一个是被动的被告知的机制。两者各有所长。但是都可以达到同样的效果。这样一来刚才假设的问题就不会发生了,即使就是发生了,那么发生的概率也会降到最低。
3 MySQL Enterprise Monitor在数据库方面的维护优势
MySQL Enterprise Monitor让您能够实时了解 MySQL 服务器的性能和可用性。MySQL Query Analyzer 提供了一个包含查询活动和执行详情的整合视图,可帮助开发人员和 DBA 迅速发现性能调优机会。使用 MySQL Query Analyzer,开发人员能够:
●迅速识别导致应用性能下降的问题最严重的查询
●使用高级搜索排查特定的查询问题,如全表扫描和坏索引
●直观地将选定时间段内的查询执行与 MySQL 服务器活动关联起来
深入了解详细的查询统计信息,迅速确定查询发生问题的原因。
使用 MySQL Query Analyzer,开发人员可以通过选中任意时间序列图上的一个时间片,迅速找到选定时间段内在选定资产上执行的问题最严重的查询。
Oracle Enterprise Manager for MySQL 为Oracle开发人员和DBA提供实时监控,包括全面的性能、可用性和MySQL数据库配置信息。Enterprise Manager收集超过500个指标,覆盖各种MySQL组件。可以通过设置每个收集指标来定制警告阈值。另外,DBA可以按照时间的推移来跟踪配置细节,轻松地跟踪配置更改。
二、结论
MySQL 是全球最流行的开源数据库软件。全球许多发展迅猛的行业巨头以及大型企业,医院等都使用 MySQL 来支持其高流量网络、关键业务型系统和软件包,从中节省了大量时间和资金。
三、参考文献
[1]关于企业数据备份云化的部署和应用[J]. 刘晔丽. 信息通信. 2019(09)
[2]基于MySQL的数据管理系统设计与实现[J]. 苟文博,于强. 电子设计工程. 2017(06)
[3]MySQL数据库后台优化方案[J]. 吴霁轩. 科技创新与应用. 2016(22)
[4]搭建MySQL数据库主从库平台实现数据备份[J]. 王锐. 电脑编程技巧与维护. 2011(19)