Mycat 安装与读写分离配置实践

📅 2026/8/4 4:25:29 👁️ 阅读次数 📝 编程学习
Mycat 安装与读写分离配置实践

mycat

1. 环境准备

① 安装 MyCat

配置环境变量

/etc/profile.d/

java.sh mycat.sh

export JAVA_HOME=/usr/java/jdk1.8.0_191

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

完成前置配置后,开始配置 Mycat。

② 配置 MyCat

server.xml 用户 密码

schema.xml 数据库 别名

balance="1" → 开启读写分离并在从库间负载均衡

writeType="0" → 只写主库

switchType="-1" → 不自动切换

database="ha"

export MYCAT_HOME=/usr/local/mycat

export PATH=$MYCAT_HOME/bin:$PATH

source /etc/profile.d/mycat.sh

vim /usr/local/mycat/conf/server.xml

[root@aoteman conf]# cat schema.xml

<?xml version="1.0"?>

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

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

<schema name="ha" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">

</schema>

<dataNode name="dn1" dataHost="dthost" database="ha" />

<dataHost name="dthost"

maxCon="500"

minCon="10"

balance="1"

writeType="0"

dbType="mysql"

dbDriver="native"

switchType="-1"

slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="master"

url="192.168.64.11:3306"

user="mycat"

password="123456">

<readHost host="slave1"

url="192.168.64.12:3306"

user="mycat"

password="123456" />

<readHost host="slave2"

url="192.168.64.13:3306"

user="mycat"

password="123456" />

</writeHost>

</dataHost>

</mycat:schema>

[root@aoteman conf]#

主库创建这个ha库

创建个表

CREATE DATABASE ha;

USE ha;

CREATE TABLE a1(

id INT NOT NULL,

name CHAR(10) NOT NULL,

PRIMARY KEY (id)

);

插入两条数据;

INSERT INTO a1 (id, name) VALUES

(1, '张三'),

(2, '李四'),

(3, '王五'),

(4, '赵六'),

(5, '小明');

这些数据会同步到从库,随后可以启动 Mycat。

③启动 MyCat

/usr/local/mycat/bin/mycat.sh start

④ 配置 MySQL 主从赋权 三台

grant all privileges on *.* to 'mycat'@'%' identified by '123456';

主库配置权限

grant all privileges on *.* to 'mycat'@'%' identified by '123456';

flush privileges;刷新

从库一样

⑤ 测试读写分离

安装 mariadb 并且测试客户端 连接 mysql -umycat -p123456 -hIP -P8066

⑥ 读写分离的功能

① 主插入一条数据

② 在各个从上去插入一条数据 注意:在这之前必须关闭主从复制 在从上操作

⑦ 登录客户端 登录到mycat 上 去做操作

客户端 连接 Mycat服务上 mysql -umycat -p123456 -hIP -P8066

① 切换ha库 用 select 去刷 数据 看结果 读的结果 (是否查看到数据在从上)

② 在客户端 登录到mycat的服务端上去插入一条数据 然后再查看数据是都写的主上

都先use到ha

从库show一下能看到

关闭第三台的同步

在主上

insert into test values(

'1','zhangsan'

);

2从库显示

3从库显示

显示为一次有,一次无,穿插来的,实验成功。