准备工作:

服务器192.168.96.12,centos7, jdk,mysql5.7,mycat1.6.x,navicat

搭建步骤:

1.在服务器192.168.96.12服务器上安装mysql数据库,并且使用GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by '1328174';FLUSH PRIVILEGES;命令给mysql赋权,这样子才可远程访问mysql服务器. 为了保险,修改mysql配置文件,设置Mysql大小写不敏感,vi /etc/my.cnf,在[mysqld]后面添加:lower_case_table_names=1

2.在mysql服务器上安装三个分片数据库;

  CREATE database db1;

  CREATE database db2;

  CREATE database db3;

3.修改mycat的server.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
        - you may not use this file except in compliance with the License. - You
        may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
        - - Unless required by applicable law or agreed to in writing, software -
        distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
        WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
        License for the specific language governing permissions and - limitations
        under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
  <!--设置四个线程跑程序,不是必须-->

  <system>
          <property name="processors">4</property>
  </system>

  <!--配置一个root账号,此账号必须要能访问mysql服务器-->
        <user name="root">
                <property name="password">1328174</property>

<!--设置一个逻辑库,名称叫TESTDB,它必须要与schema.xml中名称一致-->
                <property name="schemas">TESTDB</property>
        </user>
</mycat:server>

4. 修改mycat的schema.xml的配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

<!--逻辑库的名称-->
        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
                <!--表名,sharding-by-intfile是分库分表策略,详细信息要去rule.xml中去查看,然后就会发现它是按照employee表中的sharding_id字段来进行分片,而且体如何分片,则可在conf/partition-hash-int.txt配置-->

     <table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3" rule="sharding-by-intfile" />
        </schema>

  <!---dataNode是节点,database是真实的mysql库->
        <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <dataNode name="dn2" dataHost="localhost1" database="db2" />
        <dataNode name="dn3" dataHost="localhost1" database="db3" />
    <dataHost name="localhost1" maxCon="500" minCon="10" balance="0"
                 dbType="mysql" dbDriver="native">

   <!--心跳检测-->
         <heartbeat>select user()</heartbeat>

   <!--mysql服务器连接信息-->
         <writeHost host="hostMaster" url="localhost:3306" user="root" password="1328174"></writeHost>
    </dataHost>
</mycat:schema>

5.  启动mycat

bin/startup_nowrap.sh, 查看日志可以logs文件下.

6. 登录mycat

  mysql -uroot -p1328174 -h192.168.96.12 -P8066 -DTESTDB

7. 创建employee表,然后插入数据

  create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

  使用explain命令查看创建employee的信息:

  

  

  插入数据:

  insert into employee(id,name,sharding_id) values(1,'leader us',10000);

  insert into employee(id,name,sharding_id) values(2, 'me',10010);

  insert into employee(id,name,sharding_id) values(3, 'mycat',10000);

  insert into employee(id,name,sharding_id) values(4, 'mydog',10010);

  insert into employee(id,name,sharding_id) values(5, 'mimi',10020);

  insert into employee(id,name,sharding_id) values(6, 'jetty',10020);

  然后也可以使用explain查看insert的信息.

8.使用navicat查看数据

  db1中有两条数据;

同样可以发现db2,db3中都有数据.达到了分库的目的.

同时,我们在mycat的TESTDB逻辑库中,却可以查询出employee表中的所有数据来.

最后补上hash-int分区策略的配置文件partition-hash-int.txt

mycat操作mysql示例之分库的更多相关文章

  1. MyCAT操作MySQL示例之E-R表

    接着上一篇继续..... E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据 Join 不会跨库操作. 表分 ...

  2. Docker安装Mycat和Mysql进行水平分库分表实战【图文教学】

    一.前言 小编最近公司有个新的需求,数据量比较大,要涉及到分库分表.大概了解了一些主流的中间件,使用和网上资料比较多的是Mycat和sharding-jdbc,小编比较倾向于Mycat.原因很简单就是 ...

  3. mycat操作MySQL第一篇:全局表

    1.安装mycat,点击bin下面startup_nowrap.bat启动 2.客户端连接mycat:server.xml里面的 <!--连接mycat用户名和密码.数据库--> < ...

  4. SpringBoot 使用Mybatis操作mysql示例

    1.准备数据库 创建数据库 create databases baodanjia; 创建帐号 create user 'baodanjia'@'%' identified by '123456' gr ...

  5. Mycat对MySQL进行垂直水平分表分库,读写分离

    1.   MyCAT概述 1.1 背景 随着传统的数据库技术日趋成熟.计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上.这时集中式数据库系统表现出它的不足: (1)集中 ...

  6. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)

    本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么 ...

  7. Mycat安装并实现mysql读写分离,分库分表

    Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...

  8. Docker安装Mycat并实现mysql读写分离,分库分表

    Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...

  9. go操作redis和mysql示例

    一:redis示例 使用redis的包是: github.com/garyburd/redigo/redis 1:编写第一个示例: 链接,设置,获取 redis_basic.go package ma ...

随机推荐

  1. Oracle OLAP

    w 国产商业智能 BI 这 20 年(1997-2017)| 天善智能  http://mp.weixin.qq.com/s/VJURX2qhmL0Uj1dctMyEig 1997-2001年,萌芽阶 ...

  2. 10.1 ‘The server's host key is not cached in the registry’

    10.1 ‘The server's host key is not cached in the registry’ This error message occurs when PuTTY conn ...

  3. 使用wxpy模块了解微信好友

    网上看了一篇python文章,内容简单有趣,正好可以练习一下.原文连接:http://mp.weixin.qq.com/s/oI2pH8uvq4kwYqc4kLMjuA 一.环境:Windows+py ...

  4. 2019 Nanchang Onsite

    D.Interesting Series F(n)实际上是一个等比数列的和,将它从递推式转变为通项公式(a^n-1)/(a-1),这里只需要确定n就可以. 题目要求选取k大小的所有子集的答案求和,可以 ...

  5. Delphi XE2 之 FireMonkey 入门(16) - 滤镜: 实例测试

    窗体上需要 TImage.TOpenDialog 和六个按钮. unit Unit1; interface uses   System.SysUtils, System.Types, System.U ...

  6. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_4_File类的构造方法

    学习一个类先学习构造方法和静态方法 重写了Object类的toString方法 文件夹结尾 相对路径 第二个构造方法 两个路径组装到了一起 加上双斜线 换成d盘 第三个构造 第一个参数是一个File对 ...

  7. 《图解设计模式》读书笔记5-2 decorator模式

    目录 代码演示 模式的角色和类图 思路拓展 Decorator模式即装饰器模式,就是对类进行装饰,下面通过代码说明. 代码演示 代码展示的内容 有一个类StringDisplay:表示一句话,比如he ...

  8. Matplotlib字体大小设置

    参考:https://blog.csdn.net/henkekao/article/details/72871882 ax = plt.subplot(111) # 设置刻度字体大小 plt.xtic ...

  9. 分页查询 pagecount recordcount pagesize

    pagecount=(recordcount+pagesize-1)/pagesize

  10. 阻塞队列 BlockingQueue 常用方法详解

    1.offer()和add()的区别 add()和offer()都是向队列中添加一个元素.但是如果想在一个满的队列中加入一个新元素,调用 add() 方法就会抛出一个 unchecked 异常,而调用 ...