----------------重要配置文件说明-------------------------
ls /usr/local/mycat/conf
server.xml 设置连接mycat服务的账号 参数 等
schema.xml 配置mycat使用的真实数据库和表
rule.xml 定义mycat分片规则
配置文件标签说明:
<user>.......</user> 定义连接mycat服务时使用的用户和密码及逻辑库的名字
<datanode>......</datanode> 指定数据节点(物理库的主机名和存储分片数据的数据库名)
<datahost>......</datahost> 指定数据库服务器的IP地址 及连接数据库时使用的授权用户名及密码
名词解释:
逻辑库: 客户端连接mycat服务器后看到的库名
逻辑表: 客户端连接mycat服务器后看到表明,表明要与程序员存储数据用的表名相同。
编辑配置文件:
cd /usr/local/mycat/conf/server.xml
<user name="admin">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
<user name="webuser">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
cat /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> #逻辑库名 要与server.xml定义的一样
<table name="travelrecord" dataNode="dn1,dn2" rule="auto-sharding-long" /> #定义分片的表
<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2" /> #定义分片的表
<table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" /> #定义分片的表
<table name="hotnews" primaryKey="ID" dataNode="dn1,dn2" rule="mod-long" /> #定义分片的表
<table name="employee" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" /> #定义分片的表
<table name="customer" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" /> #定义分片的表
</schema>
<dataNode name="dn1" dataHost="c1" database="db1" />
#定义分片使用的库,所在的物理主机 ,真正存储数据的db1库在物理主机c1上
<dataNode name="dn2" dataHost="c2" database="db2" />
#定义分片使用的库,所在的物理主机 ,真正存储数据的db2库在物理主机c2上
#指定c1名称主机对应的ip地址
<dataHost name="c1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" >
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.4.55:3306" user="admin"
password="123456"> #访问数据时 mycat服务连接数据库服务器时使用的用户名和密码
</writeHost>
</dataHost>
#指定c2名称主机对应的ip地址
<dataHost name="c2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" >
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="192.168.4.54:3306" user="admin"
password="123456"> #访问数据时 mycat服务连接数据库服务器时使用的用户名和密码
</writeHost>
</dataHost>
</mycat:schema>
++++++++++++++++++++启动服务
[root@localhost ~]# sed -n '4,5p' /usr/local/mycat/conf/wrapper.conf
# Java Application
wrapper.java.command=java
[root@localhost ~]#
[root@localhost ~]# which java
/usr/bin/java
[root@localhost ~]#echo "export PATH=/usr/local/mycat/bin" >> /etc/profile
[root@localhost ~]#source /etc/profile
[root@localhost ~]# mycat --help
Usage: /usr/local/mycat/bin/mycat { console | start | stop | restart | status | dump }
[root@localhost ~]#
[root@localhost ~]# mycat start
Starting Mycat-server...
[root@localhost ~]#
[root@localhost ~]# netstat -utnalp | grep :8066
tcp6 0 0 :::8066 :::* LISTEN 4524/java
[root@localhost ~]#
++++++++++++++++++++++++测试MyCAT
[root@room9pc17 ~]# mysql -h192.168.4.56 -P8066 -utest -ptest //客户端连接mycat服务器,存储数据
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.00 sec)
MySQL [(none)]> use TESTDB;
MySQL [TESTDB]> show tables;
+------------------+
| Tables in TESTDB |
+------------------+
| company |
| customer |
| employee |
| goods |
| hotnews |
| travelrecord |
+------------------+
6 rows in set (0.00 sec)
MySQL [TESTDB]> MySQL [TESTDB]> create table employee( id int not null primary key, name varchar(100), sharding_id int not null );
MySQL [TESTDB]> MySQL [TESTDB]> insert into employee(id,name,sharding_id)values(1,"bob",10000),(2,"lucy",10010),(3,"alice",10000),(4,"jerry",10010);
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| c1 |
+------------+
1 row in set (0.00 sec)
mysql> select * from employee;
Empty set (0.00 sec)
mysql> select * from employee;
+----+-------+-------------+
| id | name | sharding_id |
+----+-------+-------------+
| 1 | bob | 10000 |
| 3 | alice | 10000 |
+----+-------+-------------+
2 rows in set (0.00 sec)
mysql>
++++++++++++++++++++++++++++++++++++++++++++++
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| c2 |
+------------+
1 row in set (0.00 sec)
mysql> select * from employee;
Empty set (0.00 sec)
mysql> select * from employee;
+----+-------+-------------+
| id | name | sharding_id |
+----+-------+-------------+
| 2 | lucy | 10010 |
| 4 | jerry | 10010 |
+----+-------+-------------+
2 rows in set (0.00 sec)
mysql>