配色: 字号:
myCat学习过程
2016-10-18 | 阅:  转:  |  分享 
  
背景随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上。这时集中式数据库系统表现
出它的不足:(1)集中式处理,势必造成性能瓶颈;(2)应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可
靠性不高;(3)集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数据库将向分布式数据库发展。快速上
手(分库分表)linux下Mycat下载安装:Windows下下载方式:(建议使用,下载好后传到服务器)https://githu
b.com/MyCATApache/Mycat-download/tree/master/1.4-RELEASEhttps://g
ithub.com/MyCATApache/Mycat-download/tree/master/1.4-RELEASE将linu
x的包放入服务器中:Linux下下载方式:mycat的官网网址??http://www.mycat.org.cn/,使用是myca
t的1.4的Linux安装包下载地址https://github.com/MyCATApache/Mycat-download/b
lob/master/1.4-RELEASE/Mycat-server-1.4-release-20151019230038-li
nux.tar.gz下载mycat的安装包到?/usr/local/MyCat?目录下下载文件命令:wget?https://gi
thub.com/MyCATApache/Mycat-download/blob/master/1.4-RELEASE/Mycat
-server-1.4-release-20151019230038-linux.tar.gzhttps://github.com
/MyCATApache/Mycat-download/blob/master/1.4-RELEASE/Mycat-server-
1.4-release-20151019230038-linux.tar.gz解压文件使用tar-zxvfMycat-ser
ver-1.4-release-20151019230038-linux.tar.gz解压报错解压文件报错原因:1)解压的文件没
有使用gzip格式进行压缩2)下载的文件不完整。我的解压文件报错的原因是下载的压缩文件不完整,估计是网络问题!将文件挪位置mvm
ycat/usr/local(将mycat文件夹移到/usr/local下)pwd(查看当前路径)linux下jdk的卸载安
装测试是否安装jdkJava–version卸载linux自带的jdk卸载默认的:用root用户登陆到系统,打开一个终端输入#
rpm-qa|grepgcj显示内容其中包含下面两行信息#java-1.4.2-gcj-compat-1.4.2.0-27j
pp#java-1.4.2-gcj-compat-devel-l.4.2.0-27jpp卸载#rpm-ejava-1.4.
2-gcj-compat-devel-l.4.2.0-27jpp#rpm-ejava-1.4.2-gcj-compat-l.
4.2.0-27jpp卸载其他自己安装的JDK就直接用rpm-e卸载rpm版的jdk:#rpm-qa
|grepjdk显示:jdk-1.6.0_10-fcs卸载:#rpm-e?--nodeps?jdk-1.6.0_10-
fcs安装jdk下载jdk-7u45-linux-x64.tar.gz包将其放入服务端:将其解压tar?–zxvfjdk-7
u45-linux-x64.tar.gz配置环境变量vi/etc/profile在其文件后添加JAVA_HOME=/usr/l
ocal/jdk1.7.0_45CLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HO
ME/bin:$PATHexportJAVA_HOMECLASSPATHPATH保存退出命令你先按esc键,再输入:最后
输入wq回车就可以了强制退出不保存命令你先按esc键,再输入:最后输入q!回车就可以了修改生效命令source/etc/
profile查看其安装包位置命令echo$JAVA_HOMElinux下配置java环境变量:(是基于java环境操作的)检查
是否已经配置好了java的环境变量Java–version(详细的配置,看jdk的卸载安装)linux下添加MYCAT_HOM
E环境变量vi/etc/profile在其文件后添加MYCAT_HOME=/usr/local/mycatPATH=$MY
CAT_HOME/bin使环境变量生效:命令source/etc/profile或者修改环境变量命令:vim/home/m
ycat/.bash_profileexportMYCAT_HOME=/usr/local/mycatPATH=$PATH:$M
YCAT_HOME/bin修改立即生效:source.bash_profile测试是否配置成功echo$MYCAT_HOMEl
inux下修改mycat配置文件(链接mysql)配置文件前先用命令行工具或图形化客户端,连接MYSQL,创建DEMO所用三个分片
数据库;查看下文的标题为mysql客户端链接服务器备份文件cp-rserver.xmlserver.xml.bakcp-r
schema.xmlschema.xml.bak修改wrapper.conf文件配置jdk路径my.cnf追加一行vim/e
tc/my.cnflower_case_table_names=1如果找不到my.cnf文件,copy一个:cp/usr/
share/mysql/my-default.cnf/etc/my.cnfmysql忽略大小写!好像没起作用:RENAMETA
BLEdb1.EMPLOYEETOdb1.employee;忽略大小写RENAMETABLEdb2.EMPLOYEE
TOdb2.employee;或者:在创建表的时候,就将mysql中的表名,大写改成小写修改server.xml修改的用户名,密
码,数据库zhangxinty>TESTDBTESTDB与schema
.xml的TESTDB数据库名称一致修改schema.xmlt:schemaSYSTEM"schema.dtd">g.opencloudb/">xLimit="100">elrecord"dataNode="dn1,dn2,dn3"rule="auto-sharding-long"ruleRe
quired="false"/>e="auto-sharding-long"ruleRequired="false"/>ompany"primaryKey="ID"dataNode="dn1,dn2,dn3"rule="mod-long"/><
tablename="goods"primaryKey="ID"type="global"dataNode="dn1,dn
2"/>hotnews"primaryKey="ID"dataNode="dn1,dn2,dn3"rule="mod-long"/>
ryKey="ID"dataNode="dn1,dn2"rule="sharding-by-intfile">blename="childtest"primaryKey="ID"joinKey="parent_id"parentKe
y="id"/>
="dn1,dn2"rule="sharding-by-intfile">imaryKey="ID"joinKey="customer_id"parentKey="id">e="order_items"joinKey="order_id"parentKey="id"/><
childTablename="customer_addr"primaryKey="ID"joinKey="customer
_id"parentKey="id"/>
st="192.168.37.9"database="db1"/>"192.168.37.9"database="db2"/>2.168.37.9"database="db3"/>="1000"minCon="10"balance="0"writeType="0"dbType="mysql"dbDri
ver="native">selectuser()6"user="root"password="zhangxin">schema>启动mycatmycatstart启动mycatmycatstatus查看mycat状态lsof-i:90
66查看端口号(修改server.xml(只做库的读写分离))这里配置了两个可以来连接的用户用户1??test密码test给予了
此用户TESTDB数据库的权限用户2??user密码user给予了此用户TESTDB数据库的只读权限注意这里的testdb?不一定
是你数据库上的真实库名.可以任意指定.只要和接下来的schema.xml的配置文件中的库名统一即可(修改schema.xml(只做
库的读写分离))因为我们现在只做库的读写分离,没用分库?没用分表这些东西,所有修改为at="http://org.opencloudb/">"false"sqlMaxLimit="100"dataNode="dn1">"dn1"dataHost="localhost1"database="db1"/>lhost1"maxCon="1000"minCon="10"balance="0"writeType="0"dbTyp
e="mysql"dbDriver="native"switchType="1"slaveThreshold="100">
selectuser()"192.168.1.100:3306"user="root"password="123456">="hostS1"url="192.168.1.101:3306"user="root"password="123456"
/>配置文件解释一,??schema="false"?sqlMaxLimit="100"?dataNode="dn1">这里TESTDB?就是我们对外声称
的我们有数据库的名称??必须和server.xml中的用户指定的数据库名称一致,添加一个dataNode="dn1"?是指定了我们
这个库只在dn1上.没有进行分库二,?abase="db1"?/>这里只需要改database的名字?db1?就是你真实数据库服务上的数据库名?.根据你自己的数据库名进
行修改.三e="0"?writeType="0"?dbType="mysql"?dbDriver="native"?switchType="
1"??slaveThreshold="100">这里只需要配置三个地方??balance="1"与writeType="0"?,
switchType=”1”balance?属性负载均衡类型,目前的取值有?4?种:1.?balance="0",?不开启读写分离
机制,所有读操作都发送到当前可用的?writeHost?上。2.?balance="1",全部的?readHost?与?stand
?by?writeHost?参与?select?语句的负载均衡,简单的说,当双主双从模式(M1?->S1?,?M2->S2,并且?
M1?与?M2?互为主备),正常情况下,?M2,S1,S2?都参与?select?语句的负载均衡。3.?balance="2",所
有读操作都随机的在?writeHost、?readhost?上分发。4.?balance="3",?所有读请求随机的分发到?wir
iterHost?对应的?readhost?执行,writerHost?不负担读压力,注意?balance=3?只在?1.4?及其
以后版本有,?1.3?没有。writeType?属性负载均衡类型,目前的取值有?3?种:1.?writeType="0",?所有写
操作发送到配置的第一个?writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配
置文件中:dnindex.properties?.2.?writeType="1",所有写操作都随机的发送到配置的?writeHo
st。3.?writeType="2",没实现。switchType?属性-?-1?表示不自动切换-?1?默认值,自动切换-?2?
基于MySQL?主从同步的状态决定是否切换四,0:3306"?user="root"?password="123456">="192.168.1.101:3306"?user="root"?password="123456"?/>>这里是配置的我们的两台读写服务器IP地址访问端口和?访问用户的用户名和密码注意:这里配置的连接的两个库,一定要先在mycat的这
台服务器上使用命令登陆这两个数据库保证没有问题后再配置.linux下启动mycatcd/usr/local/mycat/bin.
/mycatstartlinux下查看数据库的安装路径whereismysql显示文件的安装地址whichmysql查
询文件的运行文件的所在路径链接mysql数据库mysql-h127.0.0.1-uroot-p123456-P8066
–Ddbtest进入数据库mysql的url:127.0.0.1url:127.0.0.1用户名:root密码:123456
mycat的端口号:8066(默认端口号)数据库:dbtest报错原因:mycat没有起来能链接到mysql说明通信没有问题此
处mycat已经启动,状态正常,端口也正常,链接mysql也正常了查看数据库心跳Show@@datanode;查看表添加数据s
howdatabases;insertintodbtest.tb2(id,val)values(1000,"par
t1");切换表空间创建表做分库分表测试:mysql客户端链接服务器:链接的是3306的mysql数据库用命令行工具或图形化客户端
,连接MYSQL,创建DEMO所用三个分片数据库;?CREATEdatabasedb1;?CREATEdatabasedb
2;?CREATEdatabasedb3;创建TESTDB数据库:是在mycat的schema.xml配置文件中配置的,在my
cat上不需要创建,reload后自动创建。创建分片表需要先在配置文件中配置后在TESTDB中创建。在TESTDB下创建表:cre
atetableemployee(idintnotnullprimarykey,namevarchar(100)
,sharding_idintnotnull);分片表的创建过程explaincreatetableemployee
(idintnotnullprimarykey,namevarchar(100),sharding_idintno
tnull);测试添加数据(只是测试用,并不实际插入数据)explaininsertintoemployee(id,na
me,sharding_id)values(1,''leaderus'',10000);explaininsertintoe
mployee(id,name,sharding_id)values(2,''us'',10010);分页语句selectfr
omcustomerlimit0,1;退出mysqlexit重启mysqlservicemysqldstart查看状态p
saux|grepmysqldlinux下修改mycat配置文件(链接oracle)修改server.xlm文件修改sche
ma.xlm文件a.dtd">aname="TESTDB"checkSQLschema="false"sqlMaxLimit="100">name="area"primaryKey="ID"type="global"dataNode="XE,orcl"/>ablename="otp"primaryKey="ID"dataNode="XE1,orcl1"/>
taNodename="orcl1"dataHost="10.16.123.233"database="orcl"/>ataHostname="10.16.122.46"maxCon="1000"minCon="10"balance="0"
writeType="0"dbType="oracle"dbDriver="JDBC"switchType="1"sla
veThreshold="100">select1fromdualteHosthost="10.16.122.46"url="jdbc:oracle:thin:@10.16.122.46:15
21:XE"user="iaf_test_zx"password="iaf_test_zx">dataHost>"balance="0"writeType="0"dbType="oracle"dbDriver="JDBC"switch
Type="1"slaveThreshold="100">select1fromdualeartbeat>0.16.123.233:1521:orcl"user="iaf_test_zx"password="iaf_test_zx"
>添加驱动jar包将java中使用的驱动jar
包放入mycat的lib下windows下Mycat+mysql安装配置下载Windows的安装包https://github.c
om/MyCATApache/Mycat-download/tree/master/1.4-RELEASEhttps://gith
ub.com/MyCATApache/Mycat-download/tree/master/1.4-RELEASE下的配置环境变量
修改配置文件wrapper.confServer.xml?>rver.dtd">tem>druidparser>zhangxinTESTDBser>123456
TESTDBy">trueSchema.xmlat:schemaSYSTEM"schema.dtd">rg.opencloudb/">axLimit="100">velrecord"dataNode="dn1,dn2,dn3"rule="auto-sharding-long"ruleR
equired="false"/>le="auto-sharding-long"ruleRequired="false"/>company"primaryKey="ID"dataNode="dn1,dn2,dn3"rule="mod-long"/>
n2"/>"hotnews"primaryKey="ID"dataNode="dn1,dn2,dn3"rule="mod-long"/
>aryKey="ID"dataNode="dn1,dn2"rule="sharding-by-intfile">ablename="childtest"primaryKey="ID"joinKey="parent_id"parentK
ey="id"/>
e="dn1,dn2"rule="sharding-by-intfile">rimaryKey="ID"joinKey="customer_id"parentKey="id">me="order_items"joinKey="order_id"parentKey="id"/>
r_id"parentKey="id"/>
ost="192.168.37.9"database="db1"/>="192.168.37.9"database="db2"/>92.168.37.9"database="db3"/>n="1000"minCon="10"balance="0"writeType="0"dbType="mysql"dbDr
iver="native">selectuser()06"user="root"password="zhangxin">:schema>启动mycat进入到mycat的bin目录下:startup_nowrap.bat报错原因:JVM需要的堆内存你无
法提供解决方案:修改startup_nowrap.bat程序起来了启动报错:原因:路径错误!dir看看是在mycat的安装目
录中么查看端口号:netstat-aon|findstr"8066"(8066mycat默认端口)装载成服务启动:(暂时不
使用)mycat.batinstallmycatstart启动mysql客户端:查看employee表信息:Linux下:连
接mysql数据库:mysql-uroot-pzhangxin-h127.0.0.1showdatabases;查看表数据
:Mysql客户端添加一条数据:insertintoemployee(id,name,sharding_id,parent_i
d)values(5,''leaderus'',10000,5);Linux下查看分库分表情况:Windows下mycat+ora
cle配置修改schema.xml(XE跟orcl是数据库)at:schemaSYSTEM"schema.dtd">rg.opencloudb/">axLimit="100">velrecord"dataNode="dn1,dn2"rule="auto-sharding-long"ruleRequi
red="false"/>-sharding-long"ruleRequired="false"/>primaryKey="ID"dataNode="dn1,dn2"rule="mod-long"/>"goods"primaryKey="ID"type="global"dataNode="dn1,dn2"/>imaryKey="ID"dataNode="dn1,dn2"rule="mod-long"/>Node="dn1,dn2"rule="sharding-by-intfile">test"primaryKey="ID"joinKey="parent_id"parentKey="id"/>e>"sharding-by-intfile">
select1fromdualselect1fromdual连接mycat,操作数据:创建表createtablecustomer(idintnotnullprimarykey,namevarchar(100),sharding_idintnotnull);操作数据:如上Java代码链接数据库
献花(0)
+1
(本文系樱梦雪苹宝首藏)