1.搭建mycat 分片服务器
 
数据库主机 192.168.4.55 使用db1库存储数据
数据库主机 192.168.4.56 使用db2库存储数据
主机 192.168.4.54 运行mycat服务,逻辑库名称为test,连接用户名为admin,密码123456
在主机 192.168.4.254 访问测试配置
1.1 在54(主机c1)和55(主机c2)上面分别创建db1和db2库
mysql> create database db1;   //c1上面创建db1库
mysql> create database db2;   //c2上面创建db2库
 
1.2 54 55 都授权
mysql> grant all on *.* to admin@"%" identified by "123456";
 
1.3 修改数据库的配置文件(54 55)
注意:1代表不区分表名的大小写,0为区分大小写
]# vim /etc/my.cnf
[mysqld]
lower_case_table_names=1      //表名忽略大小写
]# systemctl restart mysqld
 
1.4 在56主机上面安装JDK
]# rpm -qa | grep -i jdk //安装自带的即可
]# yum -y install java-1.8.0-openjdk
 
1.5 在56主机上面安装mycat
]# tar -xvf Mycat-server-1.4-beta-20150604171601-linux.tar.gz 
]# mv mycat /usr/local/
]# ls /usr/local/mycat/
bin  catlet  conf  lib  logs  version.txt
]# cd /usr/local/mycat/
]# ./bin/mycat --help
Usage: ./bin/mycat { console | start | stop | restart | status | dump }
 
1.6 修改配置文件
目录结构说明:
bin mycat命令,如 启动 停止 等
catlet 扩展功能
conf 配置文件
lib mycat使用的jar
log mycat启动日志和运行日志
wrapper.log mycat服务启动日志
mycat.log 记录SQL脚本执行后的报错内容
重要配置文件说明:
server.xml 设置连mycat的账号信息
schema.xml 配置mycat的真实库表
rule.xml 定义mycat分片规则
配置标签说明
<user>.. ..</user> 定义连mycat用户信息
<datanode>.. ..</datanode> 指定数据节点
<datahost>.. ..</datahost> 指定数据库地址及用户信息
查看server.xml配置文件
]# cd conf/
conf]# vim server.xml
        </system>
        <user name="test">        //连接mycat服务时使用的用户名 test
                <property name="password">test</property>        
//使用test用户连接mycat用户时使用的密码
                <property name="schemas">TESTDB</property>    
//连接上mycat服务后,可以看到的库名多个时,使用逗号分隔 (是逻辑上的库名,服务器上没有这个库名,随便取,但要记住)
        </user>
        <user name="user">
                <property name="password">user</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>        
//定义只读权限,使用定义的user用户连接mycat服务后只有读记录的权限,不写这一行则是可读可写
        </user>
 
修改schema.xml配置文件
conf]# vim schema.xml
<table name="travelrecord" dataNode="dn1,dn2" rule="auto-sharding-long" />
//travelrecord(逻辑上的,名字不能随便写,一般不动)表分片到数据节点dn1和dn2,dn1和dn2随便取的名字
<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2" />
<table name="hotnews" primaryKey="ID" dataNode="dn1,dn2" rule="mod-long" />
<dataNode name="dn1" dataHost="c1" database="db1" />
//数据节点对应的服务器 name="dn1"名称要与上面的对应 dataHost="c1"写本机主机名,database="db1"存在的数据库名,定义分片使用的库,所在的物理主机,真正存储数据的db1库在物理主机mysql55上
<dataNode name="dn2" dataHost="c2" database="db2" />
//定义分片使用的库,所在的物理主机,真正存储数据的db1库在物理主机mysql55上
指定c1名称主机对应的ip地址
<dataHost name="c1" 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="c1" url="192.168.4.54:3306" user="admin"        
                        password="123456">
//访问数据库时,mycat服务连接数据库服务器时使用的用户名和密码
                        <!-- can have multi read hosts -->
                </writeHost>
        </dataHost>
指定c2名称主机对应的ip地址(完整复制一对datahost)
        <dataHost name="c2" 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="c2" url="192.168.4.55:3306" user="admin"        
                         password="123456">
//访问数据库时,mycat服务连接数据库服务器时使用的用户名和密码
                        <!-- can have multi read hosts -->
                </writeHost>
        </dataHost>
 
添加PATH路径
conf]# export PATH=/usr/local/mycat/bin:$PATH
conf]# echo "PATH=/usr/local/mycat/bin:$PATH" >> /etc/profile
conf]# source /etc/profile
conf]# echo $PATH
conf]# which mycat
/usr/local/mycat/bin/mycat
 
启动服务并查看端口
conf]# netstat -antup | grep :8066
tcp6   0   0 :::8066    :::*  LISTEN  6496/java           
conf]#  ps -C java
  PID TTY       TIME CMD
 6496 ?     00:00:01 java
 
