免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 飞鸿无痕
打印 上一主题 下一主题

【原创】Amoeba搞定mysql主从读写分离 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2010-10-30 09:33 |只看该作者
回复 39# luwenju


    老人家不敢当,哈哈,你这个就是主主同步的设置了,两台机子互为主从!如果后面有从服务器,请开启log-slave-updates,把同步的更新写入二进制日志中去!

论坛徽章:
0
42 [报告]
发表于 2010-10-30 09:37 |只看该作者
回复 41# 飞鸿无痕


“如果后面有从服务器,请开启log-slave-updates”

如果后面有从服务器的话怎么设置啊?  前面可是有两个主呢

论坛徽章:
0
43 [报告]
发表于 2010-10-30 09:41 |只看该作者
回复 1# 飞鸿无痕


其实部署要求是这样的:一主两从,一个主负责写,两个从负责读;当主挂掉时,从接管


昨天你告诉我MMM可以,但是我看一下MMM,中文资料相当的少。。

论坛徽章:
0
44 [报告]
发表于 2010-10-30 09:43 |只看该作者
回复 42# luwenju

这个问题,因为两个主库的数据是一样的,你可以选择其中一个主库做该从库的主库,也可以lvs监听的那个虚拟IP做主库,这样,如果选择后者当主库出现问题的时候可以不用去手动更改!如果你运气不好,选择了从其中一个主库挂掉就得手动转到另外一个库!

论坛徽章:
0
45 [报告]
发表于 2010-10-30 09:45 |只看该作者
回复 43# luwenju


    用于生产还是建议用mmm架构,那个架构相对来讲成熟了很多!mmm的资料应该很多吧,我没有具体实施过那个架构,呵呵!

论坛徽章:
0
46 [报告]
发表于 2010-10-30 09:51 |只看该作者
回复 45# 飞鸿无痕


用LVS那个后面再加从服务器我明白了  嘿嘿     太感谢了  


MMM真能实现这个要求吗?-----------------“一主两从,一个主负责写,两个从负责读;当主挂掉时,从接管”

论坛徽章:
0
47 [报告]
发表于 2010-10-30 10:18 |只看该作者
回复 46# luwenju


    mmm架构只是让设置浮动IP让你的服务器挂了另一个马上接管,读写分离应该通过别的工具实现,比如:mysqlproxy,或者程序实现,或者amoeba

论坛徽章:
0
48 [报告]
发表于 2010-10-30 10:57 |只看该作者
回复 47# 飞鸿无痕


嗯    谢谢兄弟  {:3_183:}

论坛徽章:
0
49 [报告]
发表于 2010-11-04 11:32 |只看该作者
回复 36# luwenju

今天又研究了下关于切换的问题,如果你设置的主从,这样切换会出现问题,应为如果主停掉,由于default pool中只有一个master,所以会报如下错误:
mysql> java.lang.Exception: poolName=master, no valid pools
        at com.meidusa.amoeba.net.poolable.MultipleLoadBalanceObjectPool.borrowObject(MultipleLoadBalanceObjectPool.java:174)
        at com.meidusa.amoeba.mysql.handler.CommandMessageHandler.startSession(CommandMessageHandler.java:571)
        at com.meidusa.amoeba.mysql.handler.MySqlCommandDispatcher.handleMessage(MySqlCommandDispatcher.java:104)
        at com.meidusa.amoeba.mysql.net.MysqlClientConnection$2.run(MysqlClientConnection.java:231)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:90
        at java.lang.Thread.run(Thread.java:619)
因为你的那个pool没有可用的机器,又是你的default pool设置所以出现问题,解决办法是设置成主主同步,在master上设置两台mysql主服务器,这样如果一台出现问题就会把写入操作都转换到另外一台,当故障的主机回复以后又会两个都会写入!测试的结果是几秒就能完成切换,很快,不影响服务!配置如下:

                    <dbServer name="master" virtual="true">
                        <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                                <property name="loadbalance">1</property>
                                <property name="poolNames">server1,server2</property>
                        </poolConfig>
                </dbServer>

                 <dbServer name="slave" virtual="true">
                        <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                                <property name="loadbalance">1</property>
                                <property name="poolNames">server1,server2</property>
                        </poolConfig>
                </dbServer>

论坛徽章:
0
50 [报告]
发表于 2011-02-10 15:48 |只看该作者
怎么没有人继续研究amoeba了呢?关于amoeba的性能测试如何啊?有没有这方面的报告啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP