可以看到ruleLong规则中用到funcLong函数,funcLong函数在下面定义,注意所有函数定义都需要在规则下面,partitionCount * partitionLength必须等于1024,否则无法启动。
然后是server.xml,这个文件修改下用户名密码就可以了,其他用默认参数。
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 1999-2012 Alibaba Group. -->
<!DOCTYPE cobar:server SYSTEM "server.dtd">
<cobar:server xmlns:cobar="http://cobar.alibaba.com/">
<!-- 用户访问定义,用户名、密码、schema等信息。 -->
<user>
<property>123456</property>
<property>lyw</property>
</user>
</cobar:server>
另外还有个配置文件log4j.xml,无需修改。
我们的配置文件都已准备好,然后就启动吧
$ bin/startup.sh
$ jps
15894 CobarStartup
15946 Jps
$ netstat -nlp|grep java
tcp6 0 0 :::8066 :::* LISTEN 15894/java
tcp6 0 0 :::9066 :::* LISTEN 15894/java
java7下可以直接启动,如果时java8需要注释掉startup.sh中的一行。
# JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSCompactAtFullCollection"
请检查下进程是否启动,如果配置有误是无法启动的。启动后,我们可以看到已经开启了两个端口,8066和9066,其中8066是用于数据读写等操作的,9066是用于cobar自身管理的。我们迫不及待的要去试下了。
第四步:使用Cobar
lyw@lywd:~/db/mariadb-10.1$ bin/mysql -ulyw -p123456 -h127.0.0.1 -P8066
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| lyw |
+----------+
1 row in set (0.04 sec)
MySQL [(none)]> use lyw;
Database changed
MySQL [lyw]> show tables;
Empty set (0.00 sec)
MySQL [lyw]> create table h1 (id int primary key, v varchar(32));
Query OK, 0 rows affected (0.01 sec)
MySQL [lyw]> insert into h1 (id, v) values(1, 'aa'), (2, '2'), (256, 'cc'), (600,'dd'),(900, 'ee'), (1000, 'ff');
Query OK, 6 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
MySQL [lyw]> select * from h1;
+------+------+
| id | v |
+------+------+
| 256 | cc |
| 900 | ee |
| 1000 | ff |
| 600 | dd |
| 1 | aa |
| 2 | 2 |
+------+------+
6 rows in set (0.00 sec)
MySQL [lyw]> select * from h1 where id = 256;
+-----+------+
| id | v |
+-----+------+
| 256 | cc |
+-----+------+
1 row in set (0.00 sec)
MySQL [lyw]> select * from h1 where id in (256, 900, 901);
+-----+------+
| id | v |
+-----+------+
| 256 | cc |
| 900 | ee |
+-----+------+
2 rows in set (0.00 sec)