基于Mycat实现的mysql的读写分离
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于Mycat实现的mysql的读写分离,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4338字,纯文字阅读大概需要7分钟。
内容图文
![基于Mycat实现的mysql的读写分离](/upload/InfoBanner/zyjiaocheng/478/8963504b7af74dff9c2878719b30a312.jpg)
mycat就相当于一个调度器,具有数据库分片功能,本身不存储数据, 其功能是对后端的真实数据库的数据,进行数据划分和数据整合,方便管理
HOW-Mycat-Read&&write separation
现在让我们通过mycat实现数据库的读写分离
本实验中其他配置文件,参见 基于mysql的主从复制之Mycat简单配置和高可用
定义读,写节点
vim schema.xml
19 <table name="employee" primaryKey="ID" dataNode="dn1,dn2"
20 rule="sharding-by-intfile" />
43 <dataHost name="server33.lalala.com" maxCon="1000" minCon="10" balance="1"
44 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
45 <heartbeat>select user()</heartbeat>
46 <!-- can have multi write hosts -->
47 <writeHost host="hostM1" url="server33.lalala.com:3306" user="mycat"
48 password="Mycat+007">
49 <!-- can have multi read hosts -->
50
51 <readHost host="hostS1" url="server55.lalala.com:3306" user="mycat"
52 password="Mycat+007">
53 </readHost> <!-- can have multi read hosts -->
54 <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
55 </writeHost>
56 </dataHost>
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
参数说明:
balance=”1″ writeType=”0″ switchType=”1″
balance
1、balance=0 不开启读写分离机制,所有读操作都发送到当前可用的writehostle .
2、balance=1 全部的readhost与stand by writeHost 参与select语句的负载均衡。简单的说,双主双从模式(M1àS1,M2àS2,并且M1和M2互为主备),正常情况下,M1,S1,S2都参与select语句的复杂均衡。
3、balance=2 所有读操作都随机的在readhost和writehost上分发
writeType
负载均衡类型,目前的取值有3种:
1、writeType=”0″, 所有写操作发送到配置的第一个writeHost。
2、writeType=”1″,所有写操作都随机的发送到配置的writeHost。
3、writeType=”2″,不执行写操作。
switchType
1、switchType=-1 表示不自动切换
2、switchType=1 默认值,自动切换
3、switchType=2 基于MySQL 主从同步的状态决定是否切换
创建只写用户和只读用户
vim server.xml
80 <user name="mycat">
81 <property name="password">Mycat+007</property>
82 <property name="schemas">JamesMycatSchema</property>
83
84 <!-- 表级 DML 权限设置 -->
85 <!--
86 <privileges check="false">
87 <schema name="TESTDB" dml="0110" >
88 <table name="tb01" dml="0000"></table>
89 <table name="tb02" dml="1111"></table>
90 </schema>
91 </privileges>
92 -->
93 </user>
94
95 <user name="mycat_r">
96 <property name="password">cat</property>
97 <property name="schemas">JamesMycatSchema</property>
98 <property name="readOnly">true</property>
99
100 </user>
检测
关闭salve的sql_线程
(因为我们要做读写分离,所以数据库的同步,会对实验造成干扰)
mysql>stop slave sql_thread;
在客户端登陆mycat:
插入数据:5,mydog,10010
mysql -umycat -pMycat+007 -h172.25.88.33 -P8066
插入之后再读取,也没有看见刚刚插入的id=5
在master(server33)的mysql数据库登陆,db1数据库中查询到了刚刚插入的数据,所以写操作是在master(server33)执行的.
slave(server44)的SQL线程被关闭了,所以slave(server44)的db1也没有id=5的数据
至此读写分离圆满成功~~~~~
本文出自 “12049878” 博客,谢绝转载!
基于Mycat实现的mysql的读写分离
标签:mycat mysql 读写分离 8066 sql_thread
本文系统来源:http://12059878.blog.51cto.com/12049878/1912493
内容总结
以上是互联网集市为您收集整理的基于Mycat实现的mysql的读写分离全部内容,希望文章能够帮你解决基于Mycat实现的mysql的读写分离所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。