MySQL基于Mycat实现读写分离

 基于Mycat实现读写分离

环境:mariadb主:192.168.200.129

      Mariadb从192.168.200.114

      Mycat    192.168.200.112

(1) 安装jdk,先查看本机是否有jdk,由于Mycat是基于Java语言来编写的,所以需要安装JDK,版本为1.8即可。没有的话安装一下然后配置环境变量

[root@ns2 ~]# ls

jdk-8u191-linux-x64.tar.gz

[root@ns2 ~]# tar xf jdk-8u191-linux-x64.tar.gz   //解压

[root@ns2 ~]# mv jdk1.8.0_191  /usr/local/java   //我把它移动到了/usr/local下起名叫java 

[root@ns2 ~]# vim /etc/profile     //配置环境变量

[root@ns2 ~]# source /etc/profile   //声明一下

[root@ns2 ~]# java -version

java version "1.8.0_191"

Java(TM) SE Runtime Environment (build 1.8.0_191-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

2)安装部署mycat

下载Mycat安装包,下载地址为http://dl.mycat.io/,选择linux环境的版本即可。

将Mycat安装包上传服务器后解压,解压后我把文件移动到了/usr/local下

 

 现在已经将mycat部署好了,接下来修改mycat的配置文件。

3)配置Mycat步骤

01、在主库和从库中分别创建用于Mycat连接的账号:

提供一个数据库内所有表的权限及创建的用户名和指定的主机与创建的用户密码:

 02、配置Mycat的schema.xml文件,该文件位于Mycat中conf文件夹下:

schema 标签用于定义MyCat 实例中的逻辑库,MyCat 可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用schema 标签来划分这些不同的逻辑库。

dataNode 标签定义了MyCat 中的数据节点,也就是我们通常说所的数据分片。一个dataNode 标签就是一个独立的数据分片。

dataHost标签直接定义了具体的数据库实例、读写分离配置和心跳语句。

balance属性

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

balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。

balance="1",全部的readHost 与stand by writeHost 参与select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1 与M2 互为主备),正常情况下,M2,S1,S2 都参与select 语句的负载均衡。

balance="2",所有读操作都随机的在writeHost、readhost 上分发。

balance="3",所有读请求随机的分发到wiriterHost 对应的readhost 执行,writerHost 不负担读压

力,注意balance=3 只在1.4 及其以后版本有,1.3 没有。

 writeType 属性

writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了后切换到还生存的第二个

writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

writeType="1",所有写操作都随机的发送到配置的writeHost

 指定数据库名称,指定负载均衡类型,指定主从服务器和工作端口及其创建的用户和密码

03、配置server.xml,即主要配置连接Mycat的用户账号信息:

账号配置

第一个user标签 :指定之前数据库创建的用户和密码和指定数据库名称 

第二个user标签 :指定创建的用户和密码,连接测试使用。

然后启动服务

[root@ns2 mycat]# bin/mycat start

连接测试:

查看命令:show @@datasource;  //在管理端上查看。

测试:

mycat用户端:默认8066,可手动更改。用户是server.xml配置文件中配置的用户。

mycat管理端:默认9066,可手动更改,用户是server.xml配置文件中配置的用户。

当调用读接口时READ_LOAD的值对应在slave上会加1说明是走从库;

当调用写接口时WRITE_LOAD的值对就在master上会加1说明是走主库

原文地址:https://www.cnblogs.com/XXXX001/p/11685982.html