
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库架构开发是大多数软件编程开发程序员都应该熟练掌握的一个编程技术,而本文我们就通过案例分析来简单了解一下,数据库高可用架构步骤分享。
1背景
在大型互联网场景中,数据库的高可用性显得尤为重要,为了保证稳定性,一般需要采用强化的架构模式,以保证数据层能够提供持续有效的稳定支撑。
2高可用架构的基本演进过程
2.1基本的数据库架构
每个服务对应一个存储服务实例(基本是数据库单实例模式),使用IP+Port进行连接和调用,这就是大家常见的数据库直连。
用户计算服务(svc)配置IP+端口指向数据库实例地址,进行访问和操作。
2.1ScaleUp+ScaleOut模式
互联网场景下,理论上访问量和数据量都是不断膨胀的过程。随着数据量的增大,数据库一般要进行纵向(ScaleUp)和横向(ScaleOut)的拆分,分库分表之后可能会将数据拆分到不同的数据库实例,甚至不同的IDC上,这样可以降低数据量,提高执行性能的目的。
2.3主从或主主+Keepalived架构
以上只是解决了数据库大容量的问题,将数据库的风险降低,性能提升。并没有实质的解决可用性问题,如果其中一个数据库实例出现故障,
依然会造成大面积的不可用。
两个库(主主或者主从)使用相同的虚拟IP,当主库挂掉的时候,虚ip自动转移到另一个主库(或者转移到从库上,并将从库切为主库),这个切换过程对业务应该是透明无感的,也不会造成使用上的异常,以此保证数据库的高可用性。
2.4分片分库模式下的高可用性
可以继续从2.3演化出分片分库模式下的高可用架构,如果数据库继续膨胀,流量继续扩展,还可以继续扩容,找到恰当的分片模式。
2.5其他常见的高可用模式
2.5.1MHA
MHA(MasterHighAvaliable)是一款MySQL开源高可用程序,MHA在监测到主实例无响应后,会自动将同步靠前(即数据偏移量少)的Slave提升为Master,然后其他所有的Slave重新指向新Master。
2.5.2PXC
PXC(PerconaXtraDBCluster)是一种开源的MySQL高可用解决方案。它将PerconaServer、PerconaXtraBackup与Galera库集成在一起,以实现多主复制的MySQL集群。
缺点是只支持InnoDB引擎模式,且多主数据同步必然会有性能损耗、同步延迟和数据差异风险。
另外,这种多主同步模式具有的木桶效应,系统的吞吐被差的节点左右。
2.5.3MGR/InnoDBCluster
MySQL5.7退出了高可用的的模式MGR(MySQLGroupReplication),他具备了多节点数据写入和强一致性的特点,这一点跟与PXC相似。同时采用GroupCommunicationSystem(GCS协议)进行数据同步来保证消息的原子性。
2.6高可用模式下的平滑扩容
互联网大流量场景下我们经常会发现存储层容易出现瓶颈,这个时候就需要扩容。
相对于停服扩容来说,无损、透明、平滑的数据库扩容才是我们实际追求的目标。
增加数据库分片3,进行数据架构初始化和数据同步
增加数据库主从配置,将2个库的数据库配置,改为3个库的数据库配置,并注意旧库与新库的映射关系。
服务层reload(重新加载)配置,完成扩容工作。
删除分片之后的冗余数据,必要的话进行数据库缩容。
服务层根据条件映射到不同的数据库实例中。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。