真机登陆:
]# mysql -h192.168.4.54 -uadmin -p123456
mysql>  show processlist;
+----+-------+---------------------+------+---------+------+----------+------------------+
| Id | User  | Host                | db   | Command | Time | State    | Info             |
+----+-------+---------------------+------+---------+------+----------+------------------+
|  3 | root  | localhost           | NULL | Sleep   | 1386 |          | NULL             |
|  5 | admin | 192.168.4.56:38610  | db1  | Sleep   |   98 |          | NULL             |
|  6 | admin | 192.168.4.56:38616  | db1  | Sleep   |   78 |          | NULL             |
|  7 | admin | 192.168.4.56:38612  | db1  | Sleep   |   38 |          | NULL             |
|  8 | admin | 192.168.4.56:38614  | db1  | Sleep   |   88 |          | NULL             |
|  9 | admin | 192.168.4.56:38618  | db1  | Sleep   |    8 |          | NULL             |
| 10 | admin | 192.168.4.56:38620  | db1  | Sleep   |   48 |          | NULL             |
| 11 | admin | 192.168.4.56:38622  | db1  | Sleep   |   68 |          | NULL             |
| 12 | admin | 192.168.4.56:38626  | db1  | Sleep   |   28 |          | NULL             |
| 13 | admin | 192.168.4.56:38628  | db1  | Sleep   |   58 |          | NULL             |
| 14 | admin | 192.168.4.56:38624  | db1  | Sleep   |   18 |          | NULL             |
| 15 | admin | 192.168.4.254:40452 | NULL | Query   |    0 | starting | show processlist |
+----+-------+---------------------+------+---------+------+----------+------------------+
 
]# mysql -h192.168.4.55 -uadmin -p123456
mysql> show processlist;
+----+-------+---------------------+------+---------+------+----------+------------------+
| Id | User  | Host                | db   | Command | Time | State    | Info             |
+----+-------+---------------------+------+---------+------+----------+------------------+
|  3 | root  | localhost           | NULL | Sleep   | 1526 |          | NULL             |
|  5 | admin | 192.168.4.56:37200  | db2  | Sleep   |   96 |          | NULL             |
|  6 | admin | 192.168.4.56:37202  | db2  | Sleep   |   16 |          | NULL             |
|  7 | admin | 192.168.4.56:37194  | db2  | Sleep   |   76 |          | NULL             |
|  8 | admin | 192.168.4.56:37196  | db2  | Sleep   |    6 |          | NULL             |
|  9 | admin | 192.168.4.56:37198  | db2  | Sleep   |   86 |          | NULL             |
| 10 | admin | 192.168.4.56:37204  | db2  | Sleep   |   66 |          | NULL             |
| 11 | admin | 192.168.4.56:37190  | db2  | Sleep   |   26 |          | NULL             |
| 12 | admin | 192.168.4.56:37192  | db2  | Sleep   |   36 |          | NULL             |
| 13 | admin | 192.168.4.56:37206  | db2  | Sleep   |   46 |          | NULL             |
| 14 | admin | 192.168.4.56:37208  | db2  | Sleep   |   56 |          | NULL             |
| 15 | admin | 192.168.4.254:37330 | NULL | Query   |    0 | starting | show processlist |
+----+-------+---------------------+------+---------+------+----------+------------------+
 
56上
conf]# ls /usr/local/mycat/logs/
mycat.log  mycat.pid  wrapper.log    //wrapper.log为错误日志
conf]# ldconfig -v   //更新加载的模块
 
1.7 客户端访问(真机)
命令: mysql -hmycat主机的IP -P端口号 -u用户 -p密码
]# mysql -h192.168.4.56 -P8066 -utest -ptest
mysql> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB   |
+----------+
 
mysql> USE TESTDB;
mysql> show tables;
+------------------+
| Tables in TESTDB |
+------------------+
| company          |
| customer         |
| customer_addr    |
| employee         |
| goods            |
| hotnews          |
| orders           |
| order_items      |
| travelrecord     |
+------------------+
 
1.8 客户端测试:
mysql> create table employee(id int not null primary key,name varchar(100),sharding_id int not null);
mysql> DESC employee;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id          | int(11)      | NO   | PRI | NULL    |       |
| name        | varchar(100) | YES  |     | NULL    |       |
| sharding_id | int(11)      | NO   |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
mysql> insert into employee(id,name,sharding_id) values(1,"bob",10000);
mysql> insert into employee(id,name,sharding_id) values(1,"lucy",10010);
mysql> select * from  employee;
+----+------+-------------+
| id | name | sharding_id |
+----+------+-------------+
|  1 | bob  |       10000 |
|  1 | lucy |       10010 |
+----+------+-------------+
 
在c1上面查看结果
mysql> use db1;
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| employee      |
+---------------+
 
mysql> select * from employee;   //查看结果
+----+------+-------------+
| id | name | sharding_id |
+----+------+-------------+
|  1 | bob  |       10000 |
+----+------+-------------+
 
