安装mysql5.6:https://my.oschina.net/u/3497124/blog/1488479 安装Java1.8:https://my.oschina.net/u/3497124/blog/1525269
软件下载地址:http://pan.baidu.com/s/1kUEwy39 (在此使用1.6版本)
[root@localhost src]# tar zxvf Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz
[root@localhost src]# ls
jdk-8u144-linux-x64.gz Mycat-server-1.3.0.3-alpha-20150211194835-linux.tar.gz
mycat Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz
[root@localhost src]# mv mycat /usr/local
创建mycat用户:
[root@localhost src]# useradd mycat
更改权限:
[root@localhost src]# chown -R mycat:mycat /usr/local/mycat
[root@localhost src]# cd /usr/local/mycat/
编辑mycat配置文件:
[root@localhost mycat]# vim conf/schema.xml
搜索“datahost”
<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="localhost:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="localhost:3306" user="root" password="123456" />
</writeHost>
<writeHost host="hostS1" url="localhost:3316" user="root"
password="123456" />
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
说明: 在此设置writeHost、readHost中的url、user、password与本机一致。
配置mycat的用户名和密码:
[root@localhost mycat]# vim conf/server.xml
……
<user name="mycat1">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
说明: 这里设定了一个mycat1的租户,密码为123456,这个标签用来框定shema的配置范围(TEWTDB)。
[root@localhost mycat]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...
[root@localhost mycat]# ps aux |grep mycat
root 3670 0.4 0.0 17808 752 ? Sl 19:01 0:00 /usr/local/mycat/bin/./wrapper-linux-x86-64 /usr/local/mycat/conf/wrapper.conf wrapper.syslog.ident=mycat wrapper.pidfile=/usr/local/mycat/logs/mycat.pid wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/mycat
[root@localhost mycat]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1361/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2185/master
tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 3672/java
tcp6 0 0 :::9066 :::* LISTEN 3672/java
tcp6 0 0 :::3306 :::* LISTEN 2503/mysqld
tcp6 0 0 :::22 :::* LISTEN 1361/sshd
tcp6 0 0 :::39288 :::* LISTEN 3672/java
tcp6 0 0 ::1:25 :::* LISTEN 2185/master
tcp6 0 0 :::1984 :::* LISTEN 3672/java
tcp6 0 0 :::39809 :::* LISTEN 3672/java
tcp6 0 0 :::8066 :::* LISTEN 3672/java
[root@localhost mycat]# mysql -uroot -p123456 -h127.0.0.1 -P8066 -DTESTDB
Welcome to the MySQL monitor.
至此搭建完成,相关应用后续研究…
注意: 这里-h后面必须是ip,使用localhost会出错。
创建一个表:
mysql> create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0(无效的数据源,该错误不影响后续操作)
查看该SQL被发往哪些分片节点执行:
mysql> explain create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
+-----------+------------------------------------------------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+------------------------------------------------------------------------------------------------+
| dn1 | create table employee (id int not null primary key,name varchar(100),sharding_id int not null) |
| dn2 | create table employee (id int not null primary key,name varchar(100),sharding_id int not null) |
+-----------+------------------------------------------------------------------------------------------------+
2 rows in set (0.01 sec)
说明: explain可以用于任何正确的SQL上,其作用是告诉你,这条SQL会路由到哪些分片节点上执行,这对于诊断分片相关的问题很有帮助。另外,explain可以安全的执行多次,它仅仅是告诉你SQL的路由分片,而不会执行该SQL。由上可知在TESTDB创建employee表的同时也在dn1、dn2同步创建了employee表。
参考: 安装指南: http://code.taobao.org/svn/openclouddb/doc/
http://blog.csdn.net/jaysonhu/article/details/52858535
(adsbygoogle = window.adsbygoogle || []).push({});