欢迎来到天天文库
浏览记录
ID:1343625
大小:1.11 MB
页数:31页
时间:2017-11-10
《mysql高可架构设计方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MySQL高可架构设计方案2.1.高可用环境高可用(HighAvailability)有两种不同的含义,在广义环境中,是指整个系统的高可用特性,在狭义方面,一般指主机的冗余接管,如主机HA。我们目前的产品及相关系统平台主要都倾向于广义上的高可用。一个良好的高可用环境,不仅仅能避免系统本身的问题,还能防止天灾人祸,并且有一个简单可靠的系统维护方法,同时能在最小的成本资源下产生最大的效益。高可用的计算方法一般以年在线率来计算,例如规定整个系统一年之中的可用环境要达到99.95%,那么24*365*(1-99.95%)
2、=4.38小时(包括计划内维护时间)。另外,子系统的可用性一定会高于整个系统的可用性,如整个系统的可用性为99.95%,则对于子系统,可用性可能就是要求达到99.999%。图2-1高可用级别对照表在实际产品开发中,很难达到100%的在线能力,即使真的达到,代价会非常大。一般能达到99.9%以上的可用性的环境,都可以认为是比较高的可用环境。图2-2收益与成本在公司收益与投入成本计算方面取得一个平衡,则是最终所希望的在线效率,但是收益与成本的计算方法则是决策者与实施者需要着重考虑的问题,适合自己的高可用环境即是最好的
3、,不能盲目地追逐过高的可用性。2.2.主要风险在一个高可用的环境中,会遇到各种风险,主要的风险如下Ø系统失败或崩溃(Systemfaultsandcrashes)Ø应用层或中间层错误(Applicationandmiddlewarefailures)Ø网络失败(Networkfailures)Ø介质失效,一般指存放数据的媒体介质故障(Mediafailures)Ø人为失误(HumanError)Ø分级与容灾(Disastersandextendedoutages)Ø计划宕机与维护(Planneddowntime,
4、maintenanceandmanagementtasks)2.3.面临的主要问题使用MySQL+PC服务器来构建高可用的MySQL集群会遇到一些主要的问题,这些问题如果忽略了或者没有去解决好,是会对高可用造成影响的,设置直接影响到整个产品及系统的稳定运行。ØMySQL会丢数据吗ØMySQL自身的稳定性怎么样ØMySQL的性能怎么样ØMySQL如何快速自动切换ØMySQL如何进行可靠的容灾ØMySQL主备库数据的一致性校验ØMySQL备库同步延迟,备库跟不上主库ØMySQL在线DDL锁表(阻塞写)怎么解决Ø相比商
5、业软件成熟的解决方案,MySQL+PC架构其高可用性如何保证3.MySQL数据可靠性3.1.背景ØMySQL实例Down掉会不会丢数据ØMySQL服务器Down掉(比如断电、CPU、内存损坏等)会不会丢数据Ø硬盘坏掉会不会丢数据说明:MySQL丢数据更多地是指,MySQL采用PC服务器,PC服务器存在硬件损坏的可能性(比如CPU、内存、硬盘坏掉),从而导致丢数据。3.2.解决方案1、传统思路共享存储2、非共享存储思路可以分开对MySQL和应用两个方面进行一定的设置和处理,相当于是双保险的方式,使数据不丢失。对于M
6、ySQLØ设置innodb_flush_log_at_trx_commit=1设置为1:每个事务日志都Flush到磁盘设置为2:每个事务刷到logfile中,每秒Flush到磁盘Ø设置sync_binlog=1设置为0:事务提交后,MySQL不做fsync之类的磁盘同步命令刷新binlog_cache中的数据到磁盘,而让文件系统自行决定什么时候同步,或Cache满了后才同步到磁盘。设置为1:事务提交后,MySQL会将binlog_cache中的数据强制写入磁盘,是最安全的设置。Ø设置innodb_support_
7、xa=true设置为1:是否支持分布式事务(默认是打开)设置为0:不支持分布式事务如果确认应用中不需要使用分布式事务,可关闭该参数ØSlave远程binlog通过Slave来保证数据不丢失,binlog实时传送到远程Slave,如果主备库之间的网络较好的话,一般的(依赖于RTT),备库的时间基本上在毫秒之内。Ø半同步复制(Semi-Sync)半同步复制总体上可以保证数据的零丢失,但是可能对性能会有少许影响,会造成约20%的TPS下降。说明:1、innodb_flush_log_at_trx_commit、sync
8、_binlog、 innodb_support_xa三个参数的设置在保证数据安全性和可靠性的同时,对性能是有一定的牺牲的。innodb_flush_log_at_trx_commit、sync_binlog都为0时,性能比其中一个设置为1高出约几百倍;innodb_flush_log_at_trx_commit、sync_binlog都为1时,性能比其中一个设置为1相差约
此文档下载收益归作者所有