• 使用 Mycat 中间件搭建 MySQL 高可用实现分库分表及读写分离


    Mycat 是一款基于阿里开源产品Cobar而研发的开源数据库分库分表中间件(基于Java语言开发),可以用来方便地搭建面向企业应用开发的大数据库集群,支持事务、ACID等特性,其核心是基于代理方案实现 MySQL 高可用,是目前比较流行的 MySQL 高可用的方案之一。

    Mycat 官网地址:

    http://www.mycat.io/

    使用 Mycat 配置 MySQL 高可用,实现分库分表、读写分离及主从切换

    架构图:

    实例部署情况:

    db1-M1,IP:192.168.0.103,Port:3306 (主1)
    db1-M2,IP:192.168.0.104,Port:3306 (主2)
    db1-M3,IP:192.168.0.105,Port:3306 (主3)
    db1-S1,IP:192.168.0.106, Port:3306 (从1)

    server.xml

    配置两个帐号,一个拥有全部权限,另一个只有读权限,帐号及密码可以自由定义。

    schema.xml

    分成三个片,其中第一个版配置读写分离,共4个shard。

    提示

    注:若要开启读写分离,dataHost节点中的balance参数设置为1。

    • 1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
    • 2. balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡
    • 3. balance="2",所有读操作都随机的在writeHost、readhost上分发。
    • 4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力

    rule.xml

    主要配置项(本例未改动该配置文件):

    测试

    使用 MySQL 客户端连接 MyCat 数据库,MyCat安装在本机,ip 是192.168.0.102,像正常连接 MySQL 那样,使用 root/123456,192.168.0.102 连接,其中端口号为 8066(可在 server.xml 中配置)。

    如果配置没有问题的话,此处可以正常连接。

    在 M1、M2、M3、S1 这四台数据库服务器上分别创建数据库 db1、db2、db3、db1(M1和S1 同属一个分片,所以库名一致),然后在各自库下创建 user 表(S1 下也需要创建 user 表),表结构如下:

    创建成功后,会发现 Mycat 下也生成了虚拟的 user 表。

    操作 Mycat 的 user 表,插入几条记录:

    查看 M1、M2 和 M3 这三个分片各自 user 表下的数据,发现 id 为 0, 3, 6, 9 的数据落入了分片一,id 为 1, 4, 7 的数据落入了分片二,id 为 2, 5, 8  的数据落入了分片三。因为我们配置的是按 id 取余的算法来分库和分表的,所以可以确认我们配置的分库分表已生效。

    如果配置了主从复制的话,会发现分片一 M1 和 S1 中的 user 表里的数据是一模一样的。关于MySQL 的主从复制,需要单独配置一下,可以参考 MySQL主从复制原理及配置教程 这篇文章。

    接下来,我们该如何确定读写分离是否生效了呢?假设现在主库 M1 和从库 S1 中各有 10 条数据,数据当然是一模一样的,我们手动删除从库 S1 中的 1 条数据,然后通过 Mycat 查询分片一中的数据,会发现查询出来的数据总共有 9 条,这样,就可以确认读写分离生效了。

    结束语

    使用 Mycat 可以轻松实现 MySQL 的分库分表及读写分离,Mycat 因为是单节点的,自身也需要实现高可用,可以通过 keepalived 技术来实现。我们也可以官网或者 Mycat权威指南 来获取更多的配置信息。另外,Mycat 中间件只是用来配置 MySQL 高可用的方案之一,后续会介绍其它的 MySQL 高可用配置方案。

  • 相关阅读:
    判断一个字符串是否为回文串
    读<大道至简>软件工程实践者的思想有感
    Java学习10.23(设置页面的编码方式1)
    Java学习10.25(javaweb在界面输出2)
    【搜索】C000_LG_奶酪(bfs)
    【并查集】B001_AW_自动程序分析(不要求顺序时的离散化)
    b_aw_信息传递 & 银河英雄传说(并查集暴力求环 / 记忆化 | 带权并查集)
    b_pat_团伙头目(并查集/dfs+字符串整形互相映射)
    【堆】C003_AW_接水问题(暴力 / 堆)
    【并查集】C002_AW_樱桃网 & 打击犯罪(最下生成树 / dfs / 并查集求连通块)
  • 原文地址:https://www.cnblogs.com/lkj371/p/12954920.html
Copyright © 2020-2023  润新知