linus下安装MyCat
来源:互联网 发布:python怎么往矩阵输入 编辑:程序博客网 时间:2024/05/25 23:29
linus下安装MyCat
1.jdk的安装与下载
1.1.JDK:要求jdk必须是1.7及以上版本
MySQL:推荐mysql是5.5以上版本
1.2.将MySQL的服务端和客户端安装包(RPM)上传到服务器
MySQL-server-5.5.49-1.linux2.6.i386.rpmMySQL-client-5.5.49-1.linux2.6.i386.rpm
1.3.查询之前是否安装过MySQL
rpm -qa|grep -i mysql
1.4.卸载旧版本MySQL
rpm -e --nodeps 软件名称
1.5.(4)安装服务端
rpm -ivh MySQL-server-5.5.49-1.linux2.6.i386.rpm
1.6.安装客户端
rpm -ivh MySQL-client-5.5.49-1.linux2.6.i386.rpm
1.7.启动MySql服务
service mysql start
1.8.登录MySQl
mysql -u root
1.9.设置远程登录权限,用户名,密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
在本地SQLyog 连接远程MySQL进行测试
2.MyCat安装及启动
2.1.下载Mycat-server-xxxx-linux.tar.gz,将Mycat-server-1.4-release-20151019230038-linux.tar.gz上传至服务器
2.2.将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下
tar -xzvf Mycat-server-1.4-release-20151019230038-linux.tar.gzmv mycat /usr/local
2.3.进入mycat目录的bin目录,启动mycat
./mycat start
mycat 支持的命令{ console | start | stop | restart | status | dump }
Mycat的默认端口号为:8066
3.MyCat分片配置
1.配置schema.xml
schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、逻辑表以及对应的分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。
schema 标签用于定义MyCat实例中的逻辑库
Table 标签定义了MyCat中的逻辑表 rule用于指定分片规则,auto-sharding-long的分片规则是按ID值的范围进行分片 1-5000000 为第1片 5000001-10000000 为第2片…. 具体设置我们会在第5小节中讲解。
dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。
在服务器上创建3个数据库,分别是db1 db2 db3
修改schema.xml如下:
<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://org.opencloudb/"><schema name="PINYOUGOUDB" checkSQLschema="false" sqlMaxLimit="100"> <table name="tb_test" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /></schema><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="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.25.142:3306" user="root" password="123456"> </writeHost></dataHost> </mycat:schema>
(2)配置 server.xml
server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。在system中添加UTF-8字符集设置,否则存储中文会出现问号
<property name="charset">utf8</property>
修改user的设置 , 我们这里为 PINYOUGOUDB设置了两个用户
<user name="test"> <property name="password">test</property> <property name="schemas">PINYOUGOUDB</property></user><user name="root"> <property name="password">123456</property> <property name="schemas">PINYOUGOUDB</property></user>
3.2进入mycat ,执行下列语句创建一个表:
CREATE TABLE tb_test ( id BIGINT(20) NOT NULL, title VARCHAR(100) NOT NULL , PRIMARY KEY (id)) ENGINE=INNODB DEFAULT CHARSET=utf8
3.3接下来是插入表数据,注意,在写INSERT语句时一定要写把字段列表写出来,否则会出现下列错误提示:
错误代码: 1064
partition table, insert must provide ColumnList
我们试着插入一些数据:
INSERT INTO TB_TEST(ID,TITLE) VALUES(1,'goods1');INSERT INTO TB_TEST(ID,TITLE) VALUES(2,'goods2');INSERT INTO TB_TEST(ID,TITLE) VALUES(3,'goods3');
我们会发现这些数据被写入到第一个节点中了,那什么时候数据会写到第二个节点中呢?
我们插入下面的数据就可以插入第二个节点了
INSERT INTO TB_TEST(ID,TITLE) VALUES(5000001,'goods5000001');
因为我们采用的分片规则是每节点存储500万条数据,所以当ID大于5000000则会存储到第二个节点上。
目前只设置了两个节点,如果数据大于1000万条,会怎么样呢?执行下列语句测试一下
INSERT INTO TB_TEST(ID,TITLE) VALUES(10000001,'goods10000001');
1.3.5 MyCat分片规则
rule.xml用于定义分片规则 ,我们这里讲解两种最常见的分片规则
(1)按主键范围分片rang-long
在配置文件中我们找到
<tableRule name="auto-sharding-long"> <rule> <columns>id</columns> <algorithm>rang-long</algorithm> </rule></tableRule>
tableRule 是定义具体某个表或某一类表的分片规则名称 columns用于定义分片的列 algorithm代表算法名称 我们接着找rang-long的定义
<function name="rang-long" class="org.opencloudb.route.function.AutoPartitionByLong"> <property name="mapFile">autopartition-long.txt</property></function>
Function用于定义算法 mapFile 用于定义算法需要的数据,我们打开autopartition-long.txt
# range start-end ,data node index# K=1000,M=10000.0-500M=0500M-1000M=11000M-1500M=2
(2)一致性哈希murmur
当我们需要将数据平均分在几个分区中,需要使用一致性hash规则
我们找到function的name为murmur 的定义,将count属性改为3,因为我要将数据分成3片
<function name="murmur" class="org.opencloudb.route.function.PartitionByMurmurHash"> <property name="seed">0</property><!-- 默认是0 --> <property name="count">3</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 --> <property name="virtualBucketTimes">160</property><!-- 一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍 --> <!-- <property name="weightMapFile">weightMapFile</property> 节点的权重,没有指定权重的节点默认是1。以properties文件的格式填写,以从0开始到count-1的整数值也就是节点索引为key,以节点权重值为值。所有权重值必须是正整数,否则以1代替 --> <!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> 用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的murmur hash值与物理节点的映射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西 --></function>
我们再配置文件中可以找到表规则定义
<tableRule name="sharding-by-murmur"> <rule> <columns>id</columns> <algorithm>murmur</algorithm> </rule></tableRule>
但是这个规则指定的列是id ,如果我们的表主键不是id ,而是order_id ,那么我们应该重新定义一个tableRule:
<tableRule name="sharding-by-murmur-order"> <rule> <columns>order_id</columns> <algorithm>murmur</algorithm> </rule></tableRule>
在schema.xml中配置逻辑表时,指定规则为sharding-by-murmur-order
<table name="tb_order" dataNode="dn1,dn2,dn3" rule="sharding-by-murmur-order" />
我们测试一下,创建品优购的订单表 ,并插入数据,测试分片效果。
- linus下安装MyCat
- linus下安装MyCat
- 【Linus】CentOS下安装mplayer
- Linus下安装 Sublime Text3
- ubuntu下安装mycat
- Linux下MyCat安装
- centos7下安装mycat
- windows下安装配置mycat
- Linux环境下MyCAT安装
- linux下mycat安装使用
- Linus下安装Tomcat和导入项目
- mycat初步试水(windows下Mycat安装配置)
- 【mycat】mycat在windows环境下的安装和启动
- Mycat系列—Linux下Mycat的安装配置
- Mycat系列—Linux下Mycat-Web(Mycat-eye)的安装
- Linux下Mycat安装配置和使用
- mycat在windows平台下的安装
- Mycat安装
- Mac 命令行
- 第十三周 【项目3
- 装饰器
- Java集合框架之TreeMap的排序
- 【Qt Creator】下载链接
- linus下安装MyCat
- Pytorch
- HDU 1305 Immediate Decodability
- poj日记(1003)
- linux centos下三种配置java环境变量的方法
- Java高级之虚拟机加载机制
- 【转载】CentOS 7 安装 mysql + mysql 常用命令 + docker 运行 mysql
- Python __init__.py 作用详解
- 安卓样式与主题