Docker 部署Mycat2

64 篇文章 1 订阅
59 篇文章 0 订阅

推荐使用sharding-jdbc

sharding-jdbc Apache官网
Apache ShardingSphere

简介(Mycat官方文档太凌乱都是坑)

Mycat是一个彻底开源的,面向企业应用开发的大数据库集群。从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

MyCat2

Mycat2 入门_w3cschool

创建镜像

1. 安装资源地址

Index of /2.0/

2. Dockerfile文件

基础镜像openjdk:8-jre版本,其他版本apt-get会报错

FROM openjdk:8-jre

ENV AUTO_RUN_DIR ./mycat2
ENV DEPENDENCE_FILE mycat2-1.22-release-jar-with-dependencies.jar
ENV TEMPLATE_FILE mycat2-install-template-1.21.zip

RUN sed -i "s@http://.*archive.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list
RUN sed -i "s@http://.*security.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list

RUN buildDeps='procps wget unzip' \
&& apt-get update \
&& apt-get install -y $buildDeps

# 安装地址 http://dl.mycat.org.cn/2.0/
# http://dl.mycat.org.cn/2.0/1.22-release/
# http://dl.mycat.org.cn/2.0/install-template/
RUN wget -P $AUTO_RUN_DIR/ http://dl.mycat.org.cn/2.0/1.22-release/$DEPENDENCE_FILE \
&& wget -P $AUTO_RUN_DIR/ http://dl.mycat.org.cn/2.0/install-template/$TEMPLATE_FILE

RUN cd $AUTO_RUN_DIR/ \
&& unzip $TEMPLATE_FILE \
&& ls -al . \
&& mv $DEPENDENCE_FILE mycat/lib/ \
&& chmod +x mycat/bin/* \
&& chmod 755 mycat/lib/* \
&& mv mycat /usr/local

#copy mycat /usr/local/mycat/
VOLUME /usr/local/mycat/conf
VOLUME /usr/local/mycat/logs

EXPOSE 8066 1984
CMD ["/usr/local/mycat/bin/mycat", "console"]

 

3. 编译镜像

docker build -t mycat2:1.22 .

创建容器

1. 复制配置

docker run -d --name=mycat2 -p 8066:8066 -p 1984:1984 mycat2:1.22

# 复制容器内配置
docker cp mycat2:/usr/local/mycat/conf .
docker cp mycat2:/usr/local/mycat/logs .

2. 创建容器

docker run -d --name=mycat2 -p 8066:8066 -p 1984:1984 -v $PWD/conf:/usr/local/mycat/conf -v $PWD/logs:/usr/local/mycat/logs mycat2:1.22

# 以root用户权限进入容器
docker exec -it -u root mycat2 bash
# 查看容器启动日志
docker logs -f mycat2

3. docker-compose方式安装

version: '3'
services:
  mycat-service:
    build:
      context: ./
      dockerfile: Dockerfile
    image: mycat2:1.22
    container_name: mycat2
    restart: always
    network_mode: "host"
    volumes:
      - /u01/mycat2/conf:/usr/local/mycat/conf
      - /u01/mycat2/logs:/usr/local/mycat/logs

Mycat2配置

mycat配置文件夹
  + clusters
     - prototype.cluster.json //无集群的时候自动创建
     - c0.cluster.json
     - c1.cluster.json
  + datasources
     - prototypeDs.datasource.json //无数据源的时候自动创建
     - dr0.datasource.json
     - dw0.datasource.json
  + schemas
     - db1.schema.json
     - mysql.schema.json
  + sequences
     - db1_schema.sequence.json
  - server.json //服务器配置
  - state.json //mycat运行状态,包含集群选举的主节点信息,配置时间戳

1. 数据源配置

prototypeDs.datasource.json 该配置不能删除,可以设置用户、密码、数据库,该配置会在启动Mycat2时创建名为mycat的数据库,库中有mycat所需的数据表

cd /conf/datasources

prototypeDs.datasource.json

{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        // 数据库读写类型:READ、WRITE、READ_WRITE。Mycat 对数据库需要是可读可写的
        "instanceType":"READ_WRITE",
        "maxCon":1000,
        // 定时检查闲置连接,单位:ms
        "maxConnectTimeout":3000,
        // jdbc查询超时时间,单位:ms
        "queryTimeout": 5000,
        "maxRetryCount":5,
        "minCon":1,
        // 数据源名称,这里不要修改
        "name":"prototypeDs",
        // 数据库root密码
        "password":"123456qq",
        "type":"JDBC",
        "url":"jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
        // 数据库用户(要有创建数据的权限)
        "user":"root",
        "weight":0
}

2. 集群配置

cd /conf/clusters/

prototype.cluster.json

{
        // 集群类型:SINGLE_NODE(单节点)、MASTER_SLAVE(普通主从)、GARELA_CLUSTER(garela cluster/PXC集群)等
        "clusterType":"MASTER_SLAVE",
        "heartbeat":{
                "heartbeatTimeout":1000,
                "maxRetry":3,
                "minSwitchTimeInterval":300,
                "slaveThreshold":0
        },
        "masters":[
                // 主节点数据源名称
                "prototypeDs",
                "dr0",
                "dw0"
        ],
        // 只有主节点则从节点可以不配置
        "replicas":[
                // 从节点数据源名称
        ],
        "maxCon":200,
        // 集群名称。在后面配置物理库(schema)时会用到
        "name":"prototype",
        // 查询负载均衡策略
        "readBalanceType":"BALANCE_ALL",
        // NOT_SWITCH(不进行主从切换)、SWITCH(进行主从切换)
        "switchType":"SWITCH"
}

BALANCE_ALL(默认值)
获取集群中所有数据源
BALANCE_ALL_READ
获取集群中允许读的数据源
BALANCE_READ_WRITE
获取集群中允许读写的数据源,但允许读的数据源优先
BALANCE_NONE
获取集群中允许写数据源,即主节点中选择

3. 配置物理库

cd /conf/schemas/
{
    // 物理库
    "schemaName": "test",
    "customTables": {},
    "globalTables": {},
    // 指向集群
    "targetName": "prototype",
    // 这里可以配置数据表相关的信息,在物理表已存在或需要启动时自动创建物理表时配置此项
    "normalTables": {}
}

4. 修改 Mycat 登录用户

cd /conf/users

root.user.json

{
        "dialect":"mysql",
        "ip":null,
        "password":"123456qq",
        "transactionType":"proxy",
        "username":"mycat"
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值