MySQL集群解决方案(二):Mycat分库分表中间件

简介

Mycat 是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的 Mycat 智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变。

目前版本(1.6)推荐架构如下:
在这里插入图片描述
具体特性可以参考官网介绍

需求

基于上篇实现的Mysql主从复制,本文需要使用Mycat实现读写分离用于解决遗留问题,元结构如下:

如果是多个Mycat,可以以此扩展.

实现

Mycat是用java实现的,按说直接java -jar即可,但是由于是server端,并且有明确的配置目录($MYCAT_HOME/conf),考虑到扩展问题,首先将其封装成docker镜像,再根据不同的配置文件映射来启动容器.

制作docker镜像

参考制作Mycat的docker镜像

#!/bin/bash

docker volume create mycat
export MYCAT_CONF_HOME="/var/lib/docker/volumes/mycat/conf"
# 创建映射的配置文件目录,使用01作为ID来区分是哪个mycat实例
mkdir -p $MYCAT_CONF_HOME/01

docker run -d --name mycat01 -v mycat_01_conf:/opt/mycat/conf   

配置

server.xml

        <user name="root" defaultAccount="true">
                <property name="password">123456</property>
                <property name="schemas">TESTDB</property>
                <property name="defaultSchema">TESTDB</property>
                <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->

                <!-- 表级 DML 权限设置 -->
                <!--            
                <privileges check="false">
                        <schema name="TESTDB" dml="0110" >
                                <table name="tb01" dml="0000"></table>
                                <table name="tb02" dml="1111"></table>
                        </schema>
                </privileges>           
                 -->
        </user>

        <user name="user">
                <property name="password">user</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>
                <property name="defaultSchema">TESTDB</property>
        </user>

schema.xml

docker run -d --name percona-master01 -v /etc/localtime:/etc/localtime -v mysql_master_01:/var/lib/mysql -v mysql_cnf_master_01:/etc/my.cnf.d -p 6306:3306 -e MYSQL_ROOT_PASSWORD=master01 percona:5.7.23

rule.xml

  1. mycat官方文档

  2. 你必须知道的Docker数据卷(Volume)

  3. volume_create

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值