三台虚拟机的IP如下
MySQL1:192.168.14.145
MySQL2:192.168.14.146
MyCat: 192.168.14.147
MySQL的安装过程不在本文的讨论范围,略过本文由javacoder.cn整理,转载请注明出处。
注意:由于我配置MyCat使用native驱动,所以MyCat服务器需要先安装MySQL客户端,由于我使用的centos7,所以直接执行"yum install mysql"安装。
1 2 3 4 |
<user name="root"> <property name="password">123456</property> <property name="schemas">test_db</property> </user></p> |
配置root用户的用户名和密码,以及默认的数据库
1 2 3 |
<function name="mod-long" class="io.mycat.route.function.PartitionByMod"> <property name="count">2</property> </function> |
取模的节点数为2,因为我只有两台测试MySQL服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="test_db" checkSQLschema="false" sqlMaxLimit="100"> <table name="t_user" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2" ruleRequired="true" rule="mod-long"/> </schema> <dataNode name="dn1" dataHost="localhost1" database="test_db" /> <dataNode name="dn2" dataHost="localhost2" database="test_db" /> <dataHost name="localhost1" 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="192.168.14.145:3306" user="root" password="123456"> </writeHost> </dataHost> <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostS1" url="192.168.14.146:3306" user="root" password="123456" /> </dataHost> </mycat:schema> |
配置了一个名为test_db的数据库,声明了t_user表的负载均衡策略为mod-long,对id进行取模操作。由于驱动使用的是native,所以需要事先在MyCat对应的服务器上安装mysql客户端
启动mysql1,mysql2 server上的MySQL服务,注意selinux和firewalld的配置。
启动MyCat服务, ./startup_nowrap.sh 注意selinux和firewalld的配置,防止客户端连接不上,
我使用MySQLWorkbench连接的,MyCat的连接信息为:192.168.14.147:8066 root:123456
执行如下脚本:
use test_db;
create table t_user (id int not null primary key,name varchar(100));
insert into t_user(id,name) values(1,'hello mycat');
insert into t_user(id,name) values(2,'javacoder.cn');
select * from t_user where id=2;
操作成功,验证了MyCat的建表,插入,主键查询功能。select * from t_user这种查询默认是不被支持的,会报没有"route rule"。
然后分别去查询MySQL1和MySQL2,发现分别有一条记录。验证了MyCat的负载功能。
Posted in: MySQL practise
Comments are closed.