阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于MyCat实现的MySQL读写分离

231次阅读
没有评论

共计 3276 个字符,预计需要花费 9 分钟才能阅读完成。

MyCat 就相当于一个调度器,具有数据库分片功能,本身不存储数据,其功能是对后端的真实数据库的数据,进行数据划分和数据整合,方便管理。

HOW-Mycat-Read&&write separation

现在让我们通过 MyCat 实现数据库的读写分离

本实验中其他配置文件,参见 MySQL 主从复制之 Mycat 简单配置和高可用  http://www.linuxidc.com/Linux/2017-04/142450.htm

如何安装 mysql 数据库可以参考:http://www.linuxidc.com/Linux/2016-09/135422.htm
如何构建 mysql 主从环境可以参考:http://www.linuxidc.com/Linux/2016-09/134820.htm

定义读,写节点

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

基于 MyCat 实现的 MySQL 读写分离

插入之后再读取, 也没有看见刚刚插入的 id=5

基于 MyCat 实现的 MySQL 读写分离

在 master(server33) 的 mysql 数据库登陆,db1 数据库中查询到了刚刚插入的数据, 所以写操作是在 master(server33) 执行的.

基于 MyCat 实现的 MySQL 读写分离

slave(server44) 的 SQL 线程被关闭了, 所以 slave(server44) 的 db1 也没有 id= 5 的数据

基于 MyCat 实现的 MySQL 读写分离

至此读写分离圆满成功。

Ubuntu 16.04.1 安装 MyCat  http://www.linuxidc.com/Linux/2016-08/134330.htm

MyCAT 实现 MySQL 读写分离实践  http://www.linuxidc.com/Linux/2016-01/127957.htm

MyCAT 实现 MySQL 的读写分离  http://www.linuxidc.com/Linux/2016-01/127555.htm

MyCAT ER 分片的验证 http://www.linuxidc.com/Linux/2016-02/128636.htm

MyCat 读写分离与主从切换  http://www.linuxidc.com/Linux/2016-09/135424.htm

LVS+Keepalived 搭建 MyCAT 高可用负载均衡集群 http://www.linuxidc.com/Linux/2016-03/129231.htm

Mycat 实现数据库读写分离  http://www.linuxidc.com/Linux/2016-07/133518.htm

 

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-04/142453.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3276字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中