准备工作:

服务器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. SQLite入门语句之ALTER命令

    SQLite 的 ALTER TABLE 命令不通过执行一个完整的转储和数据的重载来修改已有的表,在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作. ...

  2. QTP技术支持之QTP对象无法识别(转自582357212的个人空间,链接:http://www.51testing.com/html/64/305564-847787.html)

    QTP自动化测试从业者,或者很多练习使用QTP开发自动化测试代码的人员遇到最多的问题恐怕就是对象无法识别了,对象无法识别原因有很多种,根据经常对QTP自动化测试脚本开发人员的技术Support,我总结 ...

  3. Java 之 回调方法

    打个比方,我们点外卖都有到达提醒的服务,顾客自己选择提醒的方式.可以是电话提醒.短信提醒.也可以敲门提醒,这里,“提醒”这个行为是美团或饿了么这样的平台提供的,相当于库函数,但是提醒的方式是由顾客决定 ...

  4. mooc-IDEA 项目/文件之间跳转--002

    二.IntelliJ IDEA -项目之间跳转 1.Next Project Window :跳转到下一个项目 [ ctrl+alt+) ] 2.Previous Project Window:跳转到 ...

  5. Java第三周总结&实验报告(1)

    总结:不知不觉,到了第三周,回顾这一周,我更加深入了解了main方法,除此之外,学习了两个关键字,一个this,一个static,this在强调属性时,只能放在句首且不能循环调用,static声明用于 ...

  6. 版本控制工具 GIT 简要教程

    一,Git 简介 其实这个就不用说了 但是国际惯例还是介绍一下吧; Git 是一个开源的分布式版本控制系统,用于敏捷 高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助 ...

  7. SpringBoot 参数检查 Controller中检查参数是否合法

    springboot 验证 默认使用的是hibernate validator ,不用额外增加引用包,springboot已经内置包含. 设置pom相关依赖 <?xml version=&quo ...

  8. [Web 前端] 012 css 元素溢出

    overflow 当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式 通过 overflow 属性来设置 概览 参数 释义 visible(默认值) 内容不会被修剪会呈现在元素框之 ...

  9. SSI框架【Struts、Spring、iBatis、Hibernate】

    1.B/S架构的JavaEE开发设计模式,JavaEE架构分成三个层次即表现层.业务逻辑层.数据持久层:而这三层分别通过Struts.Spring.iBatis开源的框架紧密组合在一起的. Strut ...

  10. xml与Properties的区别

    1.properties配置文件,是一个属性对应于一个值(key = value)这样的键值匹对模式: 每一行properties配置文件的键值,对应着一次赋值: 特殊点: 在前后两行properti ...