环境:
centos7.4 + mysql5.7.20 + mycat1.6
单台主机上安装了5台mysql_5.7.20 实例(3306,3307,3308,3309,3310)
3306为独立实例 (db6,order_db,sequence_test)
3307为独立实例 (db7,order_db)

3308为主DB (db8,user_db) --GTID复制
3309为从DB(主3308)
3301为从DB(主3308)

一、环境创建

#创建mycat账号
mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"create user mycat6@'%' identified by ''; grant all privileges on *.* to mycat6@'%'; "
mysql -uroot -p123456 -h127.0.0.1 -P 3307 -e"create user mycat7@'%' identified by ''; grant all privileges on *.* to mycat7@'%'; "
mysql -uroot -p123456 -h127.0.0.1 -P 3308 -e"create user mycat8@'%' identified by ''; grant all privileges on *.* to mycat8@'%'; " #创建数据库及表
mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"create database db6;"
mysql -uroot -p123456 -h127.0.0.1 -P 3307 -e"create database db7;"
mysql -uroot -p123456 -h127.0.0.1 -P 3308 -e"create database db8;" mysql -uroot -p123456 -h127.0.0.1 -P 3308 -e"create database user_db;" ##配读写分离
mysql -uroot -p123456 -h127.0.0.1 -P 3308 -e"create table user_db.users(id int auto_increment primary key ,user_id int ,user_name varchar(12));" ##配读写分离 mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"create database order_db;" ##配分片
mysql -uroot -p123456 -h127.0.0.1 -P 3307 -e"create database order_db;" ##配分片
mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"create table order_db.orders(id int auto_increment primary key ,user_id int ,order_id varchar(12));" ##配分片
mysql -uroot -p123456 -h127.0.0.1 -P 3307 -e"create table order_db.orders(id int auto_increment primary key ,user_id int ,order_id varchar(12));" ##配分片 mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"create table db6.city(id int auto_increment primary key ,city_name varchar(16));" ##配全局表
mysql -uroot -p123456 -h127.0.0.1 -P 3307 -e"create table db7.city(id int auto_increment primary key ,city_name varchar(16));" ##配全局表
mysql -uroot -p123456 -h127.0.0.1 -P 3308 -e"create table db8.city(id int auto_increment primary key ,city_name varchar(16));" ##配全局表 mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"create database sequence_test;" ##全局序列库
mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"create table sequence_test.MYCAT_SEQUENCE(name VARCHAR (50) NOT NULL PRIMARY KEY , current_value INT NOT NULL ,increment INT NOT NULL DEFAULT 100 ); " ##全局序列号表
mysql -uroot -p123456 -h127.0.0.1 -P 3306
use sequence_test ;
#取当前squence的值
mysql>
DROP FUNCTION IF EXISTS mycat_seq_currval;
DELIMITER $
CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50)) RETURNS varchar(64) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE retval VARCHAR(64);
SET retval="-999999999,null";
SELECT concat(CAST(current_value AS CHAR),",",CAST(increment AS CHAR)) INTO retval FROM MYCAT_SEQUENCE WHERE name = seq_name;
RETURN retval;
END $
DELIMITER ;
#设置 sequence 值
mysql>
DROP FUNCTION IF EXISTS mycat_seq_setval;
DELIMITER $
CREATE FUNCTION mycat_seq_setval(seq_name VARCHAR(50),value INTEGER) RETURNS varchar(64) CHARSET utf8
DETERMINISTIC
BEGIN
UPDATE MYCAT_SEQUENCE
SET current_value = value
WHERE name = seq_name;
RETURN mycat_seq_currval(seq_name);
END $
DELIMITER ;
#取下一个sequence的值
mysql>
DROP FUNCTION IF EXISTS mycat_seq_nextval;
DELIMITER $
CREATE FUNCTION mycat_seq_nextval(seq_name VARCHAR(50)) RETURNS varchar(64) CHARSET utf8
DETERMINISTIC
BEGIN
UPDATE MYCAT_SEQUENCE
SET current_value = current_value + increment WHERE name = seq_name;
RETURN mycat_seq_currval(seq_name);
END $
DELIMITER ; mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e"use sequence_test;INSERT INTO MYCAT_SEQUENCE(name,current_value,increment) VALUES ('seq_test', 1, 100); " #全局序列号名称引用关系
#INSERT INTO MYCAT_SEQUENCE(name,current_value,increment) VALUES (【'seq_test'】, 1, 100); "
#【SEQ_TEST]】=dn_seq
#next value for MYCATSEQ_【SEQ_TEST】