在c2上面查看结果
mysql> use db2;
mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| employee      |
+---------------+
 
mysql> select * from employee;   //查看结果
+----+------+-------------+
| id | name | sharding_id |
+----+------+-------------+
|  1 | lucy |       10010 |
+----+------+-------------+

MyCat支持的10中分片规则

三十八. 分库分表概述 配置mycat的更多相关文章

  1. springboot(十四)-分库分表-自动配置

    上一节我们是手动配置数据源的,直接在java代码里写数据库的东西,这操作我个人是不喜欢的.我觉得这些东西就应该出现在application.yml文件中. 还有,万一我们的项目在使用之后,突然需要改变 ...

  2. springboot(十三)-分库分表-手动配置

    sharding-jdbc简介 Sharding-JDBC直接封装JDBC API,可以理解为增强版的JDBC驱动,旧代码迁移成本几乎为零: 可适用于任何基于java的ORM框架,如:JPA, Hib ...

  3. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变

    [Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...

  4. 数据库分库分表中间件:Mycat;分布式数据库;mysql的分布式事务

    官网:http://mycat.io/,里面有电子书籍可以下载:http://www.mycat.io/document/mycat-definitive-guide.pdf 旧版本下载地址:http ...

  5. Spring Boot教程(三十八)使用MyBatis注解配置详解(1)

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

  6. MySQL主从(MySQL proxy Lua读写分离设置,一主多从同步配置,分库分表方案)

    Mysql Proxy Lua读写分离设置 一.读写分离说明 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELE ...

  7. Linux 配置 mycat 和 分库分表配置。

    Linux 如何配置mycat? 3.配置mycat 3.1.规定linux的用户名和全名不能叫mycat!!!否则mycat会不生效(原因是影响整个linux系统的环境变量导致mycat的配置环境变 ...

  8. OneProxy分库分表演示--楼方鑫

    OneProxy分库分表演示 (杭州平民软件有限公司) OneProxy是为MySQL精心设计的数据访问层,可以为任何开发语言提供对MySQL数据库的智能数据路由功能,比如单点切换.读写分离.分库分表 ...

  9. sharding-jdbc之——分库分表实例

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79368021 一.概述 之前,我们介绍了利用Mycat进行分库分表操作,Mycat ...

随机推荐

  1. c++实现双端队列

    在使用c++容器的时候其底层如何实现  例如  vector 容器  :是一个内存可以二倍扩容的向量容器,使用方便但是对内存要求严格,弊端明显    list  容器  : 双向循环链表    deq ...

  2. Map、FlatMap 和 Reduce

    Map 作用是生成一个新数组,遍历原数组,将每个元素拿出来做一些变换然后 append 到新的数组中. [1, 2, 3].map((v) => v + 1) // -> [2, 3, 4 ...

  3. Feign 客户端调用错误

    1.@RequestBody 必须要写在实现接口中 2.Feign 客户端调用的时候如果有参数的话,默认是发送post请求 3.服务接口中的请求参数必须要加上@RequestParam("r ...

  4. 【转载】 C#中日期类型DateTime的日期加减操作

    在C#开发过程中,DateTime数据类型用于表示日期类型,可以通过DateTime.Now获取当前服务器时间,同时日期也可以像数字一样进行加减操作,如AddDay方法可以对日期进行加减几天的操作,A ...

  5. 记一次渗透某XX站

    0X00 前言 团队A师傅发来个站,问我有没有得搞 正好在搞其他的站,卡住了,开干换个思路. 0x01 信息收集 开burp抓了下包,目标设置了url重写,开了报错,我们随意输入一个控制器就直接报错. ...

  6. BPM FlowPortal 开发环境及发布环境的配置

    开启开发模式 开发时应设置防缓存和调试信息输出. 开发后发布 开发完成后正式使用时,除了对以上各项做相反设置外,还需设置web.config中的JSVersion,使每个用户都能自动下载最新版的js文 ...

  7. Intellij里检出svn报错找不到svn解决办法

    Intellij里检出svn报错找不到,解决办法: 1. 安装svn客户端: 2. 去掉settings->version control->subversion里的use command ...

  8. echart——关系图graph详解

    VueEchart组件见上一篇 <template> <VueEcharts :options="options" auto-resize /> </ ...

  9. awk 概述及常用方法总结

    awk 简介 awk是一个文本处理工具,通常用于处理数据并生成结果报告, awk的命名是它的创始人 Alfred Aho.Peter Weinberger和Brian Kernighan 姓氏的首个字 ...

  10. extjs6 创建工程和打包发布

    准备工作: 下载extjs6的开发包,我这里是试验版:ext-6.6.0-trial.zip.解压到某个目录,我这里解压到:D:\tools\about-ext\ext-6.6.0-trial 目录下 ...