我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MyCAT如何安装使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MyCAT如何安装使用

这篇文章主要介绍了MyCAT如何安装使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

MyCAT安装

mycat运行依赖于jre环境,需要首先安装jdk7以上版本

检查jdk版本
shell> java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

下载解压mycat server1.5安装文件
shell> tar zxvf Mycat-server-1.5-RELEASE-20160301083012-linux.tar.gz

创建mycat用户,并设置环境变量
shell> groupadd mycat
shell> useradd -g mycat mycat
shell> passwd mycat
shell> chown -R mycat.mycat /usr/local/mycat
shell> vim /etc/profile 添加如下内容
export MYCAT_HOME=/usr/local/mycat
shell> source /etc/profile

测试环境介绍

Master:10.106.58.178
Slave:10.106.58.179
mycat:10.106.58.174

mycat配置

mycat1.5配置文件可以根据本地XML文件配置,也可以使用zookeeper来实现,本例介绍使用本地XML来配置。

配置文件介绍

  • conf/rule.xml 定义分片规则

  • conf/schema.xml 定义逻辑库、表以及分片节点等内容

  • conf/server.xml 定义用户授权及服务器参数相关配置

shell> more conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
        <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" />
        <dataNode name="dn1" dataHost="cluster1" database="test" />
        <dataHost name="cluster1" maxCon="1000" minCon="10" balance="0"
                writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="10.106.58.178:3306" user="root" password="123456" >
                        <readHost host="hostS1" url="10.106.58.179:3306" user="root" password="123456" />
                </writeHost>
        </dataHost>
</mycat:schema>

shell> more conf/rule.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
        <tableRule name="rule1">
                <rule>
                        <columns>id</columns>
                        <algorithm>func1</algorithm>
                </rule>
        </tableRule>

        <function name="func1" class="org.opencloudb.route.function.PartitionByLong">
                <property name="partitionCount">8</property>
                <property name="partitionLength">128</property>
        </function>
</mycat:rule>

server.xml的user定义了客户端连接mycat使用的用户验证
schema.xml的user是mycat连接数据库使用的用户
shell> more conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
        <system>
        <property name="defaultSqlParser">druidparser</property>
        </system>
        <user name="test">
                <property name="password">test</property>
                <property name="schemas">test</property>
        </user>
</mycat:server>

启动测试mycat

查看wrapper.log,查看启动是否成功
shell> /usr/local/mycat/bin/mycat start

通过mycat连接数据库
shell> mysql -h 10.106.58.174 -P8066  -u test -p
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| mysql178   |
+------------+
1 row in set (0.13 sec)

mysql> create table user(id int primary key,name varchar(100));
Query OK, 0 rows affected (0.13 sec)

mysql> insert into user(id,name) values(1,'xiaoming');
Query OK, 1 row affected (0.07 sec)

查询从库
mysql> select @@hostname; select * from test.user;
+------------+
| @@hostname |
+------------+
| mysql179   |
+------------+
1 row in set (0.00 sec)

+----+----------+
| id | name     |
+----+----------+
|  1 | xiaoming |
+----+----------+
1 row in set (0.00 sec)

测试读写分离

mycat提供了几种请求负载均衡分发形式,通过定义dataHost标签的balance属性来修改
balance=0,不开启读写分离机制,所有读写操作都发送到当前可用的writeHost上
balance=1,全部的readHost和stand by writeHost参与select语句的负载均衡,如双主双从模式,M2、S1、S2都分发请求
balance=2,所有读操作随机在writeHost和readHost上分发
balance=3,所有读请求随机的分发到writeHost上对应的readHost上执行,writeHost不承担读压力。(balance=3只支持mycat1.4以上版本)

设置balance=1并将log4j修改为debug模式,观察执行结果。

执行写入操作,可以看出分发到writeHost
mysql> insert into test.user(id,name) values(2,'xiaoli');

MyCAT如何安装使用

执行查询操作,可以看出分发到readHost
mysql> select * from test.user where id = 2;

MyCAT如何安装使用

测试故障切换

