mycat

分库分表之MyCat应用 目录 1、分库分表介绍 1.1 垂直切分 1.2 水平切分 2、MyCAT介绍 3、MyCAT架构 4、MyCAT的关键特性 5、MyCAT分片策略 6、实战演练 6.1 创建数据库: 6.2 安装MyCAT 6.3 配置文件介绍 6.3 启动MyCAT测试 7、Java测试 7.1 pom依赖 7.2 spring配置 7.3 单元测试 8、Mycat自定义分片机制 8.1 Mycat的源码包 8.2 自定义分片类 8.3 打包替换 9、拓展 1、分库分表. 阅读详情





Mycat
















海量数据的存储问题

如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。

但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如果使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储。

什么是数据库分片

简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。

数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。

  1. 一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分


  1. 另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。

如何实现数据库分片

当数据库分片后,数据由一个数据库分散到多个数据库中。此时系统要查询时需要切换不同的数据库进行查询,那么系统如何知道要查询的数据在哪个数据库中?当添加一条记录时要向哪个数据库中插入呢?这些问题处理起来都是非常的麻烦。

这种情况下可以使用一个数据库中间件mycat来解决相关的问题。接下来了解一下什么是mycat。

Mycat介绍

什么是Mycat?


Mycat背后是阿里曾经开源的知名产品——Cobar。Cobar的核心功能和优势是 MySQL数据库分片,此产品曾经广为流传,据说最早的发起者对Mysql很精通,后来从阿里跳槽了,阿里随后开源的Cobar,并维持到2013年年初,然后,就没有然后了。

Cobar的思路和实现路径的确不错。基于Java开发的,实现了 MySQL公开的二进制传输协议,巧妙地将自己伪装成一个MySQLServer,目前市面上绝大多数MySQL客户端工具和应用都能兼容。比自己实现一个新的数据库协议要明智的多,因为生态环境在哪里摆着。


Mycat是基于 cobar演变而来,对 cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。

简单的说,MyCAT就是:

一个新颖的数据库中间件产品支持mysql集群,或者mariadb cluster,提供高可用性数据分片集群。你可以像使用mysql一样使用mycat。对于开发人员来说根本感觉不到mycat的存在。

Mycat支持的数据库






Mycat的分片策略



概念说明

逻辑库(schema):

前面一节讲了数据库中间件,通常对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库。

逻辑表(table):

既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。

分片表:是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片构成了完整的数据。总而言之就是需要进行分片的表。

非分片表:一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的,非分片是相对分片表来说的,就是那些不需要进行数据切分的表。

分片节点(dataNode)

数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是分片节点(dataNode)。

节点主机(dataHost)

