随手记:MyCAT实现MySQL集群与读写分离
Posted 程序猿入门
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随手记:MyCAT实现MySQL集群与读写分离相关的知识,希望对你有一定的参考价值。
前言
作为当前炙手可热的mysql中间件,MyCAT实现MySQL主从集群的读写分离自是应有之义,其配置也相当简单。
在这里,我用三个实例组成MySQL主从集群,来验证MyCAT的读写分离功能,其实,一主一从就可以满足,之所以用三个,是为了验证MyCAT的分片功能。
第一步:安装MyCat
选择如下版本:
下载成功后解压到本地目录结构如下
第二步:配置
1. 修改conf目录下server.xml文件
更改用户密码,不修改默认也可以.此用户密码即Navicat 连接使用
2. 修改conf目录下schema.xml文件
库名与server中保持一致,三张表分别进行分片存储
配置读写分离数据库,此用户密码为数据库用户密码
这里面,有两个参数需要注意,balance和 switchType。
其中,balance指的负载均衡类型,目前的取值有4种:
l balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
l balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
l balance="2",所有读操作都随机的在writeHost、readhost上分发。
l balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
switchType指的是切换的模式,目前的取值也有4种:
l switchType='-1' 表示不自动切换
l switchType='1' 默认值,表示自动切换
l switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
l switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'。
因此,该配置文件中的balance="1"意味着作为stand by writeHost的hostS1和hostS2将参与select语句的负载均衡,这就实现了主从的读写分离,switchType='-1'意味着当主挂掉的时候,不进行自动切换,即hostS1和hostS2并不会被提升为主,仍只提供读的功能。这就避免了将数据读进slave的可能性,毕竟,单纯的MySQL主从集群并不允许将数据读进slave中,除非配置的是双master。
第三步:启动
1.数据库主从复制请自行查看往期分享内容
2. cmd打开黑窗口进入bin目录下
2. 执行mycat.bat install
3. mycat.bat start 命令可以启动mycat服务
4. mycat.bat stop 命令可以停止mycat服务
5. 启动后可以通过如下命令查看mycat的运行状态:mycat.bat status
第四步:测试读写分离
1. Navicat连接mycat
连接方式与正常连接数据库一致,此用户密码为servsr.xml中所配置的密码,端口号默认为8066
2.打开TESTDB 库,库里有schema.xml配置的三张表
3.此时打开表提示如下,是因为在主从库还没有此表的相应信息
4. 提前在主从数据库创建好数据库db1,db2,db3为schema.xml配置
4. 创建表并插入数据,中间停止下主从数据同步让从库数据与主库不一致
主库数据
从库数据
4. 测试读写分离打开mycat中TESTDB库执行查询语句
因为我配置了主库承担部分查询功能多次执行sql会发现如下数据
长按下方二维码关注公众号
以上是关于随手记:MyCAT实现MySQL集群与读写分离的主要内容,如果未能解决你的问题,请参考以下文章