入门篇

  1. 1.       安装

1.1从https://github.com/MyCATApache/Mycat-download下载压缩包

1.2解压缩后复制到相应目录下面,比如/usr/local/mycat

1.3mycat目录下面分别是bin conf lib logs。

bin目录里是启动脚本

conf目录里是配置文件

lib目录里是Mycat和它的依赖jar

logs目录里是console.log用来保存控制台日志,和mycat.log用来保存mycat的log4j日志

2.       配置环境变量

指定指定MYCAT_HOME,比如按照前文所述,可以把MYCAT_HOME配置为:export MYCAT_HOME=/usr/local/mycat

3.       启动

Mycat有两种启动方式,第一种是运行$MYCAT_HOME/bin/mycat脚本执行wrap模式的启动;第二种是运行$MYCAT_HOME/bin/startup_nowrap.sh执行nowrap模式的启动

4.       Mycat类加载目录与JVM参数

以nowrap模式为例,mycat会加载$MYCAT_HOME/lib/classes和$MYCAT_HOME/lib目录下的所有jar。

如果要修改jvm启动参数,可以修改$MYCAT_HOME/bin/startup_mycat.sh里的JAVA_OPTS变量

5.       配置文件

重点介绍rule.xml schema.xml router.xml server.xml log4j.xml

5.1   rule.xml

分片规则配置文件,mycat支持的所有分片规则都在这个文件里。定义一个规则需要两个节点,一个是tableRule,一个是function。

以一致性哈希分片为例,function节点定义了分片规则的实现类与初始化参数和分片规则的算法名称。

属性name为规则算法名称

class为规则实现类

property子节点为初始化规则的参数,使用seed count virtualBucketTimes就可初始化一致性哈希规则

<function name="murmur" class="org.opencloudb.route.function.PartitionByMurmurHash">

<property name="seed">0</property><!-- 默认是0-->

<property name="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片-->

<property name="virtualBucketTimes">160</property><!-- 一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍-->

</function>

tableRule节点定义了分片规则名(注意此处是规则名,前面的function节点的name属性是算法名)rule子节点指定用来分片的数据库表字段和分片算法名,也就是前面的function节点的name属性。

<tableRule name="sharding-by-murmur">

<rule>

<columns>id</columns>

<algorithm>murmur</algorithm>

</rule>

</tableRule>

任何自定义的分片规则也可以这样配置

5.2   server.xml

此文件用来配置mycat全局参数

<system>节点

<property name="defaultSqlParser">druidparser</property>,指定SQL解析器,默认是fdbparser,经测试druidparser效率更高

<property name="sequnceHandlerType">1</property>,指定mycat自动序列号生成方式。0:在借助本地文件生成序列号,1:借助数据库生成序列号,更多信息请参考Mycat in action

<property name="serverPort">8066</property>指定mycat服务端口号,mycat通过这个端口接收数据库客户端的访问请求。

另外还有一个9066端口没有出现在配置文件中,用来接收mycat监控命令、查询mycat运行状况、重新加载配置文件等。更多信息请参考Mycat in action。

<user>节点

name属性指定mycat用户名

<property name=”password”>password</property><!—用户密码-->

<property name=”schema”>database_name</property><!—数据库名,用客户端建立连接后要操作的数据库名 -->

<property name=”readOnly”>false</property><!—指定是不是只读库-->

可以有多个user节点。

5.3   router.xml

<queryRouter schema=”schema”><!—没太搞清楚这个文件的意义,我把schema属性、<name>、<queryNode>都配置成了一样的,而且都与要连接的数据库名保持一致 -->

<!—schema的值会在schema.xml用到 -->

<dataNode>

<name>dataNodeName</name>

<queryNode>queryNode</queryNode>

</dataNode>

</queryRouter>

5.4   schema.xml

<schema name=”schema”><!—就是router.xml命名的schema-->

<table name=”table_name” <!—要与它代理的数据库物理表名一致-->

primaryKey=”pk” <!—被用作主键的字段名-->

dataNode=”dataNodeName” <!—下面将会出现的dataNode节点-->

rule=”sharding-by-murmur”<!—rule.xml的tableRule节点name属性值,指定这个节点表示用这个规则执行分片-->

authIncrement=”true”><!—插入数据时是否由mycat自动生成分片,指定true时,如果insert sql内没有指定主键的值,而主键又是自增长的,mycat会自动插入生成主键的代码,并在生成主键时按照指定的分片规则将数据保存到数据库-->

<!—mycat有自己的自增序列命令,更多信息请参考Mycat in action-->

<!—此处可以指定多个table子节点,一个table节点表示一张表-->

</schema>

<dataNode name=”dataNodeName” dataHost=”localhost“ database=”database”/>

<!—分别是节点名,就是schema节点里的table子节点dataNode属性

dataHost是节点主机名,在下面要出现的dataHost定义

database数据库名

-->

<dataHost name=”localhost” maxCon=”1000” minCon=”10” balance=”0”

wrteType=”0” dbType=”mysql” dbDriver=”native>

<!—name属性是dataHost名

maxCon minCon分别是连接到物理数据库的最大最小连接数

dbType指定数据库类型

dbDriver只有两个取值,分别是native和jdbc。native为mycat自带驱动,只支持mysql,jdbc为使用jdbc实现连接数据库,指定什么数据库的jdbc驱动就可以访问什么数据库,更灵活,但效率不如native

可以有多个dataHost节点

-->

<heartbeat>select 1</heartbeat><!—保持连接不断的心跳sql-->

<writeHost host=”hostM1” url=”localhost:3306” user=”user” password=”password”>

<reeadHost host=”hostS1” url="localhost:3306" user="root" password="123456"/>