数据切分后,每个分片节点(dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机并发数限制,尽量将读写压力高的分片节点(dataNode)均衡的放在不同的节点主机(dataHost)。

分片规则(rule)

前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度。

Mycat的下载及安装

安装环境

  1. jdk:要求jdk必须是1.7及以上版本

  2. Mysql:推荐mysql是5.5以上版本

  3. Mycat:

Mycat的官方网站:

http://www.mycat.org.cn/

下载地址:

https://github.com/MyCATApache/Mycat-download


安装步骤

Mycat有windows、linux多种版本。本教程为linux安装步骤,windows基本相同。

第一步:下载Mycat-server-xxxx-linux.tar.gz

第二步:将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。

第三步:进入mycat目录,启动mycat

./mycatstart

停止:

./mycatstop

mycat支持的命令{console | start | stop | restart | status | dump }

Mycat的默认端口号为:8066

Mycat的分片

需求

把商品表分片存储到三个数据节点上。


安装环境分析

两台mysql数据库服务器:

Host1:192.168.25.134

Host2:192.168.25.166


host1环境

操作系统版本 :centos6.4

数据库版本 :mysql-5.6

mycat版本:1.4release

数据库名 :db1、db3



mysql节点2环境

操作系统版本 :centos6.4

数据库版本 :mysql-5.6

mycat版本:1.4release

数据库名 :db2


MyCat安装到节点1上(需要安装jdk)


配置schema.xml

Schema.xml介绍

Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。


schema标签用于定义MyCat实例中的逻辑库

Table标签定义了MyCat中的逻辑表

dataNode标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。

dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。


注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。

在MySQL的配置文件中/etc/my.cnf[mysqld] 中增加一行

  lower_case_table_names=1


Schema.xml配置

<?xml version="1.0"?>

<!DOCTYPE mycat:schemaSYSTEM "schema.dtd">

<mycat:schemaxmlns:mycat="http://org.opencloudb/">


<schemaname="e3mall" checkSQLschema="false"sqlMaxLimit="100">

<!-- autosharding by id (long) -->

<tablename="tb_item" dataNode="dn1,dn2,dn3"rule="auto-sharding-long" />

</schema>

<dataNodename="dn1" dataHost="localhost1"database="db1" />

<dataNodename="dn2" dataHost="localhost2"database="db2" />

<dataNodename="dn3" dataHost="localhost1"database="db3" />

<dataHostname="localhost1" maxCon="1000" minCon="10"balance="0"

writeType="0"dbType="mysql" dbDriver="native"switchType="1" slaveThreshold="100">

<heartbeat>selectuser()</heartbeat>

<!-- canhave multi write hosts -->

<writeHosthost="hostM1" url="192.168.25.134:3306"user="root"

password="root">

<!--can have multi read hosts -->


</writeHost>

</dataHost>

<dataHostname="localhost2" maxCon="1000" minCon="10"balance="0"

writeType="0"dbType="mysql" dbDriver="native"switchType="1" slaveThreshold="100">

<heartbeat>selectuser()</heartbeat>

<!-- canhave multi write hosts -->

<writeHosthost="hostM1" url="192.168.25.166:3306"user="root"

password="root">

<!--can have multi read hosts -->


</writeHost>

</dataHost>

</mycat:schema>


配置server.xml


Server.xml介绍

server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。


Server.xml配置

<username="test">

<propertyname="password">test</property>

<propertyname="schemas">e3mall</property>

<propertyname="readOnly">false</property>

</user>


配置rule.xml

rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule

和function。

此配置文件可以不用修改,使用默认即可。

测试分片

创建表

配置完毕后,重新启动mycat。使用mysql客户端连接mycat,创建表。

------------------------------

-- Tablestructure for tb_item

------------------------------

DROP TABLEIF EXISTS `tb_item`;

CREATETABLE `tb_item` (

`id`bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',

`title`varchar(100) NOT NULL COMMENT '商品标题',

`sell_point`varchar(500) DEFAULT NULL COMMENT '商品卖点',

`price`bigint(20) NOT NULL COMMENT '商品价格,单位为:分',

`num`int(10) NOT NULL COMMENT '库存数量',

`barcode`varchar(30) DEFAULT NULL COMMENT '商品条形码',

`image`varchar(500) DEFAULT NULL COMMENT '商品图片',

`cid`bigint(10) NOT NULL COMMENT '所属类目,叶子类目',

`status`tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',

`created`datetime NOT NULL COMMENT '创建时间',

`updated`datetime NOT NULL COMMENT '更新时间',

PRIMARYKEY (`id`),

KEY `cid`(`cid`),

KEY`status` (`status`),

KEY`updated` (`updated`)

)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';


插入数据


将此文件中的数据插入到数据库:



分片测试

由于配置的分片规则为“auto-sharding-long”,所以mycat会根据此规则自动分片。

每个datanode中保存一定数量的数据。根据id进行分片

经测试id范围为:

Datanode1:1~5000000

Datanode2:5000000~10000000

Datanode3:10000001~15000000


当15000000以上的id插入时报错:

[Err]1064 - can't find any valid datanode :TB_ITEM -> ID -> 15000001

此时需要添加节点了。


Mycat读写分离

数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常是1-3个读节点的配置

Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。


Mysql的主从复制

主从配置需要注意的地方

1、主DBserver和从DBserver数据库的版本一致

2、主DBserver和从DBserver数据库数据名称一致

3、主DBserver开启二进制日志,主DBserver和从DBserver的server_id都必须唯一


Mysql主服务器配置

第一步:修改my.conf文件:

在[mysqld]段下添加:

binlog-do-db=db1

binlog-ignore-db=mysql

#启用二进制日志

log-bin=mysql-bin

#服务器唯一ID,一般取IP最后一段

server-id=134

第二步:重启mysql服务

servicemysqld restart

第三步:建立帐户并授权slave

mysql>GRANTFILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';

mysql>GRANTREPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%'identified by '123456';

#一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。


刷新权限

mysql>FLUSH PRIVILEGES;

查看mysql现在有哪些用户

mysql>selectuser,host from mysql.user;


第四步:查询master的状态

mysql>show master status;

+------------------+----------+--------------+------------------+-------------------+

|File | Position | Binlog_Do_DB | Binlog_Ignore_DB |Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

|mysql-bin.000001 | 120 | db1 | mysql | |

+------------------+----------+--------------+------------------+-------------------+

1row in set




Mysql从服务器配置

第一步:修改my.conf文件

[mysqld]

server-id=166


第二步:配置从服务器

mysql>changemaster tomaster_host='192.168.25.134',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120


注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是showmaster status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。


第二步:启动从服务器复制功能

Mysql>startslave;


第三步:检查从服务器复制功能状态:

mysql>show slave status


……………………(省略部分)

Slave_IO_Running:Yes //此状态必须YES

Slave_SQL_Running:Yes //此状态必须YES

……………………(省略部分)


注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。


错误处理:

如果出现此错误:

Fatalerror: The slave I/O thread stops because master and slave haveequal MySQL server UUIDs; these UUIDs must be different forreplication to work.

因为是mysql是克隆的系统所以mysql的uuid是一样的,所以需要修改。

解决方法:

删除/var/lib/mysql/auto.cnf文件,重新启动服务。


以上操作过程,从服务器配置完成。


Mycat配置

Mycat1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:

<dataNodename="dn1"dataHost="localhost1"database="db1"/>

<dataNodename="dn2"dataHost="localhost1"database="db2"/>

<dataNodename="dn3"dataHost="localhost1"database="db3"/>

<dataHostname="localhost1"maxCon="1000"minCon="10"balance="1"

writeType="0"dbType="mysql"dbDriver="native"switchType="2" slaveThreshold="100">

<heartbeat>showslave status</heartbeat>

<writeHosthost="hostM"url="192.168.25.134:3306"user="root"

password="root">

<readHosthost="hostS"url="192.168.25.166:3306"user="root"

password="root"/>

</writeHost>

</dataHost>




  1. 设置balance="1"与writeType="0"

Balance参数设置:

1.balance=“0”, 所有读操作都发送到当前可用的writeHost上。

2.balance=“1”,所有读操作都随机的发送到readHost。

3.balance=“2”,所有读操作都随机的在writeHost、readhost上分发

WriteType参数设置:

1.writeType=“0”, 所有写操作都发送到可用的writeHost上。

2.writeType=“1”,所有写操作都随机的发送到readHost。

3.writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。

“readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,目前mycat1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。”

  1. 设置switchType="2"与slaveThreshold="100"

switchType目前有三种选择:

-1:表示不自动切换

1:默认值,自动切换

2:基于MySQL主从同步的状态决定是否切换

“Mycat心跳检查语句配置为showslave status ,dataHost上定义两个新属性:switchType="2"与slaveThreshold="100",此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检测showslave status 中的"Seconds_Behind_Master","Slave_IO_Running", "Slave_SQL_Running"三个字段来确定当前主从同步的状态以及Seconds_Behind_Master主从复制时延。“



附:Centos6.5下安装mysql

第一步:查看mysql是否安装。

rpm-qa|grep mysql

第二步:如果mysql的版本不是想要的版本。需要把mysql卸载。

yumremove mysql mysql-server mysql-libs mysql-common

rm-rf /var/lib/mysql

rm/etc/my.cnf

第三步:安装mysql。需要使用yum命令安装。在安装mysql之前需要安装mysql的下载源。需要从oracle的官方网站下载。

  1. 下载mysql的源包。

我们是centos6.4对应的rpm包为:mysql-community-release-el6-5.noarch.rpm

  1. 安装mysql下载源:

yumlocalinstall mysql-community-release-el6-5.noarch.rpm

()此附件可保存

  1. 在线安装mysql:

yuminstall mysql-community-server

第四步:启动mysql

servicemysqld start

第五步:需要给root用户设置密码。

/usr/bin/mysqladmin-u root password 'new-password'  //为root账号设置密码

第六步:远程连接授权。

GRANTALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword'WITHGRANT OPTION;

注意:'myuser'、'mypassword'需要替换成实际的用户名和密码。



【mycat】mycat中配合mysql自增主键的使用 本文实现一个简单的demo,展示mycat配合mysql实现分库时自增主键的使用。 前提说明:mycat目前提供了自增主键的使用,但是如果对应的mysql节点上的数据表没有定义auto_increment的话,mycat的自增主键也是无效的。 温馨提示:关于mycat的安装、配置和简单测试可以查阅如下文档http://blog.youkuaiyun.com/smilefyx/article/detai 阅读详情

相关推荐

javaee

javaee

JAVAEE框架技术之15SSM综合案例 订单管理查询

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83Gu1x34-1666366516374)(assets/image-20220524164830244.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVTtWVeG-1666366516375)(assets/image-20220524164845182.png)]使得mapper.xml中的参数与后台的参数对应上,也增强了可读性。/项目名/product/findAll。