二、文件配置

sequence_db_conf.properties 全局序列号文件配置
SEQ_TEST=dn_seq server.xml 文件配置(修改内容)
<system>
<property name="sequnceHandlerType">1</property> ##全局序列号
</system> <user name="mycat">
<property name="password">123456</property>
<property name="schemas">s_global_db,s_db6,s_db7,s_db8,s_user_db,s_order_db</property> ##mysql> show databases;看到的内容
</user> schema.xml 文件配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="s_db6" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn6" > </schema>
<schema name="s_db7" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn7" > </schema>
<schema name="s_db8" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn8" > </schema>
<schema name="s_user_db" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn82" > </schema>
<schema name="s_order_db" checkSQLschema="false" sqlMaxLimit="100">
<table name="orders" primaryKey="id" autoIncrement="true" dataNode="dn62,dn72" rule="mod-long" /> ##分片表
</schema>
<schema name="s_global_db" checkSQLschema="false" sqlMaxLimit="100">
<table name="city" primaryKey="id" autoIncrement="true" type="global" dataNode="dn6,dn7,dn8" /> ##全局表
</schema> <dataNode name="dn6" dataHost="dh6" database="db6" />
<dataNode name="dn7" dataHost="dh7" database="db7" />
<dataNode name="dn8" dataHost="dh8" database="db8" />
<dataNode name="dn82" dataHost="dh8" database="user_db" />
<dataNode name="dn62" dataHost="dh6" database="order_db" /> ##分片表
<dataNode name="dn72" dataHost="dh7" database="order_db" /> ##分片表
<dataNode name="dn_seq" dataHost="dh6" database="sequence_test" /> ##全局序列号节点 <dataHost name="dh6" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="host6_M" url="127.0.0.1:3306" user="mycat6" password="123456"> </writeHost>
</dataHost> <dataHost name="dh7" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="host7_M" url="127.0.0.1:3307" user="mycat7" password="123456"> </writeHost>
</dataHost> <dataHost name="dh8" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="host8_M" url="127.0.0.1:3308" user="mycat8" password="123456"> ##读写分离
<readHost host="host8_S1" url="127.0.0.1:3309" user="mycat8" password="123456" />
<readHost host="host8_s2" url="127.0.0.1:3310" user="mycat8" password="123456" />
</writeHost>
</dataHost> </mycat:schema> rule.xml文件配置(修改内容)
<tableRule name="mod-long"> ##分片表(规则)
<rule>
<columns>user_id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule> <function name="mod-long" class="io.mycat.route.function.PartitionByMod"> ##分片表(函数)
<!-- how many data nodes -->
<property name="count">2</property> ##分片节点数量
</function>

三、测试结果

测试分表及全局序列号结果:

mysql -umycat -p123456 -h127.0.0.1 -P 8066 -e "show databases;"
mysql -umycat -p123456 -h127.0.0.1 -P 8066 -e "use s_order_db ; "
mysql -umycat -p123456 -h127.0.0.1 -P 8066 -e "use s_order_db ; select * from orders; insert into orders(id,user_id,order_id) values (next value for MYCATSEQ_SEQ_TEST,1,'A01'); insert into orders(id,user_id,order_id) values (next value for MYCATSEQ_SEQ_TEST,2,'A02'); insert into orders(id,user_id,order_id) values (next value for MYCATSEQ_SEQ_TEST,3,'A03'); insert into orders(id,user_id,order_id) values (next value for MYCATSEQ_SEQ_TEST,4,'A04'); insert into orders(id,user_id,order_id) values (next value for MYCATSEQ_SEQ_TEST,5,'A05'); insert into orders(id,user_id,order_id) values (next value for MYCATSEQ_SEQ_TEST,7,'A07');"
mysql -uroot -p123456 -h127.0.0.1 -P 8066 -e "use s_order_db ; select * from orders; "
mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e "use order_db ; select * from orders; "
mysql -uroot -p123456 -h127.0.0.1 -P 3307 -e "use order_db ; select * from orders; " 测试全局表结果:
mysql -umycat -p123456 -h127.0.0.1 -P 8066 -e "use s_global_db ; insert into city(id,city_name) values (null,'武汉'); insert into city(id,city_name) values (null,'深圳');"
mysql -umycat -p123456 -h127.0.0.1 -P 8066 -e "use s_global_db ; select * from city; "
mysql -uroot -p123456 -h127.0.0.1 -P 3306 -e "use db6 ; select * from city; "
mysql -uroot -p123456 -h127.0.0.1 -P 3307 -e "use db7 ; select * from city; "
mysql -uroot -p123456 -h127.0.0.1 -P 3308 -e "use db8 ; select * from city; "

