栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker自动化部署安装(八)之安装Mycat

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker自动化部署安装(八)之安装Mycat

本片主要讲述使用docker安装mycat,直接上过程,亲测无误!

一、MyCat简介


1. 什么是MyCat

  • MyCat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分库分表。配合数据库的主从模式还可实现读写分离。
  • MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 MyCat 变得非常的强大。
  • MyCat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型NoSQL 方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在 MyCat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。
  • 简单来说MyCat就是实现数据库集群的,对海量数据的数据存储的一种解决方案,因为很多数据库不想Oracle一样自带集群的配置,那么在进行海量数据存储的时候就要使用到MyCat进行数据库的管理了。

  MyCat 官网: http://www.mycat.io/

2.Mycat的结构

二、MyCat安装及配置介绍

 1.安装JDK,因为MyCat是java开发的,所以需要java虚拟机环境,在Linux节点中安装JDK是必须的。

由于本文章基于Docker安装的,所以不需要在本机上装,可参考安装Docker Docker自动化部署安装(一)之安装Nginx

2.安装一个Mysql,可参考前面的文章 

Docker自动化部署安装(四)之安装Mysql

3.安装Mycat

1.创建文件夹
mkdir -p /work/docker/build/mycat
mkdir -p /work/docker/conf/mycat
 
 
2.新建Dockerfile文件
echo '
#FROM openjdk:8-jdk-stretch
FROM centos:7.7.1908
MAINTAINER zxk 

RUN yum install -y net-tools

ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

WORKDIR ${JAVA_HOME}

