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从库显示
显示为一次有,一次无,穿插来的,实验成功。