mycat 1.6 简单的操作实例的更多相关文章

  1. 安卓 SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  2. 在安卓开发中使用SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  3. 审核流(3)低调奢华,简单不凡,实例演示-SNF.WorkFlow--SNF快速开发平台3.1

    下面我们就从什么都没有,结合审核流进行演示实例.从无到有如何快速完美的实现,然而如此简单.低调而奢华,简单而不凡. 从只有数据表通过SNF.CodeGenerator代码生成器快速生成单据并与审核流进 ...

  4. 初学redux笔记,及一个最简单的redux实例

    categories: 笔记 tags: react redux 前端框架 把初学redux的一些笔记写了下来 分享一个入学redux很合适的demo, 用redux实现计数器 这是从阮一峰老师git ...

  5. ado.net的简单数据库操作(一)

    摘要:接下来的几篇博客将要讲到如何使用ado.net实现简单的数据库操作,包括增删改等内容.首先会介绍基础的数据库操作,然后以一个实例来进行讲解,这个实例会把一个数据表读取到winform上,然后在w ...

  6. selenium--控制浏览器和简单元素操作

    控制浏览器1.driver.maximize_window() #浏览器最大化2.driver.set_windows_size(480*800) #浏览器设置成移动端大小(480*800),参数数字 ...

  7. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)

    这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...

  8. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)

    梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...

  9. 简单是Jedis实例(相对连接池而言)

    在引入相关jar包后,只要new一个Jedis对象,就能做redis相关操作了.以下是一个简单的jedis实例: package com.pptv.redis; import java.util.Ar ...

随机推荐

  1. Struts2之Struts2的标签库

    前言: Struts2提供了大量的标签 ,用来帮助开发表现层页面,这些表现一方面解决了美观性的需求,因为它们具有html标签一样的外观,另一方面它们解决了功能性的需求, 因为它们具有jsp脚本一样的逻 ...

  2. LR录制脚本的时候打不开浏览器问题

    使用Chrome时,显示开始录制但是Action中无任何脚本,即脚本没成功生成. 使用Firefox(最新版),一直关闭程序,详细信息有StackHash_0a9e. 使用IE11时,也是显示开始录制 ...

  3. MobileNet_v2

    研究动机: 神经网络彻底改变了机器智能的许多领域,实现了超人的准确性.然而,提高准确性的驱动力往往需要付出代价:现代先进网络需要高度计算资源,超出许多移动和嵌入式应用的能力. 主要贡献: 发明了一个新 ...

  4. JAVA类的方法调用和变量(全套)

    一.类的分类: 1.普通类 2.抽象类(含有抽象方法的类) 3.静态类(不需要实例化,就可以使用的类) 二.方法的分类: 1.私有方法(只有类的内部才可以访问的方法) 2.保护方法(只有类的内部和该该 ...

  5. 深度学习之 rnn 台词生成

    深度学习之 rnn 台词生成 写一个台词生成的程序,用 pytorch 写的. import os def load_data(path): with open(path, 'r', encoding ...

  6. Python-面向对象(一)-Day7

    Day7-面向对象基础 1一.isinstance(obj, cls) 1二.issubclass(sub, super) 1三.异常处理 11.异常基础 12.异常种类 23.异常其他结构 54.主 ...

  7. MyEclipse的多模块Maven web(ssm框架整合)

    Maven的多模块可以让项目结构更明确,提高功能的内聚,降低项目的耦合度,真正的体现出分层这一概念. 我们在操作中,要明白为什么这样做,要了解到更深的层次,这样,我们就不限于个别软件了. 话不多说,直 ...

  8. MySQL中使用sql语句获得表结构

    最近在研究PHP,那么就必须涉及到mysql.其中一个功能通过表数据自动生成页面,紧接着发现在一张空表中无法读取数据(因为人家刚刚新建,就是空的没有数据) 延伸出来便是直接查表结构获得字段名,再进行处 ...

  9. unity3D 知识点随手记

    最近闲来无事,记记unity3D相关的一些知识点吧,也当作笔记存储.转载请标明出处:http://www.cnblogs.com/zblade/ 1.unity是如何调用Start/Awake等相关函 ...

  10. MVC、MVP以及MVVM分析

    网上现在MVC.MVP以及MVVM的讲解一搜一箩筐,根据了网上大多数的文章,根据我的思考习惯进行了总结. MVC介绍及分析: 各层的职责如下所示: Models: 数据层,负责数据的处理和获取的数据接 ...