张晨光老师的播客 1310

mycat安装入门(两节点)

mycat安装入门文档,两个节点配置,希望能帮到大家,谢谢

高能产出!阿里技术官首发的MyCat中间件手册,理论实操齐下

当前是个大数据的时代,但究竟怎样规模的数据适合数据库系统呢?对此,国外有一个数据库领域的权威人士说了一个结论:千亿以下的数据规模仍然是数据库领域的专长,而 Hadoop 等这种系统,更适合的是千亿以上的规模。所以,Mycat 适合 1000 亿条以下的单表规模,如果你的数据超过了这个规模,请投靠 Mycat Plus 吧!

老男孩的架构路 197

基于Spring Boot框架的网上蛋糕销售系统

随着互联网的普及和电子商务的迅猛发展,网上购物已经成为人们日常生活的一部分。蛋糕作为一种受欢迎的食品,其销售市场也逐渐向网络化方向发展。网上蛋糕销售系统能够打破时间和地域的限制,让消费者随时随地浏览和购买蛋糕,同时也为蛋糕商家提供了一个展示和销售产品的平台。该系统的开发旨在提高蛋糕预定和销售的便捷性,节约时间和经济成本,并推动蛋糕市场的进一步发展。开发语言:Java,一种面向对象的编程语言,具有跨平台性、稳定性和安全性等特点,适用于构建大型、复杂的Web应用程序。 框架:Spring Boot,一个基于Sp

