登录Mycat
在任意有MySQL的客户端的机器连接Mycat,执行以下命令:
mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB
测试
- 全局表 company
mysql> create table company(id int not null primary key,name varchar(100),sharding_id int not null);
Query OK, 0 rows affected (0.11 sec)
mysql> explain create table company(id int not null primary key,name varchar(100),sharding_id int not null);
+-----------+----------------------------------------------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+----------------------------------------------------------------------------------------------+
| dn3 | create table company(id int not null primary key,name varchar(100),sharding_id int not null) |
| dn2 | create table company(id int not null primary key,name varchar(100),sharding_id int not null) |
| dn1 | create table company(id int not null primary key,name varchar(100),sharding_id int not null) |
+-----------+----------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
mysql> insert into company(id,name,sharding_id) values(1,'leader us',10000);
Query OK, 1 row affected (0.01 sec)
mysql> select * from company;
+----+-----------+-------------+
| id | name | sharding_id |
+----+-----------+-------------+
| 1 | leader us | 10000 |
+----+-----------+-------------+
1 row in set (0.01 sec)
- 水平分表: tracelrecord
mysql> create table travelrecord(id int not null primary key,name varchar(100));
Query OK, 0 rows affected (0.02 sec)
mysql> explain create table travelrecord(id int not null primary key,name varchar(100));
+-----------+--------------------------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+--------------------------------------------------------------------------+
| dn1 | create table travelrecord(id int not null primary key,name varchar(100)) |
| dn2 | create table travelrecord(id int not null primary key,name varchar(100)) |
| dn3 | create table travelrecord(id int not null primary key,name varchar(100)) |
+-----------+--------------------------------------------------------------------------+
3 rows in set (0.00 sec)
mysql> insert into travelrecord(id,name) values(1,'hp');
Query OK, 1 row affected (0.00 sec)
mysql> select * from travelrecord ;
+----+------+
| id | name |
+----+------+
| 1 | hp |
+----+------+
1 row in set (0.01 sec)
- 分片表(employee)
mysql> create table employee(id int NOT NULL primary key,name varchar(100),sharding_id int not null);
Query OK, 0 rows affected (0.01 sec)
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)
mysql> insert into employee values(1,'leader us',10000);
ERROR 1064 (HY000): partition table, insert must provide ColumnList
mysql> insert into employee(id,name,sharding_id) values(2,'me',10010);
Query OK, 1 row affected (0.00 sec)
mysql> insert into employee(id,name,sharding_id) values(3,'mycat',10000);
Query OK, 1 row affected (0.00 sec)
mysql> insert into employee(id,name,sharding_id) values(4,'mydog',10010);
Query OK, 1 row affected (0.01 sec)
mysql> insert into employee(id,name,sharding_id) values(1,'leader us',10000);
Query OK, 1 row affected (0.00 sec)
mysql> select * from employee;
+----+-----------+-------------+
| id | name | sharding_id |
+----+-----------+-------------+
| 1 | leader us | 10000 |
| 3 | mycat | 10000 |
| 2 | me | 10010 |
| 4 | mydog | 10010 |
+----+-----------+-------------+
4 rows in set (0.01 sec)
真实数据存储如下: