mycat读写分离

Mycat读写分离

Mycat 是一个开源的数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存 储引擎,所以并不是完全意义的数据库系统。 那么 Mycat 是什么?Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。
MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。

环境部署(Java环境)

1、官网下载JDK
在这里插入图片描述
2、解压文件

[root@mycat ~]# tar -xf jdk-8u181-linux-x64.tar.gz   -C  /usr/local/   #解压java软件工具包
[root@mycat ~]# ln -s /usr/local/jdk1.8.0_91/ /usr/local/java  #创建软连接路径

3、配置环境变量

[root@mycat ~]# cat >> /etc/profile<<EOF
>JAVA_HOME=/usr/local/java
>PATH=$JAVA_HOME/bin:$PATH
>export JAVA_HOME PATH
>EOF     enter键
#通过cat命令在配置文件中插入三行
[root@mycat ~]# source /etc/profile  #使环境变量生效

4、查询安装结果

[root@mycat ~]# java  -version  #查询到版本,说明jdk安装成功

部署Mycat

下载文件

下载mycat,官网下载 http://www.mycat.org.cn/
解压安装包

[root@mycat ~]# tar xf  Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
[root@mycat ~]# ls /usr/local/mycat #检查解压是否成功

配置Mycat

认识配置文件

MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:

  • /usr/local/mycat/conf/server.xml 定义用户以及系统相关变量,如端口等。其中用户信息是前端应用程序连接 mycat 的用户信息。
  • /usr/local/mycat/conf/schema.xml 定义逻辑库,表、分片节点等内容。

配置mycat前端(配置文件server.xml)

以下为代码片段

下面的用户和密码是应用程序连接到 MyCat 使用的,可以自定义配置。而其中的schemas 配置项所对应的值是逻辑数据库的名字,也可以自定义,但是这个名字需要和后面 schema.xml 文件中配置的一致。

[root@mycat ~]# vim  /usr/local/mycat/conf/server.xml
<!--下面的用户和密码是应用程序连接到 MyCat 使用的.schemas 配置项所对应的值是逻辑数据库的名字,这个名字需要和后面 schema.xml 文件中配置的一致。-->

       <user name="love" defaultAccount="true">               #love用户为前端使用的账户名,可以自定义设置
                <property name="password">123456</property>    #数字123456是用户love的密码,也是自定义
                <property name="schemas">ddbb</property>   #schemas 配置项所对应的testdb是逻辑数据库的名字,也可以自定义,但是这个名字需要和后面 schema.xml 文件中配置的一致。
                
                <!-- 表级 DML 权限设置 -->
                <!--            
                <privileges check="false">
                        <schema name="TESTDB" dml="0110" >
                                <table name="tb01" dml="0000"></table>
                                <table name="tb02" dml="1111"></table>
                        </schema>
                </privileges>           
                 -->
        </user>

配置mycat后端(配置文件schema.xml)

先备份配置文件

[root@mycat ~]# cd /usr/local/mycat/conf     &&    mkdir back    &&    cp schema.xml back

然后编辑原文件

[root@mycat ~]#  vim /usr/local/mycat/conf/schema.xml

在这里插入图片描述
属性介绍

balance 属性
负载均衡类型,目前的取值有 3 种:

  1. balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
  2. balance=“1”, 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2
    互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
  3. balance=“2”, 所有读操作都随机的在 writeHost、readhost 上分发。
  4. balance=“3”, 所有读请求随机的分发到 writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。

writeType 属性
负载均衡类型

  1. writeType=“0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准.
  2. writeType=“1”,所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。

配置mysql集群

M-M-S-S 准备Mycat连接的用户及权限
双主双从架构在这里插入图片描述

创建授权用户(在主库master上创建)

mysql > grant all on *.* to 'mycat'@'%' identified by 'Abcd@1234';
mysql > flush privileges;

在master1上创库创表

  mysql>create database haha;
  mysql>create table haha.t1 (id int);

启动mycat

[root@mycat ~]# /usr/local/mycat/bin/mycat  start
Starting Mycat-server...
启动成功,否则就是配置Mycat后端语法错误。

#支持以下参数
start | restart |stop | status

[root@mycat ~]# netstat -nplt | grep java
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      3487/java           
tcp6       0      0 :::1984                 :::*                    LISTEN      3487/java           
tcp6       0      0 :::8066                 :::*                    LISTEN      3487/java           
tcp6       0      0 :::59268                :::*                    LISTEN      3487/java           
tcp6       0      0 :::9066                 :::*                    LISTEN      3487/java           
tcp6       0      0 :::44500                :::*                    LISTEN      3487/java           
tcp6       0      0 127.0.0.1:31000         127.0.0.1:32000         ESTABLISHED 3487/java  
#出现多个java进程且监听端口有8066则说明服务启动成功

友情提醒:如果修改完配置文件后mycat服务起不来,无法启动等问题,大概率配置文件修改出错,请回去修改配置文件,无法排错时就将备份的配置文件恢复,重新修改。

登录mycat

任选一台有mysql客户端的服务器,例如slave1

[root@slave1 ~]# mysql -hmycat -uroot -p123456 -P8066
mysql> show databases;
+----------+
| DATABASE |
+----------+
| haha  |
+----------+
1 row in set (0.01 sec)
#这里看到的数据库haha是虚拟的,注意后方mysql群中应该创建该库

验证mycat代理结果

mycat使用后方数据库

mysql> select * from haha.t1;
mysql> insert into haha.t1 values(2);

在mysql集群(M-M-S-S)中能查到插入的数据,则说明mycat服务代理成功

验证读写分离策略

  • 以balance=“3” writeType=“0”为例进行测试

balance=“3”, 所有读请求随机的分发到 writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
writeType=“0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准.

1、停止mysql集群(M-M-S-S)主从复制
在四台数据库中执行stop slave指令,停止主从复制

2、mycat虚拟数据库中创表
在这里插入图片描述

3、登录mycat

[root@slave1 ~]# mysql -hmycat -uroot -p123456 -P8066
mysql> uer ddbb;
mysql> show tables;
mysql> show tables;
mysql> show tables;
mysql> show tables;
#多次使用show tables命令查询表

在mycat中多次查询表,如果只能查到读库slave1、slave2创建的表test3、test4,则说明读写分离功能实现成功。

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值