设为首页 收藏本站
查看: 614|回复: 0

[经验分享] mysql多主多从架构与mysql-proxy读写分离

[复制链接]

尚未签到

发表于 2018-9-28 06:56:21 | 显示全部楼层 |阅读模式
  mysql多主多从架构与mysql-proxy读写分离
  最近心血来潮想要部署几台mysql的服务器,实现一个多主多从的服务器架构,并且要在这个架构上利用mysql-proxy实现读写分离操作,之前只是搭建过一主多从的架构,原本以为多主多从的架构也会非常简单,但是过程中还是发现了一些比较有意思的地方,所以我决定还是写一篇博客来记录一下。
  下面是我的mysql多主多从架构拓扑图:
DSC0000.jpg

  主从结构以及IP地址已经很明显,接下来我说说我的配置,以及在我搭建过程中遇到的一些比较有意思的问题。
  主从同步的具体配置过程可以参考本人博客:http://8838848.blog.51cto.com/8828848/1538999
  互为主从结构只不过是在master1于master2上互相设置主服务器为对方:
  本机登录master1的数据库:
  mysql > changemaster to \
  -> master_host=’10.60.77.207’ ,\
  ->master_user=’slaveuser’, \
  ->master_password=’123456’, \
  ->master_log_file=’mysqld-bin.000001’, \
  ->masetr_log_pos=243;
  此处有一个问题,每一条配置后面都要有一个英文逗号作为分隔,如果不写或者写成别的符号会报错。记得有一次在配置的过程中我就没写逗号,然后一直报错,后来反复检查发现这个逗号是必不可少的。
  至于两台从服务器配置与我上述博客中的配置完全相同,配置完成后开启主从服务,正式开始测试阶段,就是在这个时候,开始出现问题,我的测试过程如下:
  先在master1上创建一个新的数据库,然后,在slave1上和master上查看,此时数据是正常的。但是在slave2上查看的时候我发现slave2并没有将该数据库同步过来。发现这个问题之后,我就去master2上新建一个数据库,和我猜想的一样,除了slave1以外的主机都可以正常同步。
  这个问题很值得思考,为什么会有这样的结果,后来经过思考、询问大牛等发现,这个机制其实就类似于某些路由选择协议中的放环机制,防止sql语句在各台设备中出现回环。
  同时,在大牛的帮助下,找到了实现上述架构的配置选项。当你需要链式复制的时候,如A->B->C,你就必须在B主机上的mysql中添加一条配置:
  log_slave_updates,此配置允许链式复制。
  在本文的架构中,master1和master2的mysql配置文件中的[mysqld]部分中添加上述配置,然后重启两台服务器的mysql服务。这次再测试一下发现,所有的机器上都可以正常同步了。
  上述问题是在搭建主从结构的时候遇到的一个问题,接下来,我在搭建mysql-proxy的时候无意中又发现了一个问题,注意,上述测试过程中,我第一次在master1和master2分别创建的测试数据库在slave2和slave1上是没有同步到的,也就是我在搭建mysql-proxy服务的时候,在slave1和slave2上数据库其实是不同的。
  关于使用mysql-proxy搭建读写分离的实验可以参考我的博客http://8838848.blog.51cto.com/8828848/1539134,此次我发现的问题不在服务的配置上。
  在我测试的过程中,我连接mysql-proxy读取数据,发现我此时查看到的数据库是slave1和slave2上的数据的和,也就是slave1和slave2上面所有的数据库我都能看到。这也就意味着,mysql-proxy在分配读写请求的时候并不是按照负载均衡的方式来分配读写的,而是请求会同时分配到两台主机上,两台主机同时响应该请求。
  这个问题的发现使我对我这个小架构有了一个新的认识,原来我设计这个架构的初衷是为了提供一个负载均衡的效果,现在看来使用mysql-proxy并不能实现负载均衡,倒是可以提高系统的性能,因为这相当于两台机器合成成了一台服务器在提供服务嘛。
  这篇博客可能技术含量不大,但是这些问题的确是我在工作中摸索出来的经验,所以我还是决定把这些记录下来,作为我给人的一个技术积累,欢迎各位看官给我留言,也请大神不要喷我。
  我们都是手艺人,运维也是一种手艺,是一门艺术,我爱这一行,我爱我的工作。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602977-1-1.html 上篇帖子: MySQL高可用之MHA—部署MHA 下篇帖子: mysql重命名表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表