</writeHost>

<!—可以有多个writeHost,一个writeHost里要吧有多个readHost-->

</dataHost>

现在所有配置已经完成可以执行bin目录下的启动脚本完成启动了。然后就可以像使用真正的数据库一样访问mycat。如果运行时修改了配置文件,可以用在命令行用mysql命令登录9066端口,执行show @@help得到相关命令,其中有重新加载全部配置文件的命令,可以运行时重新加载配置

6.       二次开发

6.1   开发新的分片规则

建一个新的类,继承AbstractPartitionAlgorithm实现RuleAlgorithm。重写public void init()和public Integer calculate(String columnValue)。

init根据rule.xml指定的分片初始化参数初始化分片规则,calculate(String)接收分片字段的字符串形式计算记录应该保存的节点。

7.       升级注意事项

7.1   从1.2.*到1.3.*的变化

7.1.1 server.xml 的<property name="processors">32</property>,通常设置为CPU核数的2倍,比如CPU核数是16,此处就设置为32;<property name="processorExecutor">32</property>,默认不用设置了,在1.3.*已经没有重要影响

7.1.2 对分片规则的类名改了一些拼写错误,注意升级rule.xml。也可以自己修改,变化在地原来的Partion改为Partition。

MyCat入门指南的更多相关文章

  1. Web API 入门指南 - 闲话安全

    Web API入门指南有些朋友回复问了些安全方面的问题,安全方面可以写的东西实在太多了,这里尽量围绕着Web API的安全性来展开,介绍一些安全的基本概念,常见安全隐患.相关的防御技巧以及Web AP ...

  2. Vue.js 入门指南之“前传”(含sublime text 3 配置)

    题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...

  3. yii2实战教程之新手入门指南-简单博客管理系统

    作者:白狼 出处:http://www.manks.top/document/easy_blog_manage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文 ...

  4. 【翻译】Fluent NHibernate介绍和入门指南

    英文原文地址:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started 翻译原文地址:http://www.cnblogs ...

  5. ASP.NET MVC 5 入门指南汇总

    经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解 ...

  6. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

  7. 一起学微软Power BI系列-官方文档-入门指南(2)获取源数据

    我们在文章: 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍中,我们介绍了官方入门文档的第一章.今天继续给大家介绍官方文档中,如何获取数据源的相关内容.虽然是英文,但 ...

  8. 一起学微软Power BI系列-官方文档-入门指南(3)Power BI建模

    我们前2篇文章:一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍 和一起学微软Power BI系列-官方文档-入门指南(2)获取源数据 中,我们介绍了官方入门文档与获取 ...

  9. 一起学微软Power BI系列-官方文档-入门指南(4)Power BI的可视化

    在前面的系列文章中,我们介绍了官方有关获取数据,以及建模的原始文档和基本介绍.今天继续给大家介绍官方文档中,有关可视化的内容.实际上获获取数据和建模更注重业务关系的处理,而可视化则关注对数据的解读.这 ...

随机推荐

  1. find()函数

    find()函数返回类型:size_type 1/S.find(T):返回T在S中第一次匹配的下标位置 2/S.find_first_of(T):返回字符串T第一个字符在S中第一次出现的下标位置 3/ ...

  2. 走近AbstractQueuedSynchronizer

    走近AbstractQueuedSynchronizer 一.从类结构开始 Java并发包中的同步器是很多并发组件的基础,如各种Lock,ConcurrentHashMap中的Segment,阻塞队列 ...

  3. Oracle中用触发器实现自动记录表数据被修改的历史信息

    oracle中用触发器实现自动记录表数据被修改的历史信息. 有一些比较重要的表字段每次修改需要做历史记录,以后可以查询这个表中某些字段如何被修改过.由什么改成了什么等,由谁操作,操作时间等. 实例:1 ...

  4. java并发再次积累

    监视器与锁之间的关系: 1.object monitor 是任何一个对象都有的内置的数据结构,它是用来协调使用当前对象的多个线程之间的执行顺序的(wait/notify),线程会block或者wait ...

  5. DbEntry 4.2 建立关系时的一些问题

    创建关系提示输入字符串的格式不正确 使用HasMany Attribute时,需要将属性访问器的set部分修改为private,否则会提示输入字符串的格式不正确 [HasMany(OrderBy = ...

  6. ES6、7、8常用新特性总结(超实用)

    ES6常用新特性 1. let && const let 命令也用于变量声明,但是作用域为局部 { let a = 10; var b = 1; } 在函数外部可以获取到b,获取不到a ...

  7. PHP+MySQL数据库编程的步骤

    第一步:PHP连接MySQL服务器 第二步:选择当前要操作的数据库 第三步:设置请求或返回的数据的字符集 第四步:执行各种SQL语句. PHP连接MySQL服务器 1.mysql_connect() ...

  8. golang中文字符编码转换

    golang 有很多需要将中文转成utf8的 网上搜到一个直接转的,记录下,备用 package main import "golang.org/x/text/encoding/simpli ...

  9. [Linux 001]——计算机和操作系统的基础知识

    在正式开始学习 Linux 操作系统之前,有必要先回顾/学习一下计算机和操作系统的基本知识,为我们在后续的学习中铺路搭桥,在了解计算机一些基础原理的条件下再去进行学习,理解应该会更透彻一些.我会从一个 ...

  10. 快用Visual Studio(四)- 主题 偏好与快捷键

    使用$ CMD + ,打开快捷键设置窗口 使用$ CMD + SHIFT + ,切换默认配置 使用$ CMD + SHIFT + O打开搜索框搜索已配置选项 关于代码偏好设置有三种模式: 默认模式:C ...