千家信息网

mycat教程(二) —— mycat使用教程及分片方法案例

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,在完成mycat安装后, 开始一个示例来尽快熟悉mycat一、环境说明1. 服务器说明服务器名称地址说明mycat服务器10.211.55.13mycat中间件服务器mysql服务器10.211.55
千家信息网最后更新 2025年02月01日mycat教程(二) —— mycat使用教程及分片方法案例

在完成mycat安装后, 开始一个示例来尽快熟悉mycat

一、环境说明

1. 服务器说明

服务器名称地址说明
mycat服务器10.211.55.13mycat中间件服务器
mysql服务器10.211.55.9mysql服务器

2. mysql 库和表说明

库名称说明
db01只有一个user表
db02item表
db03item表

db02,db03上的item表根据id%2取模保存数据, 也就是进行了数据分片

  1. db01 创建表语句

    CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL DEFAULT '',`indate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
  2. db02,db03 创建表语句
    CREATE TABLE `item` (`id` int(11) NOT NULL AUTO_INCREMENT,`value` int(11) NOT NULL DEFAULT '0',`indate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8

3. mycat服务器说明

mycat目录: /usr/local/mycat

至此, 我们的环境就配置好了

二、配置mycat服务

1. server.xml配置

路径在 /usr/local/mycat/conf/server.xml

                0          0                  1                0                                                8066                                                9066                        300000 0.0.0.0                        4096 32                0                1                1m                1k                0                384m                true                                        123456                TESTDB                                user                TESTDB                true        

2. 配置rule.xml

路径在: /usr/local/mycat/conf/rule.xml
function必须在tableRule的下面, 否则会报错找不到

                                                        id                        mod-long                                                                        2                160        

3. 配置schema.xml

路径在: /usr/local/mycat/conf/schema.xml
声明也必须按照顺序, 最不需要调用的, 放在最后。

                                                
select user()

4. 启动mycat

> cd /usr/local/mycat/bin> ./mycat start

如果发生错误可以查看/usr/local/mycat/logs/wrapper.log日志

三、验证

1. 验证user表的查询写入

账号和密码都是server.xml声明的

> /usr/local/mysql/bin/mysql -h20.211.55.13 -uroot -P8066 -p123456
2. 查看库
mysql> show databases;+----------+| DATABASE |+----------+| TESTDB   |+----------+1 row in set (0.00 sec)

发现有TESTDB库

3. 查看表
mysql> use TESTDB;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+------------------+| Tables in TESTDB |+------------------+| item             || users            |+------------------+2 rows in set (0.00 sec)

看到了item和users表, 这就是我们在schema.xml中声明的逻辑表, 实际对应的是mysql服务器上的表

4. 验证user的写入
mysql> insert into users (`id`, `name`, `indate`)values(1, 'test_name', '2017-01-01');Query OK, 1 row affected (0.08 sec)mysql>

去实际的users表中看, 数据也存在。

5. 验证查询
mysql> select * from users;+----+-----------+---------------------+| id | name      | indate              |+----+-----------+---------------------+|  1 | test_name | 2017-01-01 00:00:00 |+----+-----------+---------------------+1 row in set (0.06 sec)

也可以查到, 说明执行成功了

2. 验证item表

1. 验证写入

因为id分布式的话,id无法自增判断, 所以必须指定id, 否则提示错误。这个在稍后会介绍如何解决

mysql> insert into item(`id`, `value`, `indate`)values(1, 1, '2017-01-01');Query OK, 1 row affected (0.01 sec)

查看实际的库, 发现写在了db03库中,

再写入一条

mysql> insert into item(`id`, `value`, `indate`)values(2, 2, '2017-01-01');Query OK, 1 row affected (0.01 sec)

发现写在了db02库中, 所以分片的方式也成功了

2. 验证查询
+----+-------+---------------------+| id | value | indate              |+----+-------+---------------------+|  2 |     2 | 2017-01-01 00:00:00 ||  1 |     1 | 2017-01-01 00:00:00 |+----+-------+---------------------+2 rows in set (0.03 sec)

也有了两条记录

欢迎访问我的博客


0