mycat通过dataHost标签的writeType和switchType来定义故障切换方式。
writeType=0,表示所有写都发送到配置的第一个writeHost上,第一个挂了切换到第二个writeHost上,重启后以切换后的为准,切换记录在conf/dnindex.properties
writeType=1,表示所有写都随机发送到配置的writeHost上,mycat1.5以上已废弃不推荐。
switchType=-1,表示不自动切换
switchType=1,默认值,表示自动切换
switchType=2,基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status。
switchType=3,基于galaru cluster的切换机制(合适集群),mycat1.4以上支持,心跳语句为show status like 'wsrep%'。

修改switchType=2,writeType=0,心跳语show slave status

关闭Master
shell> service mysql stop

MyCAT如何安装使用

通过mycat执行插入操作,发现请求分发到第二个writeHost上
mysql> insert into test.user values(3,'xiaowang');
Query OK, 1 row affected (0.04 sec)

MyCAT如何安装使用

重新启动原Master
shell> service mysql start

查看当前写入节点,0表示第一个,1表示第二个
shell> more conf/dnindex.properties
#update
#Fri Mar 04 15:51:39 CST 2016
cluster1=1

通过mycat写入数据
mysql> insert into test.user values(4,'xiaozheng');
Query OK, 1 row affected (0.04 sec)

mysql> select * from test.user where id = 4;
+----+-----------+
| id | name      |
+----+-----------+
|  4 | xiaozheng |
+----+-----------+
1 row in set (0.01 sec)

查看主库数据
mysql> select * from test.user;
+----+----------+
| id | name     |
+----+----------+
|  1 | xiaoming |
|  2 | xiaoli   |
+----+----------+
2 rows in set (0.00 sec)

查看从库数据
mysql> select * from test.user;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | xiaoming  |
|  2 | xiaoli    |
|  3 | xiaowang  |
|  4 | xiaozheng |
+----+-----------+
4 rows in set (0.00 sec)

当原主库恢复之后,mycat并没有切换回第一个写入节点,而是需要重新配置主从状态。mycat的故障切换不会同步主从binlog差异数据,不能完整的保证数据一致性,而且没有记录切换后的writeHost提供服务时的binlog位置,其他从库指定新主库时,需要手工备份完整的数据,可考虑与MHA结合使用。

感谢你能够认真阅读完这篇文章,希望小编分享的“MyCAT如何安装使用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MyCAT如何安装使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mycat安装部署简单使用

Mycat安装部署简单使用1. 软件准备Mycat:下载地址:https://github.com/MyCATApache/Mycat-download。下载界面图 1‑1 Mycat首页下载界面。任意选中RELEASE版本,进入RELEASE版本目录
Mycat安装部署简单使用
2021-03-09

Pandas如何安装使用

这篇文章主要介绍了Pandas如何安装使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 安装如果做数据分析用途建议使用Anaconda,自带pandas numy 以及
2023-06-03

如何安装使用GitLab

这篇文章主要为大家展示了“如何安装使用GitLab”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何安装使用GitLab”这篇文章吧。GitLab 是一个用于仓库管理系统的开源项目,使用Git作
2023-06-27

Flutter如何安装使用

这篇文章给大家分享的是有关Flutter如何安装使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。序言Flutter出来已经有些日子了,越来越多的开发者也开始尝试使用 Flutter 进行开发,Flutter 是
2023-06-04

EasySwoole如何安装使用

小编给大家分享一下EasySwoole如何安装使用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!EasySwooleEasySwoole 是一款基于Swoole Server 开发的常驻内存型的分布式PHP框架,专为API
2023-06-14

goaccess如何安装和使用

这篇文章主要为大家展示了“goaccess如何安装和使用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“goaccess如何安装和使用”这篇文章吧。一、Debian下安装goaccesscat /
2023-06-04

如何安装与使用varnish3.0

这篇文章将为大家详细讲解有关如何安装与使用varnish3.0,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在内网的vps上安装Varnish的最新版3.0来用做测试 Varnish有cen
2023-06-07

hanlp如何安装和使用

这篇文章主要介绍hanlp如何安装和使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!下载HanLP-1.3.4.zip 下载hanlp-1.3.4-release 下载hanlp.properties 在https
2023-06-02

如何安装和使用GitLab

这篇文章给大家分享的是有关如何安装和使用GitLab的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。GitLab 是 Ruby 开发的自托管的 Git 项目仓库,可通过Web界面进行访问公开的或者私人项目。安装以下
2023-06-27

编程热搜

目录