MyCat + MySQL 主从部署流程(下)

背景

上周研究了一下数据库中间件 MyCat ,并验证了 “MyCat 单机 + MySQL 主从复制” 的部署方案,本文接上篇,继续介绍这一方案的部署过程。

MyCat 的原理

MyCat 是一种分布式数据库中间件,跟其他分布式系统的核心思想一样,数据分散存储在不同主机上。核心概念有四个:

  1. 逻辑库:与 MySQL 的物理库作用一样,客户端连接 MyCat 后访问的数据库;
  2. 逻辑表:与 MySQL 的物理表作用一样,客户端连接 MyCat 后访问的表;
  3. 分片节点:DataNode,逻辑表所在的宿主,一个逻辑表可以指定 1-N 个分片节点,一个分片节点关联某个 DataHost 的某个具体的物理库
  4. 节点主机:DataHost,分片节点数据所在的主机,可以配置主从分离。

MyCat 的核心原理是 “拦截器”,对 SQL 预处理和对SQL结果后处理。客户端发来一个 SQL 请求,会被 MyCat 拦截,然后做一些列的特定分析,如分片分析、路由分析、读写分离分析、缓存分析,然后将 SQL 发往后端真实的数据库;并将返回结果做适当的处理,返回给客户端。

整个过程对客户端来说是无感的,由中间件去处理读写分离,客户端代码编写时,无需定义多数据源,视为普通的 MySQL 的操作就好。

引用一个来自《分布式数据库架构及企业实践——基于Mycat中间件》的例子来说明一下各个概念的协作过程,大型电商网站中,订单表数据按所在省份进行切分,使用 MyCat 后的数据切分方案为:
在这里插入图片描述
该图中,orders 表被分为三个分片节点 dn1、dn2、dn3 ,它们分布在两台 MySQL 服务器上,可以按数据库服务器的资源量来设计分片方案,用 1~N 台服务器分片,分片规则选择枚举,它的定义通过 “分片字段+分片函数” 来指定,分片字段是 prov ,分片函数是枚举字符串。

最终,MyCat 部署的重点工作落在了确定分片方案、编写配置文件上面。

MyCat + MySQL 主从的四种部署方案

笔者总结了 MyCat + MySQL 主从部署的四种常见方案:

  1. 读写分离:不分片,dataNode 指向一个 DataNode,DataNode 指向主从集群;
  2. 单独分片:不用读写分离,DataHost 不指定 ReadHost;
  3. 分片+单MySQL主从:DataNode 指向同一个 DataHost 代表的主从集群;
  4. 分片+多MySQL主从:DataNode 指向不同 DataHost 代表的主从集群。

MyCat 的配置有两种方式,zookeeper 和本地 XML 。本文以本地配置为例,配置文件位于 /mycat/conf 目录,主要配置文件有:

  1. schema.xml:逻辑库和表以及对应的数据分片、分片主机的映射关系;
  2. server.xml:MyCat 登录用户认证和授权信息;
  3. rule.xml:逻辑表的分片规则;

根据产品需要,确定部署方案,编写 schema.xml。由于资源有限,笔者选择了第三种方案,MySQL 一主一从+分片,schema.xml 中有大量注释掉的示例配置,我们改成跟自己环境一致的配置就好了。

在这里插入图片描述

准备工作

第一步,准备好 部署介质和脚本
第二步,根据 MyCat 的分片方案和服务器信息编写好 scehma.xml ;
第三步,定义 MyCat 服务访问权限文件 server.xml ,用默认配置就好;
第四步,在要部署 MyCat 的机器上,添加 MySQL 主从服务器 IP 的 host 名称,与 schema.xml 中 DataHost 引用的 host 名称一致:

vi /etc/hosts
hostM1 192.168.8.116
hostS1 192.168.8.117

部署流程

cd /home/mycat,按如下顺序执行脚本:

  1. MyCat 所在的主机上,需要安装 JDK: sh jdk_install.sh
  2. 安装 MySQL 主节点: sh master_install.sh 1
  3. 为主节点创建复制帐号并授权复制权限: sh master_grant.sh HostM1Pwd
  4. 安装 MySQL 从节点: sh slave_install.sh 302
  5. 为从节点设置 Master 信息:sh slave_grant.sh 192.168.8.116 mysql-bin.000002 1123 HostS1Pwd
  6. 安装 MyCat:sh mycat_install.sh
  7. 将准备好的 MyCat 配置文件上传到 /usr/local/Mycat/conf 覆盖默认配置;
  8. 执行 start mycat 命令启动 MyCat。

这些操作,需要在不同的服务器上执行。

启示录

部署过程中如果有问题,可以参考此文。

部署工作应该是归属于运维职业的吧,这些年笔者也没少做,感觉用常规 20% 的技能+搜索引擎,就够应付了。

最考验人的,是耐心呐,拔出萝卜牵出泥,有一个问题,解决一个问题,幸运的是,问题到最后都被解决掉了。

最近发文都是早上 6 点开始写,快 8 点完成发布,虽然没有任何收益,但是网络笔记还是要记的呀,万一以后会用到呢?也说不定谁会因为我爱记网络笔记,被我清晰的脑回路、还算蛮流畅的文笔折服而看上我呢!

资源附录

  1. MyCat官网
  2. 简单 demo: 分片存储大表数据的一种方案
  3. 读写分离配置
  4. 同时分片和读写分离
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值