mycat读写分离中间件

5、部署Mycat读写分离中间件服务

5.1安装Mycat服务

将Mycat服务的二进制软件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到Mycat虚拟机的/root目录下,并将软件包解压到/use/local目录中

5.2赋予解压后的mycat目录权限

5.3向/etc/profile系统变量文件中添加mycat服务的系统变量并生效

5.4编辑mycat配置Mycat服务读写分离的schema.xml配置文件在/usr/local/mycat/conf/目录下,可以在文件中定义一个逻辑库,使用户可以通过Mycat服务管理该逻辑库对应的MariaDB数据库。在这里定义一个逻辑库schema,name为USERDB;该逻辑库USERDB对应数据库database为test(在部署主从数据库时已安装);设置数据库写入节点为主节点db1;设置数据库读取节点为从节点db2。(可以直接删除原来schema.xml的内容,替换为如下。)

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

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>

<dataNode name="dn1" dataHost="localhost1" database="test" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM1" url="192.168.104.105:3306" user="root" password="000000">

<readHost host="hostS1" url="192.168.104.1-6:3306" user="root" password="000000" />

</writeHost>

</dataHost>

</mycat:schema>

解析:代码说明:

l sqlMaxLimit:配置默认查询数量。

l database:为真实数据库名。

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不负担读压力,注意balance=3只在1.4及其以后版本有,1.3版本没有。

l writeType="0":所有写操作发送到配置的第一个writeHost,第一个挂了需要切换到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件dnindex.properties中。

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

5.5修改配置文件权限:文件路径:/usr/local/mycat/conf/schema.xml

编辑mycat的访问用户

修改/usr/local/mycat/conf/目录下的server.xml文件,修改root用户的访问密码与数据库,密码设置为000000,访问Mycat的逻辑库为USERDB,命令如下(一定看准、填对)

直接按住shift键+G,修改的内容在文章后面

然后删除如下几行:

<user name="user">

<property name="password">user</property>

<property name="schemas">TESTDB</property>

<property name="readOnly">true</property>

</user>

5.6启动mycat服务

5.7通过查看端口是否正确安装:

如果有开放的8066和9066说明mycat服务开启成功

6、验证数据库集群服务读写分离功能

6.1先在Mycat虚拟机上使用Yum安装mariadb-client服务

6.2在Mycat虚拟机上使用mysql命令查看Mycat服务的逻辑库USERDB,因为Mycat的逻辑库USERDB对应数据库test(在部署主从数据库时已安装),所以可以查看库中已经创建的表company。命令如下:

6.3用Mycat服务添加表数据

在Mycat虚拟机上使用mysql命令对表company添加一条数据(2,"basketball","usa"),添加完毕后查看表信息。命令如下:

6.4验证mycat服务对数据库读写操作分离

在Mycat虚拟机节点使用mysql命令,通过9066端口查询对数据库读写操作的分离信息。可以看到所有的写入操作WRITE_LOAD数都在db1主数据库节点上,所有的读取操作READ_LOAD数都在db2主数据库节点上。由此可见,数据库读写操作已经分离到db1和db2节点上了。命令如下。

至此,Mycat读写分离数据库案例完成。

相关推荐
XY.散人12 分钟前
初识Linux · 地址空间
linux·算法
极客先躯22 分钟前
高级java每日一道面试题-2024年9月26日-运维篇[分布式篇]-如何保证每个服务器的时间都是同步的?
linux·运维·分布式·面试·时间同步·网络时间协议(ntp)·精密时间协议(ptp)
Jerry_Chenug34 分钟前
VIM常用操作
linux·编辑器·vim
C_eeking1 小时前
Linux终端简介
linux·运维·microsoft
zhangxueyi1 小时前
国产OpenEuler与Centos全面之比较
linux·运维·服务器·centos
q9085447031 小时前
centos磁盘逻辑卷LVM创建
linux·运维·centos
课堂随想1 小时前
查看 Ubuntu 系统中是否安装了 Conda
linux·ubuntu·conda
深夜吞食1 小时前
Linux网络基础:HTTPS 网络传输协议
linux·服务器·网络·https
大熊程序猿1 小时前
ubuntu 开启root
linux·服务器·ubuntu
Crazy Struggle2 小时前
.NET 开源 EF Core 批处理扩展工具,真好用
数据库·.net·ef core