介绍:
Mycat作为数据库中间件,用来实现读写分离、数据分片(垂直拆分/水平拆分)、多数据源整合等功能。
原理:
Mycat通过拦截用户发过来的SQL语句,并对其进行特定的分析,如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端对应的数据库,并将返回的结果做适当的处理,最终返回给用户。
安装启动:
1、将Mycat的tar.gz格式的压缩包拷贝到Linux系统下的opt目录下
2、使用Linux的编辑脚本(如Xshell),进入到opt目录下解压压缩文件(tar -zxvf 文件名)
3、将解压后的文件复制到/usr/local目录下(cp -rv mycat /usr/local)
4、启动前先修改schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--逻辑库 name名称, checkSQLschema sqlMaxLimit 末尾是否要加 limit xxx-->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>
<!--逻辑库 name名称, dataHost 引用的哪个dataHost database:对应mysql的database-->
<dataNode name="dn1" dataHost="host1" database="数据库名" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="写主机ip:3306" user="xxx" password="xxx">
<readHost host="hostM2" url="读主机ip:3306" user="xxx" password="xxx">
</writeHost>
</dataHost>
</mycat:schema>
5、验证数据库的访问情况(读写主机都需要使用远程访问的形式进行验证是否连通)
mysql -u用户名 -p密码 -h对应ip地址 -P3306(写主机)
mysql -u用户名 -p密码 -h对应ip地址 -P3306(读主机)
注:
如本机远程访问报错,请建对应用户(mysql -u用户名 -p密码)
grant all privileges on *.* to [email protected]‘缺少的host‘ identified by ‘密码‘;
6、先使用前台启动,确认是否能启动成功。去mycat/bin 目录下执行 ./ mycat console。
7、(可选择性更改,ctrl+c关闭之后修改,改后再启动)为了区分mycat和mysql的用户名可以进行配置文件的修改server.xml
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
8、登录mysql -umycat -p123456 -P8066 -h 主机ip
9、后续一系列操作show databases、use TESTDB、show tables
10、配置读写分离,修改schema.xml的balance(配置成3)
负载均衡类型,目前的取值有4 种:
(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",所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力
原文地址:https://www.cnblogs.com/i-fly/p/10242114.html