【Mycat】MySQL读写分离

【MyCat】mycat实现mysql读写分离 mycat实现MySQL读写分离 阅读详情

master-slave读写分离

项 目MycatMySQL-masterMySQL-master-standbyMySQL-slave
IP10.230.4.13110.230.3.19410.230.3.19510.230.2.132
Port8077/9077330633063307

MySQL为二主一从,3.195为3.194的standby,2.132为3.194的slave。

实验用例表如下:

CREATE TABLE 'yf.travelrecord' (
    'id' int(11) NOT NULL AUTO_INCREMENT,
    'org_code' varchar(20) NOT NULL,
    'test_name' varchar(20) DEFAULT NULL,
    PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Mycat的基本配置如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
    <schema name="mycat01" checkSQLschema="false" sqlMaxLimit="1000">
        <table name="travelrecord" primaryKey="id" dataNode="MySQL" />
    </schema>
    <dataNode name="MySQL" dataHost="MySQL_Host" database="yf" />
    <dataHost name="MySQL_Host" maxCon="1000" minCon="3" balance="0" writeType="0" dbType="MySQL" dbDriver="native" switchType="1">
        <heartbeat>select user()</heartbeat>
        <writeHost host="MySQL_M1" url="10.230.3.194:3306" user="xjw_dba" password="123">
            <readHost host="MySQL_S1" url="10.230.3.132:3307" user="wjx_dba" password="123" />
        </writeHost>
        <writeHost host="MySQL_M2" url="10.230.3.195:3306" user="xjw_dba" password="123">
        </writeHost>
    </dataHost>
</mycat:schema>            

通过show @@datasource查看后端数据库的分布情况

balance=0

不开启读写分离机制,所有的读操作都发送到当前的writeHost上。

balance=1

所有读操作都发送到了当前的wirteHost对应的readhost和备用的writehost,这样就可以减轻主库的压力,高效地提供写操作,而由其他服务器承担比较耗费资源的读操作。

balance=2

所有读操作都发送到所有的writeHost金额readhost上,即当前datahost内的服务器都参与分担读操作。这个场景比较适合主库压力不是很大时,也可以分担读操作,更合理地利用资源。

balance=3

所有读操作只发送到当前writeHost对应的readhost上。在实际应用时,比较适合双主热备、多个slave的情况。

MySQL Galera Cluster读写分离

MySQL Galera Cluster是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高,能很好地保证业务量不断增长时数据的安全和随时扩展。

MySQL Galera Cluster的主要特点有:多服务器的拓扑结构;真正的多主架构,任何节点都可以进行读写及同步复制,各节点之间无延迟且节点宕机不会导致数据丢失;紧密耦合,所有节点均保持相同的状态,节点之间没有不同的数据,无须主从切换操作或使用vip;在Failover的过程中无停机时间(其实不需要Failover),无须手工备份当前数据库并复制至新节点;支持InnoDB存储引擎;对应用透明,无需更改应用或进行极小的更改便可以在任意节点上进行读写;自动剔除故障节点,自动加入新节点;真正行级别的并发复制,客户端连接与操作单台MySQL数据库的体验一致。

Galera官方建议一套Cluster至少有3个节点,理论上可以多写,但是在多个实验环境和生产案例中,多写会引起较为严重的锁等待,所以使用Galera时推荐用一写多读。这样,Galera结合Mycat,很容易配置出一套读写分离的数据库架构。

项 目MycatPxc1Pxc2Pxc3Pxc1_slave
IP10.230.4.13110.230.3.19410.230.3.19510.230.3.19510.230.2.132
Hostnamexjw-cc-03xjw-dba-01xjw-dba-02xjw-dba-03rfd-dba-01
Port8077/90773306330633063307

3.194、3.195、3.196为一套Percona Xtradb Cluster,2.132为3.194节点的slave。

实验用例表如下:

CREATE TABLE 'yf.travelrecord' (
    'id' int(11) NOT NULL AUTO_INCREMENT,
    'org_code' varchar(20) NOT NULL,
    'test_name' varchar(20) DEFAULT NULL,
    PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Mycat的基本配置如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
    <schema name="mycat01" checkSQLschema="false" sqlMaxLimit="1000">
        <table name="travelrecord" primaryKey="id" dataNode="pxc" />
    </schema>
    <dataNode name="pxc" dataHost="pxc_Host" database="yf" />
    <dataHost name="pxc_Host" maxCon="1000" minCon="3" balance="0" writeType="0" dbType="MySQL" dbDriver="native" switchType="3">
        <heartbeat>show status like 'wsrep%'</heartbeat>
        <writeHost host="pxc_M1" url="10.230.3.194:3306" user="xjw_dba" password="123">
        </writeHost>
        <writeHost host="pxc_M2" url="10.230.3.195:3306" user="xjw_dba" password="123">
        </writeHost>
        <writeHost host="pxc_M3" url="10.230.3.196:3306" user="xjw_dba" password="123">
        </writeHost>
    </dataHost>
</mycat:schema>            

balance=0

不进行读写分离,所有读写都走配置的dataHost的第一个writeHost。

balance=1

全部的readHost与stand by writeHost都参与select语句的负载均衡,如果Pxc的节点本身没带slave,则三个Pxc节点中 的一个作为写,另外两个作为读。按照我们的配置,pxc_M1将作为写节点,pxc_M2、pxc_M3参与度。

在第一个节点增加一台slave,Mycat配置如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
    <schema name="mycat01" checkSQLschema="false" sqlMaxLimit="1000">
        <table name="travelrecord" primaryKey="id" dataNode="pxc" />
    </schema>
    <dataNode name="pxc" dataHost="pxc_Host" database="yf" />
    <dataHost name="pxc_Host" maxCon="1000" minCon="3" balance="0" writeType="0" dbType="MySQL" dbDriver="native" switchType="3">
        <heartbeat>show status like 'wsrep%'</heartbeat>
        <writeHost host="pxc_M1" url="10.230.3.194:3306" user="xjw_dba" password="123">
            <readHost host="pxc_S1" url="10.230.3.132:3307" user="wjx_dba" password="123" />
        </writeHost>
        <writeHost host="pxc_M2" url="10.230.3.195:3306" user="xjw_dba" password="123">
        </writeHost>
        <writeHost host="pxc_M3" url="10.230.3.196:3306" user="xjw_dba" password="123">
        </writeHost>
    </dataHost>
</mycat:schema>            

这时pxc_S1也作为读节点加入读负载均衡。

balance=2

所有读操作都随机地在writeHost、readHost上分发。此时作为写节点的pxc_M1也参与读操作。

balance=3

所有读请求都随机地分发至writeHost对应的readHost执行,writeHost不负担读压力。如果writeHost没有对应的readHost,则查询分发至writeHost。

从上面的各种验证中可以看出,Galera Cluster有多个节点时,就能通过Mycat实现读写分离,而且从Galera的原理可以看出,节点间的同步是“实时”的,这就为那些对读写延迟要求严格的系统提供了很好的选择。如果某个读节点查询的资源消耗很大,影响了整个集群的性能,则这时可以在节点上加一个slave,把大查询再分离出去。增加slave或者调整读节点的操作对前端都是透明的,只需修改Mycat配置文件,重启或者重载Mycat即可。Galera Cluster的读写分离在某种意义上与Oracle ADG非常相似。

Mycat 实现 Mysql 集群读写分离 MySQL 读写分离的概述 阅读详情

相关推荐

MySQL之中间件Mycat实现读写分离

MySQL之中间件Mycat实现读写分离

wwwu1998的博客 1556

Mycat连接mysql8.0

mycat连接mysql8.0以上版本踩坑记录

qq_21568515的博客 2381

Linux云计算-使用 MyCat 实现 MySQL 主从读写分离

文章目录MySQL 读写分离的概述读写分离工作原理为什么要读写分离实现读写分离的方式常见的中间件程序什么是 MyCATMyCat 服务安装与配置MyCat 服务启动与启动设置配置 MySQL 主从实战节点宕机后自动切换 Slave 节点 MySQL 读写分离的概述 MySQL 作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台 MySQL 作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。 因此,一般来说都是通

xueshenlaila的博客 1749

Linux(CentOS 7) 安装 Mysql8 、Java 以及 mycat2 详细流程

将mycat2-install-template-1.21.zip 解压,然后把 核心mycat2-1.21-release-jar-with-dependencies.jar 放到 lib 里面。我这里获得mysql-8.0.32-linux-glibc2.12-x86_64.tar 的压缩包,每个人根据不同选择获取不一样 的名称压缩包。这里以 jdk-8u151-linux-x64.tar.gz为例,你下载的文件可能不是这个版本,这没关系,只要后缀(.tar.gz)一致即可。

风兮雨露的博客 3252

Mycat 基于MySQL master-slave 读写分离验证

Mycat 基于 MySQL master-slave 读写分离验证

给自己一个前行的动力 4093

使用MyCat实现MySQL读写分离

实验环境: 操作系统:ubuntu18.04.5 服务器:

s7827462的博客 790

Mycat+MySQL8.0

2. 找到/mycat/lib/中的mysql-connector-java-5.1.35.jar 然后删除掉将mysql-connector-java-8.0.11.jar驱动放进lib文件夹(maven官网可以下载MySQL的驱动)然后在给jar包赋予权限。4.最后远程连接mycat启动,由于mysql8.0加密问题--default_auth=mysql_native_password是必须要加的。3.修改/mycat/conf/中server.xml文件。1.修改数据库密码验证插件。

weixin_51472024的博客 863

mycat1.7支持mysql8的jar包

目前mycat并不支持mysql8的连接,附件是经过修改源码,使其支持mysql8的连接;支持版本为mycat1.7. 将这个jar替换到mycat/lib中的Mycat-server-1.7.0-DEV.jar

Linux上安装Mycat和配置连接MySQL 8(1),Linux运维入门你值得拥有

为了做好运维面试路上的助攻手,特整理了上百道。

m0_61549984的博客 1376

《Ventoy 制作系统安装 U 盘的具体步骤》

然后您可以在电脑的磁盘管理中对 U 盘进行快速格式化,选择 FAT32 或 NTFS 文件系统。至此,Ventoy 系统安装 U 盘就制作完成了。您可以在需要安装系统的电脑上,从 U 盘启动,然后选择相应的系统镜像进行安装。安装完成后,将您需要的操作系统镜像文件(如 Windows、Linux 等的 ISO 格式镜像)复制到 U 盘的根目录。在安装程序中,选择您插入的 U 盘设备,确保选择正确,以免误操作。2. 确认选择的 U 盘盘符正确,防止误操作导致其他磁盘数据丢失。点击“安装”按钮,等待安装完成。

jiyiwangluokeji的博客 2664

Proteus仿真实战:用AT89C51+L298N搭建直流电机PID调速系统(附完整工程文件)

本文详细介绍了使用Proteus仿真平台结合AT89C51单片机和L298N驱动模块搭建直流电机PID闭环调速系统的全过程。从硬件选型、电路连接到PID算法实现与参数整定,提供了完整的开发指南和工程文件,帮助读者快速掌握闭环调速系统的设计与调试技巧。

weixin_28724661的博客 447

Linux上安装Mycat和配置连接MySQL 8,一个三非渣本的Linux运维校招秋招之路

这个文件是Mycat最重要的配置文件,负责管理库、表、分片规则、DataNode、DataSource。| 属性 | 释义 || checkSQLschema | 是否去掉表前面的数据库的名称,默认false || sqlMaxLimit | 相当于SQL加上limit 语句 || heartbeat | 用于和后端数据库进行心跳检查的语句 |

m0_61549984的博客 514

计算机组成原理课设

计算机组成原理课程设计

qq_63306482的博客 8054

四、MySQL读写分离之MyCAT

四、MySQL读写分离之MyCAT

weixin_61428407的博客 1614

游戏战斗系统架构设计的演绎之路——从一坨意大利面条到一座精密钟表

摘要:游戏战斗系统架构设计的演进之路 本文系统梳理了游戏战斗系统从早期街机到现代3A大作的架构发展历程。70-80年代的街机游戏采用基础碰撞盒判定(如《街头霸王》);90年代实现动画融合与状态机架构(《最终幻想》《拳皇》);2000年后MMO引入服务器验证与同步技术(《魔兽世界》);3D时代融合物理引擎与智能AI(《GTA5》《只狼》);移动端则发展出轻量化架构与云端判定(《王者荣耀》)。现代战斗系统已实现模块化、数据驱动和热更新,未来趋势是AI裁判与云战斗系统。这一演进过程展现了技术与创意的完美结合,数百

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 800

使用MATLAB中的Simulink工具来构建一个微电网系统的仿真平台

微电网是指由分布式电源(如太阳能、风能等)、储能装置、负载以及控制和保护装置组成的局部电力系统。它可以独立于主电网运行,也可以与主电网并联运行。本示例将以一个简单的微电网为例,展示如何利用Simulink进行微电网接入与孤岛运行策略的设计与仿真。分布式电源:模拟太阳能光伏板或风力发电机等分布式电源。储能装置:用于存储多余能量或补充不足能量。负载:模拟实际用电需求。双向变流器:实现直流与交流之间的转换,并支持并网和孤岛模式切换。控制器:负责管理微电网的运行模式,包括并网控制和孤岛控制。

xiaoheshang_123的博客 345

Linux 使用Mycat实现读写分离(基于Mysql的读写分离)

今天做不成的事,明天也不会做好。 各位同学大家好,今天给大家分享一下用Mycat进行数据库的读写分离,本篇文章是基于上一篇的mysql主从复制。Linux上实现Mysql的主从复制(为Mycat读写分离作准备) 在上一篇文章中,我们在两个服务器使用同版本的操作系统和mysql: 服务器1:centos7.3,mysql5.6 服务器2:centos7.3,m...

linlangleo的博客 1万+

SAP会计凭证导入ABAP开发模板+注意点—附带源码

开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。

小九啥也不会 1232

Mycat实现MySQL读写分离

① 面对越来越大的访问压力,单台的服务器的性能成为瓶颈,需要分担负载 ② 主从只负责各自的写和读,极大程度的缓解 X 锁和S 锁争用 ③ 从库可配置myisam 引擎,提升查询性能以及节约系统开销 ④ 增加冗余,提高可用性基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT 查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库① Cobar: 阿里巴巴B2B 开发的关系型分布式系统,管理将近 3000 个MySQL

夏颜的博客 821

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-知识图谱制作、使用、dify集成

本文探讨了在构建本地RAG(Retrieval-Augmented Generation)系统时,如何通过引入知识图谱来增强系统的知识理解能力。传统的向量数据库和嵌入模型虽然能处理语义匹配,但无法有效捕捉知识间的关联性。知识图谱通过“实体-关系-属性”的结构化表示,能够更好地支持推理、推荐和多跳问答等高级功能。文章详细介绍了知识图谱的基本概念、制作思路,以及如何使用Neo4j图数据库进行知识图谱的构建和查询。通过实例展示了从PDF文件解析到知识图谱入库的全过程,强调了知识图谱在提升RAG系统性能中的重要作用

少说,多做 561

创建 Qt Quick 项目

来看看如何使用 Qt Creator 创建 Qt Quick 项目!

青春不老,奋斗不止! 1万+

MySQL使用MYCAT进行读写分离

vim /usr/local/mycat/conf/schemas/db1.schema.json ## 在里面添加集群的名称,作用是让该集群生成并管理这个库的物理库 "targetName":"prototype"/*+ mycat:resetConfig{} */;(这一步会将mycat登录本地mysql的登录密码重置为123456,但登录MySQL的密码不是123456,需要改成远程登录的密码)前提,先搭建好MySQL的主从配置,登录MyCAT 2在MyCAT2里面操作,也就是连接8066这个端口。

2401_83981635的博客 887

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用 MyCat 实现 MySQL 主从读写分离

在高并发业务场景中,单台 MySQL 数据库难以同时承载大量读写请求。读写分离通过“主库写、从库读”的分工,结合主从复制保障数据一致性,成为缓解数据库压力的核心方案。MyCat 是开源企业级数据库中间件,定位为“MySQL 集群的统一入口”,通过封装底层数据库拓扑,为应用提供透明的“逻辑库”访问方式,核心能力聚焦于读写分离与分库分表。核心依赖:MyCat 读写分离的前提是 MySQL 主从复制,需确保从库与均为Yes;关键配置:MyCat 的schema.xml中,balance(读负载)、

m0_46589218的博客 1366

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Mysql之中间件Mycat实现读写分离

目录 一、Mycat应用场景 二、Mycat 可以简单概括为 三、Mycat实现mysql读写分离 3.1 环境准备 3.2 初始化环境 3.3主从配置 3.3.1主mysql服务器配置(192.168.59.113) 3.3.2 从mysql服务器配置(192.168.59.112) 3.4安装mycat(192.168.59.114) 3.5 第一次在客户机上测试(192.168.59.118) 3.6 修改 mycat 配置文件 3.6.1修改 /apps/mycat/conf

m0_51160032的博客 2802

深度学习工具包 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")

MySQL 读写分离方案之 基于Mycat 实现MySQL 读写分离

基于Mycat 实现MySQL 读写分离 一、Mycat 简介 1、什么是Mycat 一个彻底开源的,面向企业应用开发的大数据库集群 1.1 Mycat 前世今生 2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,及其使用限制,经过Mycat发起人第一次改良,第一代改良版——Mycat诞生。 Mycat开源以后,一些Cobar的用户参与了Mycat的开发,最终Mycat发展...

csdn_welearn的博客 944
上一篇: 【Mycat】分片规则详解
下一篇: 【@Conditional】@Conditional注解使用方法
ColdFireMan
博客等级 码龄10年 27粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值