#这里的jdk下载地址要换成自己的哦,或者放在自己的服务器下然后替换地址如(http://136.223.11.12:8080/tools/jdk-8u251-linux-x64.tar.gz) 
#附带一个百度放盘下载地址(链接:https://pan.baidu.com/s/1Bim4DHo-CaQm4Qfa1BGOjA 
提取码:x4zp 
复制这段内容后打开百度网盘手机App,操作更方便哦)
RUN set -x 
    && curl -Os "http://ip:port/tools/jdk-8u251-linux-x64.tar.gz" 
    && tar -xzvf jdk-8u251-linux-x64.tar.gz 
    && mv jdk1.8.0_251/* . 
    && rm -fr jdk1.8.0_251 jdk-8u251-linux-x64.tar.gz

ADD http://dl.mycat.org.cn/1.6.7.6/20201126013625/Mycat-server-1.6.7.6-release-20201126013625-linux.tar.gz /usr/local
RUN cd /usr/local && tar -zxvf Mycat-server-1.6.7.6-release-20201126013625-linux.tar.gz && ls -lna

ENV MYCAT_HOME=/usr/local/mycat
WORKDIR /usr/local/mycat

ENV TZ Asia/Shanghai

EXPOSE 8066 9066

CMD ["/usr/local/mycat/bin/mycat", "console","&"]
' > /work/docker/build/nginx/Dockerfile
 
3.在/work/docker/conf/mycat下准备Mycat的配置文件(文章末尾会介绍这些文件)
server.xml	MyCat 的配置文件,设置账号、参数等
schema.xml	MyCat 对应的物理数据库和数据库表的配置
rule.xml	MyCat 分片(分库分表)规则
wrapper.conf 目前Mycat的启动是经过warapper封装成启动脚本,所以日志也会有其相关的日志文件:${MYCAT_HOME}/logs/warapper.log,在启动时候如果系统环境配置错误或缺少配置时,导致Mycat无法启动,可以通过查看warrpper.log查看具体错误原因

4.新建docker-mycat.yml文件
echo '
version: '3'
services:
  mycat:
    build:
      context: ./build/mycat
      dockerfile: Dockerfile
    restart: always
    privileged: true
    image: mycat:1.6.7.6
    container_name: mycat
    hostname: mycat
    ports:
     - '8066:8066'
     - '9066:9066'
    volumes:
     - /etc/localtime:/etc/localtime
     - /work/docker/conf/mycat/schema.xml:/usr/local/mycat/conf/schema.xml
     - /work/docker/conf/mycat/rule.xml:/usr/local/mycat/conf/rule.xml
     - /work/docker/conf/mycat/server.xml:/usr/local/mycat/conf/server.xml
     #当服务器内存过大时需要此配置文件
     #- /work/docker/conf/mycat/wrapper.conf:/usr/local/mycat/conf/wrapper.conf
     - /work/docker/logs/mycat:/usr/local/mycat/logs
     #- /temp:/temp
' > /work/docker/docker-mycat.yml
 
 
5.启动mycat服务
docker-compose -f /work/docker/docker-mycat.yml up -d

4.检查Mycat

 三、Mycat相关相关配置文件介绍

 1.server.xml

server.xml是用来配置账号,参数及相关操作权限的文件,下面是给文件的简要内容,去掉了相关的注释





        
        0 
        0
        1
    1
        0  
        0  
        300  
                1
        
        
        (?:(s*nexts+values+fors*MYCATSEQ_(w+))(,|)|s)*)+
        false 
        io.mycat.route.sequence.handler.HttpIncrSequenceHandler
       
         
        
        
        
                0
                
                
                
                
                
                
                
                
                0

                        
                0

                
        64k

                
                1k

                0

                
                384m


                
                false

                
                

                
                
                
                false
                
                0
        

        
        
        
        
        
        
        
        

        
                Root@2021
				 
                demo
				demo
                
				
				
                
                
        


2.schema.xml

  schema.xml 是最主要的配置文件,首先看默认的配置文件





	
	
		
		
select user()

3.rule.xml

分片(分库分表)规则





        
                
                        id
                        func1
                
        

        
                
                        createTime
                        partbyday
                
        

        
                
                        user_id
                        func1
                
        

        
                
                        sharding_id
                        hash-int
                
        
        
                
                        id
                        rang-long
                
        
        
                
                        id
                        mod-long
                
        
        
                
                        id
                        murmur
                
        
        
                
                        id
                        crc32slot
                
        
        
                
                        create_time
                        partbymonth
                
        
        
                
                        calldate
                        latestMonth
                
        

        
                
                        id
                        rang-mod
                
        

        
                
                        id
                        jump-consistent-hash
                
        

        
                0
                2
                160
                
                
        

        
                2
        
        
                partition-hash-int.txt
        
        
                autopartition-long.txt
        
        
                
                3
        

        
                8
                128
        
        
                24
        
        
                yyyy-MM-dd
                2022-01-01
        


        
                yyyy-MM-dd
                0
                2014-01-01
                2014-01-31
                10
        

        
                partition-range-mod.txt
        

        
                3
        

4.wrapper.conf

Mycat的启动是经过warapper封装成启动脚本,在服务器确实一些配置的时候可以通过wrapper.conf改变mycat的启动参数,保证mycat正常运行

#********************************************************************
# Wrapper Properties
#********************************************************************
# Java Application
wrapper.java.command=java
wrapper.working.dir=..

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
set.default.REPO_DIR=lib
set.APP_BASE=.

# Java Classpath (include wrapper.jar)  Add class path elements as
#  needed starting from 1
wrapper.java.classpath.1=lib/wrapper.jar
wrapper.java.classpath.2=conf
wrapper.java.classpath.3=%REPO_DIR%/*

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=lib

# Java Additional Parameters
#wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:+AggressiveOpts
wrapper.java.additional.4=-XX:MaxDirectMemorySize=4G
wrapper.java.additional.5=-Dcom.sun.management.jmxremote
wrapper.java.additional.6=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.9=-Xmx4G
wrapper.java.additional.10=-Xms1G

# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3

# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=64

# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=io.mycat.MycatStartup
wrapper.app.parameter.2=start

#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Format of output for the console.  (See docs for formats)
wrapper.console.format=PM

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for wrapper output logging.
wrapper.logfile=logs/wrapper.log

# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=512m

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=30

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE

#********************************************************************
# Wrapper Windows Properties
#********************************************************************
# Title to use when running as a console
wrapper.console.title=Mycat-server

#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.

# Name of the service
wrapper.ntservice.name=mycat

# Display name of the service
wrapper.ntservice.displayname=Mycat-server

# Description of the service
wrapper.ntservice.description=The project of Mycat-server

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.  AUTO_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false

wrapper.ping.timeout=120
configuration.directory.in.classpath.first=conf


至此Mycat的安装和配置介绍完毕!

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号