范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

规避单点故障,MySQL8。0MGR软负载怎么选?

  本文转载自dbaplus社群
  作者介绍
  毛思平,12年IT工作经验,7年数据库管理维护经验,现就职于中国农业银行软开中心,从事数据库应用研究。
  一、背景简介
  近期笔者所在部门计划批量上线一批基于MySQL 8.0社区版的系统,数据库部署架构为MySQL MGR一主两从并由MySQL Router组件实现读写分离,为了规避MySQL Router单点故障,提高系统稳定性架构设计过程中增加了软负载和以及Keepalived,并将软负载及Keepalived部署在管理节点,管理节点主备部署达到高可用目的,整体架构如下图。
  另外目前市场上负载软件比较多但大部分面向web应用,笔者梳理发现Haproxy和Nginx在数据库方面有一定应用案例,尤其Haproxy在MySQL主从复制方面应用较广。那么这两款软负载是否可以应用在MySQL8.0 MGR上,谁的性能更好呢,该如何选择呢?带着疑问笔者做了一系列性能比较。
  二、环境配置
  硬件配置
  颖
  测试硬件环境均采用虚拟机,具体配置如下表:
  序号
  节点
  CPU
  内存
  磁盘
  IP
  管理节点1
  4G
  32G
  10.*.*.216
  管理节点2
  4G
  32G
  10.*.*.217
  数据库节点1
  8G
  128G
  10.*.*.210
  数据库节点2
  8G
  128G
  10.*.*.211
  5
  数据库节点3   8G   128G   10.*.*.212   6
  虚拟IP   -   -   -   10.*.*.218   软件配置   颖   参与测试软件版本配置如下表:   序号   节点   版本   操作系统   CentOS 8.0   数据库   MYSQL 8.0.18   keepalived   2.0.10   haproxy   1.8.15   5
  ngnix   1.18.0   三、软件配置   关于MySQL MGR配置网上有很多相关教程此处不赘述,以下是关于软负载及高可用插件关键配置。   Keepalived配置   颖   完成keepalived软件安装后,只需要在/etc/keepalived目录下修改keepalived.conf文件,修改完成后执行systemctl start keepalived即可,需要修改地方如下:   vrrp_instance VI_1 {   state MASTER #不用修改,本方案采用争抢模式管理节点主备一致   interface ens192 #在用网卡名称   virtual_router_id 51 #虚拟路由ID取值0-255   priority 100 #优先级 本方案采用争抢模式管理节点主备一致   advert_int 1 #探活频率 单位秒   authentication { #认证机制及密码   auth_type PASS   auth_pass 11111111 }   virtual_ipaddress { #虚拟地址配置   10.*.*.218 }   track_script { #自定义探活方法   chk_alived   }   vrrp_script chk_haproxy {   script "/etc/keepalived/checkalived.sh" #探活脚本位置   interval 3 #重新探活时间间隔   weight -5 #失败后权重设置   }   探活脚本Checkalived.sh配置如下以Nginx为例:   #!/bin/bash   if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then   systemctl stop keepalived #当发现Nginx不存在时停止该节点Keepalived由备节点接管   fi   以上配置主备管理节点一致即可。   Haproxy配置   颖   完成Haproxy安装后,只需在/etc/haproxy修改haproxy.cfg文件后执行systemctl start haproxy即可。配置文件主要修改以下内容:   listen mysqlrw   bind :3366 #虚拟IP读写访问端口   mode tcp #访问协议   balance roundrobin #负载均衡算法   #数据库ip 地址及访问断开,300为软负载最大连接数   server mysql1 10.*.*.210:6446 check port 6446 maxconn 300   server mysql2 10.*.*.211:6446 check port 6446 maxconn 300   server mysql3 10.*.*.212:6446 check port 6446 maxconn 300   listen mysqlro   bind :3367 #虚拟IP读访问端口   mode tcp #访问协议   balance roundrobin #负载均衡算法   server mysql1 10.*.*.210:6447 check port 6447 maxconn 300   server mysql2 10.*.*.211:6447 check port 6447 maxconn 300   server mysql3 10.*.*.212:6447 check port 6447 maxconn 300   listen stats #图形展示界面地址及端口   bind 10.230.137.218:1080   mode http   option httplog   maxconn 10   stats refresh 30s   stats uri /dbs   stats realm XingCloud Haproxy   stats auth admin:admin   stats hide-version   stats admin if TRUE   Nginx配置   颖   完成Haproxy安装后,只需在/etc/nginx/conf下修改nginx.conf,在stream方法下添加以下内容即可,添加完成后执行systemctl start nginx即可启动服务,添加如下:   stream {-   upstream db{   server 10.*.*.210:6446;   server 10.*.*.211:6446;   server 10.*.*.212:6446;   }   server{   listen 3366;   proxy_pass db;   proxy_connect_timeout 2s;   access_log /usr/local/nginx/logs/access3366_log mysql; --读写日志输出路径   }   upstream dbro{   server 10.*.*.210:6447;   server 10.*.*.211:6447;   server 10.*.*.212:6447;   }   server{   listen 3367;   proxy_pass dbro;   proxy_connect_timeout 2s;   access_log /usr/local/nginx/logs/access3367_log mysql; --读日志输出路径   }   }   四、测试方法   测试功能点   测试方法   判断依据   负载软件负载分发是否均衡   批量执行数据库查询操作,检测负载软件负载分发情况。   各个数据库节点均匀获得分发会话。   负载软件是否能识别MySQL Router单点故障   通过Kill掉任意数据库节点单个MySQL Router进程,检测负载软件负载分发情况。   无MySQL Router故障节点,各数据库匀获得相同分发会话。   负载软件负载分发性能比较   批量执行数据库查询操作,统计同等会话量,负载软件耗时。   同会话数量会话分发耗时短的负载能力更强。   负载软件高可用验证   通过Kill掉管理节点负载进程模拟负载软件故障,通过虚拟IP登陆数据库验证备管理节点是否正常。   虚拟IP登陆数据库正常,表明备节点软负载正常分发会话。   五、测试结果   负载软件负载分发是否均衡   颖   通过编写批量执行SQL的形式,访问数据库,并统计两款负载软件各节点分发情况。Haproxy通过软件自带图行界面统计,Nginx由于采用的是免费版通过后台日志统计负载分发情况。   批量SQL核心算法如下:   echo -e   while true   do   mysql -u$USER -p$PASSWORD -h$ROUTE_HOST -P$RW_PORT --protocol=TCP -e"${SQL_TEXT1}"   let COUNT+=1   if [ $COUNT -ge $SESS_NUM ]   then   break   fi   done   Haproxy发起64次查询后各个节点会话分发情况,如下图。   Nginx发起64次查询后各个节点会话分发情况,如下图。   测试结果如下:   负载软件是否能识别MySQL Router单点故障   颖   选择任意数据库节点,Kill -9 杀死MySQL Router进程,同样的方法测试验证负载软件会话分发情况,测试结果如下。   负载软件负载分发性能比较   颖   通过批量执行空查询SQL:select @@hostname,统计相同并发下不同负载软件分发耗时测算负载软件负载分发效率,测试结果如下:   负载软件高可用验证   颖   当在主节点杀死负载程序后,虚拟IP切换到了备节点,通过虚拟IP能正常登陆数据库,以Nginx为例。   1)在主管理节点杀死Nginx进程:   2)在主节点查看虚拟IP是否存在:   3)在备节点查看虚拟IP是否切换过来,判断Keepalived是否主备切换。   4)在以虚拟IP登陆数据库验证备节点负载分发是否正常。   由上测试可以看出该架构满足软负载高可用需求,即管理节点软负载故障,备节点通过keepalived探测异常后接管升级成主。同样方法测试Haproxy也满足,在此不赘述。   六、结论   功能方面,Haproxy和Nginx两款软负载软件均能实现多并发读写均衡分发,在MySQL Router出现故障时Haproxy和Nginx均能识别故障并转移连接到正常运行节点。Haproxy和Nginx均能在keepalived下实现高可用。   性能方面,在并发能力发面,同等软硬件条件Haproxy与Nginx相差不大,相同并发量两个负载软件分发耗时相近。   易用性方面,Haproxy提供图形界面能直观查看各个服务端口负载分配情况,连接时长,失败连接次数,并能直观显示故障节点等。Nginx无图形管理界面,需要单独加载日志监控模块,需要手动配置日志输出,从后台日志查找个节点连接情况比较麻烦。   高可用性方面,两款软负载+Keepalived均能规避MySQL Router单点故障,同时主备模式的设计使负载软件自身也具备高可用,避免单点故障对整个集群架构造成影响。

别把孩子尿床不当回事!不知道的家长要注意了相信大多数的家长都不把孩子尿床当回事,觉得孩子小时候尿床很正常不是什么怪病,等长大后就不会出现这种情况了。但是也有部分家长对孩子尿床的情况感到非常苦恼,想知道孩子尿床到底是不是一种不知道儿童抽动症的家长注意了!建议收藏近年来,小儿抽动症的发病率每年都在上升,引起了很多家长以及相关人士的重视。如果抽动症不及时治疗,会对孩子以后的成长带来很大不利的影响,不仅会危害孩子的智力成长,而且还会对身体发育和孩子语言发育迟缓?学会这几个说话的小技巧很多家长在面对自己的孩子有语言发育迟缓的问题不知道该怎么做,从何下手!我们要先知道孩子说话的重要阶段在哪里,比如在孩子03岁的时候,孩子的大脑发育处于发展状态,父母与孩子沟通交流可孩子比同龄儿童矮了一大截?怎么吃也长不高?家长要重视我家的孩子现在都13岁了,别的孩子现在都开始发育了,而我们家的孩子一点动静都没有,而且我们家长本身身高就不高,怕孩子长不高,怎么办啊?孩子比同龄儿童矮了一大截?怎么吃也长不高,还补孩子糖吃多了会不会影响孩子的智力?有很多家长私信我说孩子糖吃多了会不会影响孩子的智商问题?孩子糖吃多了对孩子会不会有一定的危害?有的家长只知道孩子糖吃多了对牙齿不好,会对孩子的牙齿健康受影响,但是家长不知道的是孩子孩子两岁还不会说话的几个原因,家长们知道吗?相信大部分家长都希望自己的宝宝能健康成长,因为孩子的健康对一个父母来说是非常重要的。而且家长都希望自己的孩子可以快点说话,听孩子叫一声爸爸妈妈,但是每个孩子的身体情况不一样,有的孩孩子性早熟的这些方面家长都了解吗?儿科医生一分钟带你了解相信性早熟这三个字家长们应该都不陌生吧!随着现代社会水平的发展,生活水平的提高,家长也注重起了孩子的营养,但是大量的给孩子补充营养带来的却是适得其反,使孩子出现了性早熟的现象。现在孩子逃学厌学怎么办?家长应该怎样做呢?古往今来,孩子不爱上学对于父母来说是一件非常棘手的事情。很多孩子因为过于贪玩,不想上学,甚至对于孩子本人来说上学是一件极其厌恶的事情。这让很多家长感到很迷茫,不知道该从何处下手来给孩子长不高,家长怎么办?99的家长不知道孩子矮小的原因孩子是否能长高是由很多因素决定的,每个孩子的个体不同,遗传基因不同,孩子们的身高也是有差异的。但好在孩子还在幼儿时期,只要用对方法,孩子就有很大的长高的空间,宝爸宝妈还是要重视起来改善幼儿语言发展的建议,家长们可以参考一下在宝宝出生后,父母最期待的就是孩子可以开口说话,叫一声爸爸妈妈,可是有的孩子迟迟不开口,让父母感到非常担忧,担心孩子是不是语言发育迟缓的问题。难道孩子说话晚真的是语言发育迟缓造成的孩子长不高家长担心孩子是矮小症?大多数家长往往都因为自己的孩子身高矮小而发愁,孩子明明到了该长身体的时候却一点变化都没有,而且跟许多同龄儿童相比,孩子的身高跟他们差了一大截。家长就开始怀疑孩子是不是患有了矮小症?
请停止谩骂和攻击女童打针哭闹被父亲摔飞,绝对不是家暴和虐童今天看到一则视频,内容大致是一名女童在打针时,由于害怕而哭闹不止,孩子父亲哄来哄去,反复劝说,却始终无法令孩子勇敢起来,配合打针。持续1小时有余,最后出现了父亲情绪失控,在孩子屁股儿子从小就想当老师,该支持吗?感谢邀请!兴趣是最好的选择,应该支持!理由如下一有兴趣的时候才能投入最大的精力做某项工作,有两种情况要我做与我要做,结果可能不一样。(一)要我做我不愿意做,但是因为某种原因不得不做顶嘴不服管青春期叛逆亲子关系紧张?六大秘籍来调整青春期的孩子处于发育阶段,有些小孩会因为生理和心理方面的变化做出异样的举动。常听到一些父母抱怨现在的青春期孩子咋这么叛逆,我们那个时候啥事都没有!也有一些朋友热情支招什么青春期叛逆自己儿子取个名字竟然和自己一点关系都没有我家宝宝出生的时候八斤八两,男孩。在我认识的朋友家的宝宝出生时候的重量都没有我家宝宝这么重的!本来打算让媳妇顺产的,听了医生的建议还是选择剖腹产,还打算三年生两的!这下不用想了!出8岁男孩以打妈妈为乐,妈妈浑身疼痛却无计可施,孰之过?爱是个动词前几天看超级育儿师,有一个男孩的举动让人震惊男孩才8岁,正是活泼可爱的年纪,却经常打妈妈,而且下手特别重,男孩会拽着妈妈的衣服,用力掐,用指甲抓,用拳头打,还用头撞妈妈的父母要懂别把孩子长期留在家里,给老人独自带你怎么看?我家孩子从8个月开始,就放在老家给我妈妈带了,我是因为孝顺才这样做的,所以我认为自己做得很对。我和老公一直在广东工作,从怀孕开始,我就计划让我妈妈来帮我带孩子,我妈妈关心我所以就答孩子在家里偷拿钱,家长别急着呵斥,智慧家长会这么做在孩子年龄小的时候,往往不知道金钱的作用,但是随着孩子渐渐长大,懂得了金钱可以自己想要的东西,难免就特别渴望得到金钱。一旦遇到自己想要的东西,父母却不给买,那么就会产生邪念,偷钱买柳林庙湾幼儿园举办强国梦幼儿梦亲子运动会为充分调动幼儿参与体育活动的积极性,体验运动带来的快乐,提升幼儿集体荣誉感。近日,庙湾幼儿园举办强国梦幼儿梦第八届春季亲子运动会。县教育工委和幼儿园负责人作了运动会开幕式致辞,提倡小舍得子悠欢欢米桃别人笑我太疯癫,我笑他人无我妈正所谓有舍才有得!在小舍得中,子悠欢欢米桃纷纷变成了疯癫状态子悠失去了足球,出现了抑郁,产生了幻想欢欢失去了欢乐,闷闷不乐地离家出走米桃自卑地低下了头。之所以三个孩子都出现了情绪的什么是善良?11岁带面具卖樱桃的给我们做了最美好的诠释很多人在教育孩子时都会灌输善良对人的思想,但对于善良的真正意义又有几个人来解释清楚呢!这两天我被一个11岁的小男孩感动着,吸引我关注他是因为他的奥特曼面具,因为我儿子也喜欢,于是就太太计划备孕,她又喜欢猫狗,总想养,我该怎么办?猫狗讲好卫生。不要让孕妇吃鲜热乎的猫屎就没啥事。你就一边学猫叫,一起喵喵喵。一边学狗叫,一起汪汪汪。狗还行,只要保证给它经常洗澡,出门溜时不要让狗去草坪上嗅,保证卫生,不会有多大问