- 2-1 章节综述
- 2-2 什么是MyCat
- 2-3 什么是数据库中间层
- 2-4 MyCat的主要作用
- 2-5 MyCat基本元素
- 2-6 MyCat的安装
2-1 章节综述
1、掌握Mycat的基础概念、功能及适用场景;
2、掌握Mycat的安装和启动;
2-2 什么是MyCat
1、不同的工种对Mycat的不同理解;
- 研发人员;
- 架构师;
2、实现“读写分离”的两种方式;
- 从程序的角度实现,配置两套数据源;
- 通过中间件的角度实现,比如Mycat;
2-3 什么是数据库中间层
1、数据库中间层初识;
2-4 MyCat的主要作用
1、作为分布式数据库中间层使用(关系型与菲关系型均可);
2、实现后端数据库的读写分离及负载均衡;
3、在数据库中,一般读请求操作远高于写请求操作;
4、改下图所示的,仅适用于“一主一从”的MySQL数据库架构;
5、实现“一主多从”的MySQL高可用,需要通过MHA或者3M的方式实现;
6、对业务数据库进行垂直切分;
7、使用Mycat的好处,将后端对应的真实数据库,作为一个“逻辑库”;
8、对业务数据库进行水平切分(分库分表);
9、切分逻辑,通过Mycat;
10、控制数据库连接的数量;
- 当连接数占满后,所有新请求将无法再连接,影响业务;
- 通过Mycat中间件,建立一个公共的“数据库连接池”;
2-5 MyCat基本元素
1、逻辑库&逻辑表概念回顾;
2、逻辑表的分类;
- 分片表
- 全局表
- ER关系表
2-6 MyCat的安装
1、下载并解压Mycat;
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
2、安装JAVA运行环境JDK1.7或之上版本;
3、新建Mycat运行系统账号;
useradd mycat
chown -R mycat:mycat /usr/local/mycat
4、配置系统环境变量;
vim /etc/profile#修改系统环境变量;
export MyCAT_HOME=/usr/local/mycat
export JAVA_HOME=/usr/local/jdk1.7.0_80
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$MyCAT_HOME/bin:$JAVA_HOME/bin:$PATH
source /etc/profile
5、修改mycat启动参数;
vim /usr/local/mycat/conf/wrapper.conf#调整mycat内存大小;
日志:
[BEGIN] 2018/6/2 17:55:10 [root@iZqmo9i3j77p7eZ ~]# cd /usr/local/src/ [root@iZqmo9i3j77p7eZ src]# wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz --2018-06-02 17:55:20-- http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz Resolving dl.mycat.io (dl.mycat.io)... 210.51.26.184 Connecting to dl.mycat.io (dl.mycat.io)|210.51.26.184|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 17480035 (17M) [application/octet-stream] Saving to: ‘Mycat-server-1.6.5-release-20180122220033-linux.tar.gz’ 100%[====================================================================================================================================================================================================================================>] 17,480,035 507KB/s in 34s 2018-06-02 17:55:55 (502 KB/s) - ‘Mycat-server-1.6.5-release-20180122220033-linux.tar.gz’ saved [17480035/17480035] [root@iZqmo9i3j77p7eZ src]# wget http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz?AuthParam=1527933488_83c1bdc9836fadfe600eceed8afc9a1c --2018-06-02 17:56:35-- http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz?AuthParam=1527933488_83c1bdc9836fadfe600eceed8afc9a1c Resolving download.oracle.com (download.oracle.com)... 23.218.25.93 Connecting to download.oracle.com (download.oracle.com)|23.218.25.93|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 153530841 (146M) [application/x-gzip] Saving to: ‘jdk-7u80-linux-x64.tar.gz?AuthParam=1527933488_83c1bdc9836fadfe600eceed8afc9a1c’ 100%[====================================================================================================================================================================================================================================>] 153,530,841 5.96MB/s in 24s 2018-06-02 17:57:00 (6.08 MB/s) - ‘jdk-7u80-linux-x64.tar.gz?AuthParam=1527933488_83c1bdc9836fadfe600eceed8afc9a1c’ saved [153530841/153530841] [root@iZqmo9i3j77p7eZ src]# rpm -qa|grep java [root@iZqmo9i3j77p7eZ src]# ll total 167008 -rw-r--r-- 1 root root 153530841 Jul 8 2015 jdk-7u80-linux-x64.tar.gz?AuthParam=1527933488_83c1bdc9836fadfe600eceed8afc9a1c -rw-r--r-- 1 root root 17480035 Jan 22 22:07 Mycat-server-1.6.5-release-20180122220033-linux.tar.gz [root@iZqmo9i3j77p7eZ src]# mv jdk-7u80-linux-x64.tar.gz?AuthParam=1527933488_83c1bdc9836fadfe600eceed8afc9a1c jdk-7u80-linux-x64.tar.gz [root@iZqmo9i3j77p7eZ src]# tar zxf jdk-7u80-linux-x64.tar.gz -C /usr/local/ [root@iZqmo9i3j77p7eZ src]# vim /etc/profile [root@iZqmo9i3j77p7eZ src]# source /etc/profile [root@iZqmo9i3j77p7eZ src]# java Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file) where options include: -d32 use a 32-bit data model if available -d64 use a 64-bit data model if available -server to select the "server" VM The default VM is server. -cp <class search path of directories and zip/jar files> -classpath <class search path of directories and zip/jar files> A : separated list of directories, JAR archives, and ZIP archives to search for class files. -D<name>=<value> set a system property -verbose:[class|gc|jni] enable verbose output -version print product version and exit -version:<value> require the specified version to run -showversion print product version and continue -jre-restrict-search | -no-jre-restrict-search include/exclude user private JREs in the version search -? -help print this help message -X print help on non-standard options -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] enable assertions with specified granularity -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] disable assertions with specified granularity -esa | -enablesystemassertions enable system assertions -dsa | -disablesystemassertions disable system assertions -agentlib:<libname>[=<options>] load native agent library <libname>, e.g. -agentlib:hprof see also, -agentlib:jdwp=help and -agentlib:hprof=help -agentpath:<pathname>[=<options>] load native agent library by full pathname -javaagent:<jarpath>[=<options>] load Java programming language agent, see java.lang.instrument -splash:<imagepath> show splash screen with specified image See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details. [root@iZqmo9i3j77p7eZ src]# javac Usage: javac <options> <source files> where possible options include: -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,source} Generate only some debugging info -nowarn Generate no warnings -verbose Output messages about what the compiler is doing -deprecation Output source locations where deprecated APIs are used -classpath <path> Specify where to find user class files and annotation processors -cp <path> Specify where to find user class files and annotation processors -sourcepath <path> Specify where to find input source files -bootclasspath <path> Override location of bootstrap class files -extdirs <dirs> Override location of installed extensions -endorseddirs <dirs> Override location of endorsed standards path -proc:{none,only} Control whether annotation processing and/or compilation is done. -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process -processorpath <path> Specify where to find annotation processors -d <directory> Specify where to place generated class files -s <directory> Specify where to place generated source files -implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files -encoding <encoding> Specify character encoding used by source files -source <release> Provide source compatibility with specified release -target <release> Generate class files for specific VM version -version Version information -help Print a synopsis of standard options -Akey[=value] Options to pass to annotation processors -X Print a synopsis of nonstandard options -J<flag> Pass <flag> directly to the runtime system -Werror Terminate compilation if warnings occur @<filename> Read options and filenames from file [root@iZqmo9i3j77p7eZ src]# java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) [root@iZqmo9i3j77p7eZ src]# ll total 167008 -rw-r--r-- 1 root root 153530841 Jul 8 2015 jdk-7u80-linux-x64.tar.gz -rw-r--r-- 1 root root 17480035 Jan 22 22:07 Mycat-server-1.6.5-release-20180122220033-linux.tar.gz [root@iZqmo9i3j77p7eZ src]# tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/ [root@iZqmo9i3j77p7eZ src]# cd /usr/local/ [root@iZqmo9i3j77p7eZ local]# ls aegis bin etc games include jdk1.7.0_80 lib lib64 libexec mycat sbin share src [root@iZqmo9i3j77p7eZ local]# ll total 52 drwxr-xr-x 6 root root 4096 May 30 10:25 aegis drwxr-xr-x. 2 root root 4096 Nov 5 2016 bin drwxr-xr-x. 2 root root 4096 Nov 5 2016 etc drwxr-xr-x. 2 root root 4096 Nov 5 2016 games drwxr-xr-x. 2 root root 4096 Nov 5 2016 include drwxr-xr-x 8 10 143 4096 Apr 11 2015 jdk1.7.0_80 drwxr-xr-x. 2 root root 4096 Nov 5 2016 lib drwxr-xr-x. 2 root root 4096 Nov 5 2016 lib64 drwxr-xr-x. 2 root root 4096 Nov 5 2016 libexec drwxr-xr-x 7 root root 4096 Jun 2 17:58 mycat drwxr-xr-x. 2 root root 4096 Nov 5 2016 sbin drwxr-xr-x. 6 root root 4096 May 26 11:18 share drwxr-xr-x. 2 root root 4096 Jun 2 17:57 src [root@iZqmo9i3j77p7eZ local]# useradd mycat [root@iZqmo9i3j77p7eZ local]# ll total 52 drwxr-xr-x 6 root root 4096 May 30 10:25 aegis drwxr-xr-x. 2 root root 4096 Nov 5 2016 bin drwxr-xr-x. 2 root root 4096 Nov 5 2016 etc drwxr-xr-x. 2 root root 4096 Nov 5 2016 games drwxr-xr-x. 2 root root 4096 Nov 5 2016 include drwxr-xr-x 8 10 143 4096 Apr 11 2015 jdk1.7.0_80 drwxr-xr-x. 2 root root 4096 Nov 5 2016 lib drwxr-xr-x. 2 root root 4096 Nov 5 2016 lib64 drwxr-xr-x. 2 root root 4096 Nov 5 2016 libexec drwxr-xr-x 7 root root 4096 Jun 2 17:58 mycat drwxr-xr-x. 2 root root 4096 Nov 5 2016 sbin drwxr-xr-x. 6 root root 4096 May 26 11:18 share drwxr-xr-x. 2 root root 4096 Jun 2 17:57 src [root@iZqmo9i3j77p7eZ local]# chown -R mycat:mycat mycat/ [root@iZqmo9i3j77p7eZ local]# cd mycat/ [root@iZqmo9i3j77p7eZ mycat]# ls -l total 24 drwxr-xr-x 2 mycat mycat 4096 Jun 2 17:58 bin drwxrwxrwx 2 mycat mycat 4096 Mar 1 2016 catlet drwxrwxrwx 4 mycat mycat 4096 Jun 2 17:58 conf drwxr-xr-x 2 mycat mycat 4096 Jun 2 17:58 lib drwxrwxrwx 2 mycat mycat 4096 Jan 22 22:01 logs -rwxrwxrwx 1 mycat mycat 219 Jan 22 22:00 version.txt [root@iZqmo9i3j77p7eZ mycat]# cd bin/ [root@iZqmo9i3j77p7eZ bin]# ls dataMigrate.sh init_zk_data.sh mycat rehash.sh startup_nowrap.sh wrapper-linux-ppc-64 wrapper-linux-x86-32 wrapper-linux-x86-64 [root@iZqmo9i3j77p7eZ bin]# cd /usr/local/mycat/conf/ [root@iZqmo9i3j77p7eZ conf]# ls -l total 108 -rwxrwxrwx 1 mycat mycat 88 Jan 22 22:00 autopartition-long.txt -rwxrwxrwx 1 mycat mycat 48 Jan 22 22:00 auto-sharding-long.txt -rwxrwxrwx 1 mycat mycat 62 Jan 22 22:00 auto-sharding-rang-mod.txt -rwxrwxrwx 1 mycat mycat 334 Jan 22 22:00 cacheservice.properties -rwxrwxrwx 1 mycat mycat 3244 Jan 22 22:00 dbseq.sql -rwxrwxrwx 1 mycat mycat 439 Jan 22 22:00 ehcache.xml -rwxrwxrwx 1 mycat mycat 2132 Jan 22 22:00 index_to_charset.properties -rwxrwxrwx 1 mycat mycat 1253 Dec 1 2016 log4j2.xml -rwxrwxrwx 1 mycat mycat 178 Jan 22 22:00 migrateTables.properties -rwxrwxrwx 1 mycat mycat 262 Jan 22 22:00 myid.properties -rwxrwxrwx 1 mycat mycat 15 Jan 22 22:00 partition-hash-int.txt -rwxrwxrwx 1 mycat mycat 102 Jan 22 22:00 partition-range-mod.txt -rwxrwxrwx 1 mycat mycat 4794 Jan 22 22:00 rule.xml -rwxrwxrwx 1 mycat mycat 4219 Jan 22 22:00 schema.xml -rwxrwxrwx 1 mycat mycat 413 Jan 22 22:00 sequence_conf.properties -rwxrwxrwx 1 mycat mycat 75 Jan 22 22:00 sequence_db_conf.properties -rwxrwxrwx 1 mycat mycat 27 Jan 22 22:00 sequence_distributed_conf.properties -rwxrwxrwx 1 mycat mycat 51 Jan 22 22:00 sequence_time_conf.properties -rwxrwxrwx 1 mycat mycat 4623 Jan 22 22:00 server.xml -rwxrwxrwx 1 mycat mycat 16 Jan 22 22:00 sharding-by-enum.txt -rwxrwxrwx 1 mycat mycat 4186 Jan 22 22:05 wrapper.conf drwxrwxrwx 2 mycat mycat 4096 Jun 2 17:58 zkconf drwxrwxrwx 2 mycat mycat 4096 Jun 2 17:58 zkdownload [root@iZqmo9i3j77p7eZ conf]# vim wrapper.conf -rwxrwxrwx 1 mycat mycat 4623 Jan 22 22:00 server.xml -rwxrwxrwx 1 mycat mycat 16 Jan 22 22:00 sharding-by-enum.txt -rwxrwxrwx 1 mycat mycat 4186 Jan 22 22:05 wrapper.conf drwxrwxrwx 2 mycat mycat 4096 Jun 2 17:58 zkconf drwxrwxrwx 2 mycat mycat 4096 Jun 2 17:58 zkdownload [root@iZqmo9i3j77p7eZ bin]# vim /etc/profile [root@iZqmo9i3j77p7eZ bin]# source /etc/profile [root@iZqmo9i3j77p7eZ bin]# mycat Usage: /usr/local/mycat/bin/mycat { console | start | stop | restart | status | dump } [root@iZqmo9i3j77p7eZ bin]# mycat status Mycat-server is not running. [root@iZqmo9i3j77p7eZ bin]# mycat start Starting Mycat-server...