2301_81127431的博客 996

发那科FOCAS 1/2文档——核心库文件

在开始开发前,明确目标 CNC 的具体型号、连接方式(HSSB/TCP/IP)、软件版本和配置(如轴数、程序号位数),并据此正确配置开发环境和编译选项。开发时需要包含相应的头文件。这是开发跨平台应用时需要特别注意的地方。这是开发应用时必须了解的核心文件。

snailiot的博客 1020

mycat 指定mycat节点

mycat 指定节点:    /*!mycat:dataNode=order1*/select seq_nextval('APPOINTMENT_NO'); 指定节点创建存储过程或建表:   /*!mycat: sql=select 1 from 表 */ CREATE DEFINER=`root`@`%` PROCEDURE `proc_test`() BEGIN END ; ...

495

[Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

分类(Classification)属于有监督学习(Supervised Learning)中的一类,它是数据挖掘、机器学习和数据科学中一个重要的研究领域。分类模型类似于人类学习的方式,通过对历史数据或训练集的学习得到一个目标函数,再用该目标函数预测新数据集的未知属性。本章主要讲述分类算法基础概念,并结合决策树、KNN、SVM分类算法案例分析各类数据集,从而让读者学会使用Python分类算法分析自己的数据集,研究自己领域的知识,从而创造价值。 19.1 分类 19.1.1 分类模型 与前面讲述的聚类模型类似

杨秀璋的专栏 2万+

分库分表之MyCat详解

MyCat简介,server.xml详解,schema.xml详解,rule.xml详解

weixin_45881674的博客 1059

情感分析在金融领域的应用:舆情影响股价预测

我们都知道,股价的波动受到多种因素的影响,而大众的情绪和看法就是其中很重要的一部分。我们在日常生活中都有根据别人的评价来判断事物好坏的经验,在金融市场里,舆情就像是大众对某家公司的集体评价,它能反映出市场参与者的情绪和预期。学习这方面的知识,能帮助投资者更好地把握市场动态,做出更明智的投资决策,无论是个人投资者还是金融机构的分析师,都能从中受益。有一天,你看到某家知名企业被曝光了严重的产品质量问题,新闻铺天盖地,股民们也都在热议纷纷,负面情绪弥漫。这时,你会不会觉得这家公司的股价可能要下跌了呢?

AI 原生应用开发的博客 1145

(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.youkuaiyun.com/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}

江南才尽江南山,年少无知年少狂! 1024

MyCat支持哪些数据库?

3、SQL Server: 可以与Microsoft SQL Server协同工作。4、PostgreSQL: 也支持PostgreSQL数据库。2、Oracle: 支持与Oracle数据库的集成。1、MySQL: 与MySQL有很好的兼容性。

qq_33240556的博客 1006

WRFDA如何读取风云四号A 星的GIIRS数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1025

MyCAT 介绍,MyCAT主要功能 ,MyCAT 安装,MyCAT 配置(使用可能遇到的另类问题,见文末)

MyCAT 介绍,MyCAT主要功能 ,MyCAT 安装,MyCAT 配置 MyCAT介绍 Mycat是一个介于数据库与应用之间,进行数据处理与交互的中间服务! 通俗点讲,应用层可以将它看作是一个数据库的代理(或者直接看成加强版数据库)。但是由于真正的数据库需要存储引擎,而 Mycat 并没有存储引擎,Mycat服务不保存真正的数据,所以并不是完全意义的分布式数据库系统。所以称Mycat这样类型的数据库中间代理服务的产品为数据库中间件。 MyCAT 主要功能 读写分离 系统可配置是否开启读写分离,不开启读

不知名摸鱼开发 8186

深度学习时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战

深度学习多变量时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战 注意参考:深度学习多变量时间序列预测:GRU算法构建单变量时间序列预测模型+代码实战 GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。 GRU和LSTM在很多情况下实际表现上相差无几,那么为什么我们要使用新人GRU(.

data+scenario+science+insight 4032

网络安全系列-四十三:使用Suricata分析恶意流量pcap文件

本文基于[网络安全系列-三十六:使用Suricata IDS分析pcap文件]和 [网络安全系列-四十二: Suricata之rulesets的激活、更新及动态加载]的基础上,使用suricata针对包含恶意流量的pcap文件进行分析,触发事件告警,并对suricata输出的日志进行逐个分析,让你掌握针对恶意流量的分析步骤,及怎么查看suricata输出的日志。

penriver的博客 2882

mycat的mycat-web安装与使用(mycat-eye和zookeeper)

引言mycat 从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。   M...

周大侠的博客 6504

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MyCAT

MyCAT 是一个开源的分布式数据库中间件,它实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问。后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信。

chenglin016的博客 753

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

mycat 瑞士军刀mycat-web详解

引言mycat 从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。 ...

csdn's blog 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

在linux上搭建mycat环境

在Linux上搭建mycat   环境:windows7 虚拟机:Oracle VMVirtualBox Linux: ubuntukylin-14.04.1-amd64.iso JDK:1.7 mysql:5.5   一.环境准备 step1:安装虚拟机 step2:修改宿主机BIOS配置,详细步骤见文章:http://blog.youkuaiyun.com/lanonola/artic

lanonola的专栏 7411

MyCat

一般数据库操作,写操作(DML:insert update delete)都不会成为数据库的瓶颈,一般都是单表操作,并且很短时间都可以完成。但是读操作(DQL:select)往往非常浪费服务器资源,特别数据量大的多表联合查询,消耗服务器资源不亚于死循环,甚至导致数据库宕机。所以在企业中都会使用读写分离,让读操作多台服务器进行负载均衡,来缓解读压力。使用数据库中间件技术(mycat),让数据的查询(select)和写操作(insert update delete)在不同的主机上数据库执行,这就读写分离。

dys000000的博客 1086

mycat 源码分析

Druid 源码学习 Druid SQL 解析器的解析过程 Druid SQL 解析器的解析过程 参考URL: https://segmentfault.com/a/1190000008120254 [推荐]Druid SqlParser理解及使用入门 参考URL: https://www.cnblogs.com/lay2017/p/9840394.html public class Parser...

西京刀客 1834

MyCat从入门到实战:一篇文章搞定MyCat

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存 储,存在以下性能瓶颈:为了解决上述问题,我们需要对数据库进行分库分表处理。分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能 问题,从而达到提升数据库性能的目的。可以把MyCAT对数据库的作用和类比为 Nginx 对后端服务的影响:Nginx 将客户端流量分发到不同的后端服务以提升系统性能,而 MyCAT 则将数据库请求路由到不同的后端数据库节点,实现读写分离与分库分表,从而提高

weixin_53818428的博客 1345
上一篇: 批量插入数据
下一篇: MySql锁
cpp131313
博客等级 码龄15年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值